{"version":3,"file":"mermaid.min.js","mappings":"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AG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GA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AAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,I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AG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GA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","sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/requirement/parser/requirementDiagram.jison","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./node_modules/@braintree/sanitize-url/dist/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./node_modules/d3/node_modules/d3-array/src/max.js","webpack://mermaid/./node_modules/d3/node_modules/d3-array/src/min.js","webpack://mermaid/./node_modules/d3-axis/src/identity.js","webpack://mermaid/./node_modules/d3-axis/src/axis.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/array.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/selectChild.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/selectChildren.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/iterator.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/easeVarying.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-brush/src/brush.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/math.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/lab.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/hcl.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/ticks.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/ascending.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/bisector.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/bisect.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/number.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/array.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/date.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/object.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/value.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/round.js","webpack://mermaid/./node_modules/d3-scale/src/number.js","webpack://mermaid/./node_modules/d3-scale/src/continuous.js","webpack://mermaid/./node_modules/d3-scale/src/constant.js","webpack://mermaid/./node_modules/d3-scale/src/init.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatDecimal.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/exponent.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatRounded.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatTypes.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/identity.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/locale.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-scale/src/linear.js","webpack://mermaid/./node_modules/d3-scale/src/tickFormat.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/precisionRound.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/precisionFixed.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatGroup.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatNumerals.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatTrim.js","webpack://mermaid/./node_modules/internmap/src/index.js","webpack://mermaid/./node_modules/d3-scale/src/ordinal.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/millisecond.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/second.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/minute.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/hour.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/month.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcMinute.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcHour.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcMonth.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/ticks.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-scale/src/time.js","webpack://mermaid/./node_modules/d3-scale/src/nice.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/array.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/selectChild.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/selectChildren.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/iterator.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/select.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selectAll.js","webpack://mermaid/./node_modules/d3-shape/node_modules/d3-path/src/path.js","webpack://mermaid/./node_modules/d3-shape/src/constant.js","webpack://mermaid/./node_modules/d3-shape/src/math.js","webpack://mermaid/./node_modules/d3-shape/src/arc.js","webpack://mermaid/./node_modules/d3-shape/src/array.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linear.js","webpack://mermaid/./node_modules/d3-shape/src/point.js","webpack://mermaid/./node_modules/d3-shape/src/line.js","webpack://mermaid/./node_modules/d3-shape/src/descending.js","webpack://mermaid/./node_modules/d3-shape/src/identity.js","webpack://mermaid/./node_modules/d3-shape/src/noop.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basis.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid/./node_modules/d3-shape/src/curve/natural.js","webpack://mermaid/./node_modules/d3-shape/src/curve/step.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3/node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3/node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3/node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/easeVarying.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3/node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/array.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectChild.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectChildren.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/iterator.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/easeVarying.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-zoom/src/transform.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/stylis/src/Enum.js","webpack://mermaid/./node_modules/stylis/src/Utility.js","webpack://mermaid/./node_modules/stylis/src/Serializer.js","webpack://mermaid/./node_modules/stylis/src/Tokenizer.js","webpack://mermaid/./node_modules/stylis/src/Parser.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./node_modules/khroma/dist/utils/channel.js","webpack://mermaid/./node_modules/khroma/dist/utils/lang.js","webpack://mermaid/./node_modules/khroma/dist/utils/unit.js","webpack://mermaid/./node_modules/khroma/dist/utils/index.js","webpack://mermaid/./node_modules/khroma/dist/constants.js","webpack://mermaid/./node_modules/khroma/dist/channels/reusable.js","webpack://mermaid/./node_modules/khroma/dist/channels/index.js","webpack://mermaid/./node_modules/khroma/dist/channels/type.js","webpack://mermaid/./node_modules/khroma/dist/color/hex.js","webpack://mermaid/./node_modules/khroma/dist/color/hsl.js","webpack://mermaid/./node_modules/khroma/dist/color/keyword.js","webpack://mermaid/./node_modules/khroma/dist/color/rgb.js","webpack://mermaid/./node_modules/khroma/dist/color/index.js","webpack://mermaid/./node_modules/khroma/dist/methods/change.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust.js","webpack://mermaid/./node_modules/khroma/dist/methods/rgba.js","webpack://mermaid/./node_modules/khroma/dist/methods/invert.js","webpack://mermaid/./node_modules/khroma/dist/methods/mix.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust_channel.js","webpack://mermaid/./node_modules/khroma/dist/methods/darken.js","webpack://mermaid/./node_modules/khroma/dist/methods/lighten.js","webpack://mermaid/./src/themes/theme-helpers.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/defaultConfig.js","webpack://mermaid/./src/utils.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/commonDb.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/accessibility.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./node_modules/d3-shape/src/pie.js","webpack://mermaid/./src/diagrams/requirement/requirementDb.js","webpack://mermaid/./src/diagrams/requirement/requirementMarkers.js","webpack://mermaid/./src/diagrams/requirement/requirementRenderer.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/interactionDb.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/requirement/styles.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./node_modules/dagre-d3/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/arrows.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-paths.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/d3.js","webpack://mermaid/./node_modules/dagre-d3/lib/dagre.js","webpack://mermaid/./node_modules/dagre-d3/lib/graphlib.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-circle.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-line.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-node.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-polygon.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-rect.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-html-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-svg-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-text-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/lodash.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/render.js","webpack://mermaid/./node_modules/dagre-d3/lib/shapes.js","webpack://mermaid/./node_modules/dagre-d3/lib/util.js","webpack://mermaid/./node_modules/dagre-d3/lib/version.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3/dist/package.js","webpack://mermaid/./node_modules/d3-array/src/ascending.js","webpack://mermaid/./node_modules/d3-array/src/bisector.js","webpack://mermaid/./node_modules/d3-array/src/bisect.js","webpack://mermaid/./node_modules/d3-array/src/pairs.js","webpack://mermaid/./node_modules/d3-array/src/cross.js","webpack://mermaid/./node_modules/d3-array/src/descending.js","webpack://mermaid/./node_modules/d3-array/src/number.js","webpack://mermaid/./node_modules/d3-array/src/variance.js","webpack://mermaid/./node_modules/d3-array/src/deviation.js","webpack://mermaid/./node_modules/d3-array/src/extent.js","webpack://mermaid/./node_modules/d3-array/src/array.js","webpack://mermaid/./node_modules/d3-array/src/constant.js","webpack://mermaid/./node_modules/d3-array/src/identity.js","webpack://mermaid/./node_modules/d3-array/src/range.js","webpack://mermaid/./node_modules/d3-array/src/ticks.js","webpack://mermaid/./node_modules/d3-array/src/threshold/sturges.js","webpack://mermaid/./node_modules/d3-array/src/histogram.js","webpack://mermaid/./node_modules/d3-array/src/quantile.js","webpack://mermaid/./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack://mermaid/./node_modules/d3-array/src/threshold/scott.js","webpack://mermaid/./node_modules/d3-array/src/max.js","webpack://mermaid/./node_modules/d3-array/src/mean.js","webpack://mermaid/./node_modules/d3-array/src/median.js","webpack://mermaid/./node_modules/d3-array/src/merge.js","webpack://mermaid/./node_modules/d3-array/src/min.js","webpack://mermaid/./node_modules/d3-array/src/permute.js","webpack://mermaid/./node_modules/d3-array/src/scan.js","webpack://mermaid/./node_modules/d3-array/src/shuffle.js","webpack://mermaid/./node_modules/d3-array/src/sum.js","webpack://mermaid/./node_modules/d3-array/src/transpose.js","webpack://mermaid/./node_modules/d3-array/src/zip.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-axis/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-axis/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-axis/src/axis.js","webpack://mermaid/./node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-selection/src/select.js","webpack://mermaid/./node_modules/d3-drag/src/noevent.js","webpack://mermaid/./node_modules/d3-drag/src/nodrag.js","webpack://mermaid/./node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid/./node_modules/d3-interpolate/src/array.js","webpack://mermaid/./node_modules/d3-interpolate/src/date.js","webpack://mermaid/./node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-interpolate/src/object.js","webpack://mermaid/./node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-interpolate/src/value.js","webpack://mermaid/./node_modules/d3-selection/src/sourceEvent.js","webpack://mermaid/./node_modules/d3-selection/src/point.js","webpack://mermaid/./node_modules/d3-selection/src/touch.js","webpack://mermaid/./node_modules/d3-selection/src/mouse.js","webpack://mermaid/./node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-transition/src/active.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/event.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/noevent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/brush.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/math.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/chord.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/constant.js","webpack://mermaid/./node_modules/d3-path/src/path.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/ribbon.js","webpack://mermaid/./node_modules/d3-collection/src/map.js","webpack://mermaid/./node_modules/d3-collection/src/nest.js","webpack://mermaid/./node_modules/d3-collection/src/set.js","webpack://mermaid/./node_modules/d3-collection/src/keys.js","webpack://mermaid/./node_modules/d3-collection/src/values.js","webpack://mermaid/./node_modules/d3-collection/src/entries.js","webpack://mermaid/./node_modules/d3-color/src/math.js","webpack://mermaid/./node_modules/d3-color/src/lab.js","webpack://mermaid/./node_modules/d3-color/src/cubehelix.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/ascending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/contains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/noop.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/contours.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/blur.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/density.js","webpack://mermaid/./node_modules/d3-drag/src/constant.js","webpack://mermaid/./node_modules/d3-drag/src/event.js","webpack://mermaid/./node_modules/d3-drag/src/drag.js","webpack://mermaid/./node_modules/d3-dsv/src/dsv.js","webpack://mermaid/./node_modules/d3-dsv/src/csv.js","webpack://mermaid/./node_modules/d3-dsv/src/tsv.js","webpack://mermaid/./node_modules/d3-dsv/src/autoType.js","webpack://mermaid/./node_modules/d3-ease/src/linear.js","webpack://mermaid/./node_modules/d3-ease/src/quad.js","webpack://mermaid/./node_modules/d3-ease/src/poly.js","webpack://mermaid/./node_modules/d3-ease/src/sin.js","webpack://mermaid/./node_modules/d3-ease/src/math.js","webpack://mermaid/./node_modules/d3-ease/src/exp.js","webpack://mermaid/./node_modules/d3-ease/src/circle.js","webpack://mermaid/./node_modules/d3-ease/src/bounce.js","webpack://mermaid/./node_modules/d3-ease/src/back.js","webpack://mermaid/./node_modules/d3-ease/src/elastic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/blob.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/buffer.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/text.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/dsv.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/image.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/json.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/xml.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/center.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/jiggle.js","webpack://mermaid/./node_modules/d3-quadtree/src/add.js","webpack://mermaid/./node_modules/d3-quadtree/src/quad.js","webpack://mermaid/./node_modules/d3-quadtree/src/x.js","webpack://mermaid/./node_modules/d3-quadtree/src/y.js","webpack://mermaid/./node_modules/d3-quadtree/src/quadtree.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/collide.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/link.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/simulation.js","webpack://mermaid/./node_modules/d3-quadtree/src/cover.js","webpack://mermaid/./node_modules/d3-quadtree/src/data.js","webpack://mermaid/./node_modules/d3-quadtree/src/extent.js","webpack://mermaid/./node_modules/d3-quadtree/src/find.js","webpack://mermaid/./node_modules/d3-quadtree/src/remove.js","webpack://mermaid/./node_modules/d3-quadtree/src/root.js","webpack://mermaid/./node_modules/d3-quadtree/src/size.js","webpack://mermaid/./node_modules/d3-quadtree/src/visit.js","webpack://mermaid/./node_modules/d3-quadtree/src/visitAfter.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/manyBody.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/radial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/x.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/y.js","webpack://mermaid/./node_modules/d3-format/src/formatDecimal.js","webpack://mermaid/./node_modules/d3-format/src/exponent.js","webpack://mermaid/./node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid/./node_modules/d3-format/src/formatRounded.js","webpack://mermaid/./node_modules/d3-format/src/formatTypes.js","webpack://mermaid/./node_modules/d3-format/src/identity.js","webpack://mermaid/./node_modules/d3-format/src/locale.js","webpack://mermaid/./node_modules/d3-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-format/src/formatGroup.js","webpack://mermaid/./node_modules/d3-format/src/formatNumerals.js","webpack://mermaid/./node_modules/d3-format/src/formatTrim.js","webpack://mermaid/./node_modules/d3-format/src/precisionFixed.js","webpack://mermaid/./node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid/./node_modules/d3-format/src/precisionRound.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/adder.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/math.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/noop.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/stream.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/cartesian.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/bounds.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/centroid.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/compose.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/rotation.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/circle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/buffer.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/pointEqual.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/rejoin.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/polygonContains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/antimeridian.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/circle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/rectangle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/line.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/extent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/length.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/distance.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/contains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/graticule.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/interpolate.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/bounds.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/centroid.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/context.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/measure.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/string.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/transform.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/fit.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/resample.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/albers.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/albersUsa.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/azimuthal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/mercator.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conicConformal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/equirectangular.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/equalEarth.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/gnomonic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/orthographic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/stereographic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/transverseMercator.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/cluster.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/pack/enclose.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/pack/siblings.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/accessors.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/pack/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/round.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/dice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/partition.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/stratify.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/tree.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/slice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/binary.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://mermaid/./node_modules/d3-interpolate/src/discrete.js","webpack://mermaid/./node_modules/d3-interpolate/src/hue.js","webpack://mermaid/./node_modules/d3-interpolate/src/round.js","webpack://mermaid/./node_modules/d3-interpolate/src/zoom.js","webpack://mermaid/./node_modules/d3-interpolate/src/hsl.js","webpack://mermaid/./node_modules/d3-interpolate/src/lab.js","webpack://mermaid/./node_modules/d3-interpolate/src/hcl.js","webpack://mermaid/./node_modules/d3-interpolate/src/cubehelix.js","webpack://mermaid/./node_modules/d3-interpolate/src/piecewise.js","webpack://mermaid/./node_modules/d3-interpolate/src/quantize.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/centroid.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/cross.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/hull.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/contains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/length.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/defaultSource.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/uniform.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/normal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/logNormal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/irwinHall.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/bates.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/exponential.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/init.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/ordinal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/band.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/number.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/continuous.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/tickFormat.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/linear.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/nice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/log.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/symlog.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/pow.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/quantile.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/quantize.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/threshold.js","webpack://mermaid/./node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3-time/src/month.js","webpack://mermaid/./node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3-time/src/hour.js","webpack://mermaid/./node_modules/d3-time/src/minute.js","webpack://mermaid/./node_modules/d3-time/src/second.js","webpack://mermaid/./node_modules/d3-time/src/millisecond.js","webpack://mermaid/./node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/time.js","webpack://mermaid/./node_modules/d3-time/src/utcMonth.js","webpack://mermaid/./node_modules/d3-time/src/utcHour.js","webpack://mermaid/./node_modules/d3-time/src/utcMinute.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/utcTime.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/sequential.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/sequentialQuantile.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/diverging.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/colors.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/ramp.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://mermaid/./node_modules/d3-selection/src/create.js","webpack://mermaid/./node_modules/d3-selection/src/local.js","webpack://mermaid/./node_modules/d3-selection/src/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/touches.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/math.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/arc.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/linear.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/point.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/line.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/descending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/pie.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/radial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/lineRadial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/areaRadial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/pointRadial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/link/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/circle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/cross.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/diamond.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/star.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/square.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/triangle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/wye.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/noop.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/basis.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/bundle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/cardinal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/catmullRom.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/natural.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/step.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/none.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/none.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/stack.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/expand.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/diverging.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/silhouette.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/wiggle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/appearance.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/ascending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/descending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/insideOut.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/reverse.js","webpack://mermaid/./node_modules/d3-time-format/src/isoFormat.js","webpack://mermaid/./node_modules/d3-time-format/src/isoParse.js","webpack://mermaid/./node_modules/d3-timer/src/interval.js","webpack://mermaid/./node_modules/d3-voronoi/src/constant.js","webpack://mermaid/./node_modules/d3-voronoi/src/point.js","webpack://mermaid/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://mermaid/./node_modules/d3-voronoi/src/Edge.js","webpack://mermaid/./node_modules/d3-voronoi/src/Cell.js","webpack://mermaid/./node_modules/d3-voronoi/src/Circle.js","webpack://mermaid/./node_modules/d3-voronoi/src/Beach.js","webpack://mermaid/./node_modules/d3-voronoi/src/Diagram.js","webpack://mermaid/./node_modules/d3-voronoi/src/voronoi.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/event.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/transform.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/noevent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/zoom.js","webpack://mermaid/./node_modules/dagre/index.js","webpack://mermaid/./node_modules/dagre/lib/acyclic.js","webpack://mermaid/./node_modules/dagre/lib/add-border-segments.js","webpack://mermaid/./node_modules/dagre/lib/coordinate-system.js","webpack://mermaid/./node_modules/dagre/lib/data/list.js","webpack://mermaid/./node_modules/dagre/lib/debug.js","webpack://mermaid/./node_modules/dagre/lib/graphlib.js","webpack://mermaid/./node_modules/dagre/lib/greedy-fas.js","webpack://mermaid/./node_modules/dagre/lib/layout.js","webpack://mermaid/./node_modules/dagre/lib/lodash.js","webpack://mermaid/./node_modules/dagre/lib/nesting-graph.js","webpack://mermaid/./node_modules/dagre/lib/normalize.js","webpack://mermaid/./node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://mermaid/./node_modules/dagre/lib/order/barycenter.js","webpack://mermaid/./node_modules/dagre/lib/order/build-layer-graph.js","webpack://mermaid/./node_modules/dagre/lib/order/cross-count.js","webpack://mermaid/./node_modules/dagre/lib/order/index.js","webpack://mermaid/./node_modules/dagre/lib/order/init-order.js","webpack://mermaid/./node_modules/dagre/lib/order/resolve-conflicts.js","webpack://mermaid/./node_modules/dagre/lib/order/sort-subgraph.js","webpack://mermaid/./node_modules/dagre/lib/order/sort.js","webpack://mermaid/./node_modules/dagre/lib/parent-dummy-chains.js","webpack://mermaid/./node_modules/dagre/lib/position/bk.js","webpack://mermaid/./node_modules/dagre/lib/position/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/feasible-tree.js","webpack://mermaid/./node_modules/dagre/lib/rank/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/network-simplex.js","webpack://mermaid/./node_modules/dagre/lib/rank/util.js","webpack://mermaid/./node_modules/dagre/lib/util.js","webpack://mermaid/./node_modules/dagre/lib/version.js","webpack://mermaid/./node_modules/dompurify/dist/purify.js","webpack://mermaid/./node_modules/graphlib/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/components.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dfs.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra-all.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra.js","webpack://mermaid/./node_modules/graphlib/lib/alg/find-cycles.js","webpack://mermaid/./node_modules/graphlib/lib/alg/floyd-warshall.js","webpack://mermaid/./node_modules/graphlib/lib/alg/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/is-acyclic.js","webpack://mermaid/./node_modules/graphlib/lib/alg/postorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/preorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/prim.js","webpack://mermaid/./node_modules/graphlib/lib/alg/tarjan.js","webpack://mermaid/./node_modules/graphlib/lib/alg/topsort.js","webpack://mermaid/./node_modules/graphlib/lib/data/priority-queue.js","webpack://mermaid/./node_modules/graphlib/lib/graph.js","webpack://mermaid/./node_modules/graphlib/lib/index.js","webpack://mermaid/./node_modules/graphlib/lib/json.js","webpack://mermaid/./node_modules/graphlib/lib/lodash.js","webpack://mermaid/./node_modules/graphlib/lib/version.js","webpack://mermaid/./node_modules/lodash/_DataView.js","webpack://mermaid/./node_modules/lodash/_Hash.js","webpack://mermaid/./node_modules/lodash/_ListCache.js","webpack://mermaid/./node_modules/lodash/_Map.js","webpack://mermaid/./node_modules/lodash/_MapCache.js","webpack://mermaid/./node_modules/lodash/_Promise.js","webpack://mermaid/./node_modules/lodash/_Set.js","webpack://mermaid/./node_modules/lodash/_SetCache.js","webpack://mermaid/./node_modules/lodash/_Stack.js","webpack://mermaid/./node_modules/lodash/_Symbol.js","webpack://mermaid/./node_modules/lodash/_Uint8Array.js","webpack://mermaid/./node_modules/lodash/_WeakMap.js","webpack://mermaid/./node_modules/lodash/_apply.js","webpack://mermaid/./node_modules/lodash/_arrayEach.js","webpack://mermaid/./node_modules/lodash/_arrayFilter.js","webpack://mermaid/./node_modules/lodash/_arrayIncludes.js","webpack://mermaid/./node_modules/lodash/_arrayIncludesWith.js","webpack://mermaid/./node_modules/lodash/_arrayLikeKeys.js","webpack://mermaid/./node_modules/lodash/_arrayMap.js","webpack://mermaid/./node_modules/lodash/_arrayPush.js","webpack://mermaid/./node_modules/lodash/_arrayReduce.js","webpack://mermaid/./node_modules/lodash/_arraySome.js","webpack://mermaid/./node_modules/lodash/_asciiSize.js","webpack://mermaid/./node_modules/lodash/_assignMergeValue.js","webpack://mermaid/./node_modules/lodash/_assignValue.js","webpack://mermaid/./node_modules/lodash/_assocIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseAssign.js","webpack://mermaid/./node_modules/lodash/_baseAssignIn.js","webpack://mermaid/./node_modules/lodash/_baseAssignValue.js","webpack://mermaid/./node_modules/lodash/_baseClone.js","webpack://mermaid/./node_modules/lodash/_baseCreate.js","webpack://mermaid/./node_modules/lodash/_baseEach.js","webpack://mermaid/./node_modules/lodash/_baseExtremum.js","webpack://mermaid/./node_modules/lodash/_baseFilter.js","webpack://mermaid/./node_modules/lodash/_baseFindIndex.js","webpack://mermaid/./node_modules/lodash/_baseFlatten.js","webpack://mermaid/./node_modules/lodash/_baseFor.js","webpack://mermaid/./node_modules/lodash/_baseForOwn.js","webpack://mermaid/./node_modules/lodash/_baseGet.js","webpack://mermaid/./node_modules/lodash/_baseGetAllKeys.js","webpack://mermaid/./node_modules/lodash/_baseGetTag.js","webpack://mermaid/./node_modules/lodash/_baseGt.js","webpack://mermaid/./node_modules/lodash/_baseHas.js","webpack://mermaid/./node_modules/lodash/_baseHasIn.js","webpack://mermaid/./node_modules/lodash/_baseIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseIsArguments.js","webpack://mermaid/./node_modules/lodash/_baseIsEqual.js","webpack://mermaid/./node_modules/lodash/_baseIsEqualDeep.js","webpack://mermaid/./node_modules/lodash/_baseIsMap.js","webpack://mermaid/./node_modules/lodash/_baseIsMatch.js","webpack://mermaid/./node_modules/lodash/_baseIsNaN.js","webpack://mermaid/./node_modules/lodash/_baseIsNative.js","webpack://mermaid/./node_modules/lodash/_baseIsSet.js","webpack://mermaid/./node_modules/lodash/_baseIsTypedArray.js","webpack://mermaid/./node_modules/lodash/_baseIteratee.js","webpack://mermaid/./node_modules/lodash/_baseKeys.js","webpack://mermaid/./node_modules/lodash/_baseKeysIn.js","webpack://mermaid/./node_modules/lodash/_baseLt.js","webpack://mermaid/./node_modules/lodash/_baseMap.js","webpack://mermaid/./node_modules/lodash/_baseMatches.js","webpack://mermaid/./node_modules/lodash/_baseMatchesProperty.js","webpack://mermaid/./node_modules/lodash/_baseMerge.js","webpack://mermaid/./node_modules/lodash/_baseMergeDeep.js","webpack://mermaid/./node_modules/lodash/_baseOrderBy.js","webpack://mermaid/./node_modules/lodash/_basePick.js","webpack://mermaid/./node_modules/lodash/_basePickBy.js","webpack://mermaid/./node_modules/lodash/_baseProperty.js","webpack://mermaid/./node_modules/lodash/_basePropertyDeep.js","webpack://mermaid/./node_modules/lodash/_baseRange.js","webpack://mermaid/./node_modules/lodash/_baseReduce.js","webpack://mermaid/./node_modules/lodash/_baseRest.js","webpack://mermaid/./node_modules/lodash/_baseSet.js","webpack://mermaid/./node_modules/lodash/_baseSetToString.js","webpack://mermaid/./node_modules/lodash/_baseSortBy.js","webpack://mermaid/./node_modules/lodash/_baseTimes.js","webpack://mermaid/./node_modules/lodash/_baseToString.js","webpack://mermaid/./node_modules/lodash/_baseTrim.js","webpack://mermaid/./node_modules/lodash/_baseUnary.js","webpack://mermaid/./node_modules/lodash/_baseUniq.js","webpack://mermaid/./node_modules/lodash/_baseValues.js","webpack://mermaid/./node_modules/lodash/_baseZipObject.js","webpack://mermaid/./node_modules/lodash/_cacheHas.js","webpack://mermaid/./node_modules/lodash/_castFunction.js","webpack://mermaid/./node_modules/lodash/_castPath.js","webpack://mermaid/./node_modules/lodash/_cloneArrayBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneDataView.js","webpack://mermaid/./node_modules/lodash/_cloneRegExp.js","webpack://mermaid/./node_modules/lodash/_cloneSymbol.js","webpack://mermaid/./node_modules/lodash/_cloneTypedArray.js","webpack://mermaid/./node_modules/lodash/_compareAscending.js","webpack://mermaid/./node_modules/lodash/_compareMultiple.js","webpack://mermaid/./node_modules/lodash/_copyArray.js","webpack://mermaid/./node_modules/lodash/_copyObject.js","webpack://mermaid/./node_modules/lodash/_copySymbols.js","webpack://mermaid/./node_modules/lodash/_copySymbolsIn.js","webpack://mermaid/./node_modules/lodash/_coreJsData.js","webpack://mermaid/./node_modules/lodash/_createAssigner.js","webpack://mermaid/./node_modules/lodash/_createBaseEach.js","webpack://mermaid/./node_modules/lodash/_createBaseFor.js","webpack://mermaid/./node_modules/lodash/_createFind.js","webpack://mermaid/./node_modules/lodash/_createRange.js","webpack://mermaid/./node_modules/lodash/_createSet.js","webpack://mermaid/./node_modules/lodash/_defineProperty.js","webpack://mermaid/./node_modules/lodash/_equalArrays.js","webpack://mermaid/./node_modules/lodash/_equalByTag.js","webpack://mermaid/./node_modules/lodash/_equalObjects.js","webpack://mermaid/./node_modules/lodash/_flatRest.js","webpack://mermaid/./node_modules/lodash/_freeGlobal.js","webpack://mermaid/./node_modules/lodash/_getAllKeys.js","webpack://mermaid/./node_modules/lodash/_getAllKeysIn.js","webpack://mermaid/./node_modules/lodash/_getMapData.js","webpack://mermaid/./node_modules/lodash/_getMatchData.js","webpack://mermaid/./node_modules/lodash/_getNative.js","webpack://mermaid/./node_modules/lodash/_getPrototype.js","webpack://mermaid/./node_modules/lodash/_getRawTag.js","webpack://mermaid/./node_modules/lodash/_getSymbols.js","webpack://mermaid/./node_modules/lodash/_getSymbolsIn.js","webpack://mermaid/./node_modules/lodash/_getTag.js","webpack://mermaid/./node_modules/lodash/_getValue.js","webpack://mermaid/./node_modules/lodash/_hasPath.js","webpack://mermaid/./node_modules/lodash/_hasUnicode.js","webpack://mermaid/./node_modules/lodash/_hashClear.js","webpack://mermaid/./node_modules/lodash/_hashDelete.js","webpack://mermaid/./node_modules/lodash/_hashGet.js","webpack://mermaid/./node_modules/lodash/_hashHas.js","webpack://mermaid/./node_modules/lodash/_hashSet.js","webpack://mermaid/./node_modules/lodash/_initCloneArray.js","webpack://mermaid/./node_modules/lodash/_initCloneByTag.js","webpack://mermaid/./node_modules/lodash/_initCloneObject.js","webpack://mermaid/./node_modules/lodash/_isFlattenable.js","webpack://mermaid/./node_modules/lodash/_isIndex.js","webpack://mermaid/./node_modules/lodash/_isIterateeCall.js","webpack://mermaid/./node_modules/lodash/_isKey.js","webpack://mermaid/./node_modules/lodash/_isKeyable.js","webpack://mermaid/./node_modules/lodash/_isMasked.js","webpack://mermaid/./node_modules/lodash/_isPrototype.js","webpack://mermaid/./node_modules/lodash/_isStrictComparable.js","webpack://mermaid/./node_modules/lodash/_listCacheClear.js","webpack://mermaid/./node_modules/lodash/_listCacheDelete.js","webpack://mermaid/./node_modules/lodash/_listCacheGet.js","webpack://mermaid/./node_modules/lodash/_listCacheHas.js","webpack://mermaid/./node_modules/lodash/_listCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapCacheClear.js","webpack://mermaid/./node_modules/lodash/_mapCacheDelete.js","webpack://mermaid/./node_modules/lodash/_mapCacheGet.js","webpack://mermaid/./node_modules/lodash/_mapCacheHas.js","webpack://mermaid/./node_modules/lodash/_mapCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapToArray.js","webpack://mermaid/./node_modules/lodash/_matchesStrictComparable.js","webpack://mermaid/./node_modules/lodash/_memoizeCapped.js","webpack://mermaid/./node_modules/lodash/_nativeCreate.js","webpack://mermaid/./node_modules/lodash/_nativeKeys.js","webpack://mermaid/./node_modules/lodash/_nativeKeysIn.js","webpack://mermaid/./node_modules/lodash/_nodeUtil.js","webpack://mermaid/./node_modules/lodash/_objectToString.js","webpack://mermaid/./node_modules/lodash/_overArg.js","webpack://mermaid/./node_modules/lodash/_overRest.js","webpack://mermaid/./node_modules/lodash/_root.js","webpack://mermaid/./node_modules/lodash/_safeGet.js","webpack://mermaid/./node_modules/lodash/_setCacheAdd.js","webpack://mermaid/./node_modules/lodash/_setCacheHas.js","webpack://mermaid/./node_modules/lodash/_setToArray.js","webpack://mermaid/./node_modules/lodash/_setToString.js","webpack://mermaid/./node_modules/lodash/_shortOut.js","webpack://mermaid/./node_modules/lodash/_stackClear.js","webpack://mermaid/./node_modules/lodash/_stackDelete.js","webpack://mermaid/./node_modules/lodash/_stackGet.js","webpack://mermaid/./node_modules/lodash/_stackHas.js","webpack://mermaid/./node_modules/lodash/_stackSet.js","webpack://mermaid/./node_modules/lodash/_strictIndexOf.js","webpack://mermaid/./node_modules/lodash/_stringSize.js","webpack://mermaid/./node_modules/lodash/_stringToPath.js","webpack://mermaid/./node_modules/lodash/_toKey.js","webpack://mermaid/./node_modules/lodash/_toSource.js","webpack://mermaid/./node_modules/lodash/_trimmedEndIndex.js","webpack://mermaid/./node_modules/lodash/_unicodeSize.js","webpack://mermaid/./node_modules/lodash/clone.js","webpack://mermaid/./node_modules/lodash/cloneDeep.js","webpack://mermaid/./node_modules/lodash/constant.js","webpack://mermaid/./node_modules/lodash/defaults.js","webpack://mermaid/./node_modules/lodash/each.js","webpack://mermaid/./node_modules/lodash/eq.js","webpack://mermaid/./node_modules/lodash/filter.js","webpack://mermaid/./node_modules/lodash/find.js","webpack://mermaid/./node_modules/lodash/findIndex.js","webpack://mermaid/./node_modules/lodash/flatten.js","webpack://mermaid/./node_modules/lodash/forEach.js","webpack://mermaid/./node_modules/lodash/forIn.js","webpack://mermaid/./node_modules/lodash/get.js","webpack://mermaid/./node_modules/lodash/has.js","webpack://mermaid/./node_modules/lodash/hasIn.js","webpack://mermaid/./node_modules/lodash/identity.js","webpack://mermaid/./node_modules/lodash/isArguments.js","webpack://mermaid/./node_modules/lodash/isArray.js","webpack://mermaid/./node_modules/lodash/isArrayLike.js","webpack://mermaid/./node_modules/lodash/isArrayLikeObject.js","webpack://mermaid/./node_modules/lodash/isBuffer.js","webpack://mermaid/./node_modules/lodash/isEmpty.js","webpack://mermaid/./node_modules/lodash/isFunction.js","webpack://mermaid/./node_modules/lodash/isLength.js","webpack://mermaid/./node_modules/lodash/isMap.js","webpack://mermaid/./node_modules/lodash/isObject.js","webpack://mermaid/./node_modules/lodash/isObjectLike.js","webpack://mermaid/./node_modules/lodash/isPlainObject.js","webpack://mermaid/./node_modules/lodash/isSet.js","webpack://mermaid/./node_modules/lodash/isString.js","webpack://mermaid/./node_modules/lodash/isSymbol.js","webpack://mermaid/./node_modules/lodash/isTypedArray.js","webpack://mermaid/./node_modules/lodash/isUndefined.js","webpack://mermaid/./node_modules/lodash/keys.js","webpack://mermaid/./node_modules/lodash/keysIn.js","webpack://mermaid/./node_modules/lodash/last.js","webpack://mermaid/./node_modules/lodash/map.js","webpack://mermaid/./node_modules/lodash/mapValues.js","webpack://mermaid/./node_modules/lodash/max.js","webpack://mermaid/./node_modules/lodash/memoize.js","webpack://mermaid/./node_modules/lodash/merge.js","webpack://mermaid/./node_modules/lodash/min.js","webpack://mermaid/./node_modules/lodash/minBy.js","webpack://mermaid/./node_modules/lodash/noop.js","webpack://mermaid/./node_modules/lodash/now.js","webpack://mermaid/./node_modules/lodash/pick.js","webpack://mermaid/./node_modules/lodash/property.js","webpack://mermaid/./node_modules/lodash/range.js","webpack://mermaid/./node_modules/lodash/reduce.js","webpack://mermaid/./node_modules/lodash/size.js","webpack://mermaid/./node_modules/lodash/sortBy.js","webpack://mermaid/./node_modules/lodash/stubArray.js","webpack://mermaid/./node_modules/lodash/stubFalse.js","webpack://mermaid/./node_modules/lodash/toFinite.js","webpack://mermaid/./node_modules/lodash/toInteger.js","webpack://mermaid/./node_modules/lodash/toNumber.js","webpack://mermaid/./node_modules/lodash/toPlainObject.js","webpack://mermaid/./node_modules/lodash/toString.js","webpack://mermaid/./node_modules/lodash/transform.js","webpack://mermaid/./node_modules/lodash/union.js","webpack://mermaid/./node_modules/lodash/uniqueId.js","webpack://mermaid/./node_modules/lodash/values.js","webpack://mermaid/./node_modules/lodash/zipObject.js","webpack://mermaid/./node_modules/moment-mini/locale/ sync ^\\.\\/.*$","webpack://mermaid/./node_modules/moment-mini/moment.min.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/webpack/bootstrap","webpack://mermaid/webpack/runtime/compat get default export","webpack://mermaid/webpack/runtime/define property getters","webpack://mermaid/webpack/runtime/global","webpack://mermaid/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid/webpack/runtime/make namespace object","webpack://mermaid/webpack/runtime/node module decorator","webpack://mermaid/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, () => {\nreturn ","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,7],$V2=[1,8],$V3=[1,9],$V4=[1,10],$V5=[1,13],$V6=[1,12],$V7=[1,16,25],$V8=[1,20],$V9=[1,31],$Va=[1,32],$Vb=[1,33],$Vc=[1,35],$Vd=[1,38],$Ve=[1,36],$Vf=[1,37],$Vg=[1,39],$Vh=[1,40],$Vi=[1,41],$Vj=[1,42],$Vk=[1,45],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[16,25],$Vp=[1,62],$Vq=[1,63],$Vr=[1,64],$Vs=[1,65],$Vt=[1,66],$Vu=[1,67],$Vv=[16,25,32,44,45,53,56,57,58,59,60,61,66,68],$Vw=[16,25,30,32,44,45,49,53,56,57,58,59,60,61,66,68,83,84,85,86],$Vx=[5,8,9,10,11,16,19,23,25],$Vy=[53,83,84,85,86],$Vz=[53,60,61,83,84,85,86],$VA=[53,56,57,58,59,83,84,85,86],$VB=[16,25,32],$VC=[1,99];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"statments\":5,\"direction\":6,\"directive\":7,\"direction_tb\":8,\"direction_bt\":9,\"direction_rl\":10,\"direction_lr\":11,\"graphConfig\":12,\"openDirective\":13,\"typeDirective\":14,\"closeDirective\":15,\"NEWLINE\":16,\":\":17,\"argDirective\":18,\"open_directive\":19,\"type_directive\":20,\"arg_directive\":21,\"close_directive\":22,\"CLASS_DIAGRAM\":23,\"statements\":24,\"EOF\":25,\"statement\":26,\"className\":27,\"alphaNumToken\":28,\"classLiteralName\":29,\"GENERICTYPE\":30,\"relationStatement\":31,\"LABEL\":32,\"classStatement\":33,\"methodStatement\":34,\"annotationStatement\":35,\"clickStatement\":36,\"cssClassStatement\":37,\"acc_title\":38,\"acc_title_value\":39,\"acc_descr\":40,\"acc_descr_value\":41,\"acc_descr_multiline_value\":42,\"CLASS\":43,\"STYLE_SEPARATOR\":44,\"STRUCT_START\":45,\"members\":46,\"STRUCT_STOP\":47,\"ANNOTATION_START\":48,\"ANNOTATION_END\":49,\"MEMBER\":50,\"SEPARATOR\":51,\"relation\":52,\"STR\":53,\"relationType\":54,\"lineType\":55,\"AGGREGATION\":56,\"EXTENSION\":57,\"COMPOSITION\":58,\"DEPENDENCY\":59,\"LINE\":60,\"DOTTED_LINE\":61,\"CALLBACK\":62,\"LINK\":63,\"LINK_TARGET\":64,\"CLICK\":65,\"CALLBACK_NAME\":66,\"CALLBACK_ARGS\":67,\"HREF\":68,\"CSSCLASS\":69,\"commentToken\":70,\"textToken\":71,\"graphCodeTokens\":72,\"textNoTagsToken\":73,\"TAGSTART\":74,\"TAGEND\":75,\"==\":76,\"--\":77,\"PCT\":78,\"DEFAULT\":79,\"SPACE\":80,\"MINUS\":81,\"keywords\":82,\"UNICODE_TEXT\":83,\"NUM\":84,\"ALPHA\":85,\"BQUOTE_STR\":86,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"statments\",8:\"direction_tb\",9:\"direction_bt\",10:\"direction_rl\",11:\"direction_lr\",16:\"NEWLINE\",17:\":\",19:\"open_directive\",20:\"type_directive\",21:\"arg_directive\",22:\"close_directive\",23:\"CLASS_DIAGRAM\",25:\"EOF\",30:\"GENERICTYPE\",32:\"LABEL\",38:\"acc_title\",39:\"acc_title_value\",40:\"acc_descr\",41:\"acc_descr_value\",42:\"acc_descr_multiline_value\",43:\"CLASS\",44:\"STYLE_SEPARATOR\",45:\"STRUCT_START\",47:\"STRUCT_STOP\",48:\"ANNOTATION_START\",49:\"ANNOTATION_END\",50:\"MEMBER\",51:\"SEPARATOR\",53:\"STR\",56:\"AGGREGATION\",57:\"EXTENSION\",58:\"COMPOSITION\",59:\"DEPENDENCY\",60:\"LINE\",61:\"DOTTED_LINE\",62:\"CALLBACK\",63:\"LINK\",64:\"LINK_TARGET\",65:\"CLICK\",66:\"CALLBACK_NAME\",67:\"CALLBACK_ARGS\",68:\"HREF\",69:\"CSSCLASS\",72:\"graphCodeTokens\",74:\"TAGSTART\",75:\"TAGEND\",76:\"==\",77:\"--\",78:\"PCT\",79:\"DEFAULT\",80:\"SPACE\",81:\"MINUS\",82:\"keywords\",83:\"UNICODE_TEXT\",84:\"NUM\",85:\"ALPHA\",86:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[3,1],[3,2],[6,1],[6,1],[6,1],[6,1],[4,1],[7,4],[7,6],[13,1],[14,1],[18,1],[15,1],[12,4],[24,1],[24,2],[24,3],[27,1],[27,1],[27,2],[27,2],[27,2],[26,1],[26,2],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,2],[26,2],[26,1],[33,2],[33,4],[33,5],[33,7],[35,4],[46,1],[46,2],[34,1],[34,2],[34,1],[34,1],[31,3],[31,4],[31,4],[31,5],[52,3],[52,2],[52,2],[52,1],[54,1],[54,1],[54,1],[54,1],[55,1],[55,1],[36,3],[36,4],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[37,3],[70,1],[70,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[73,1],[73,1],[73,1],[73,1],[28,1],[28,1],[28,1],[29,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.setDirection('TB');\nbreak;\ncase 6:\n yy.setDirection('BT');\nbreak;\ncase 7:\n yy.setDirection('RL');\nbreak;\ncase 8:\n yy.setDirection('LR');\nbreak;\ncase 12:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 13:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 14:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 15:\n yy.parseDirective('}%%', 'close_directive', 'class'); \nbreak;\ncase 20: case 21:\n this.$=$$[$0]; \nbreak;\ncase 22:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 23: case 24:\n this.$=$$[$0-1]+'~'+$$[$0]; \nbreak;\ncase 25:\n yy.addRelation($$[$0]); \nbreak;\ncase 26:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 34:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 35: case 36:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 37:\nyy.addClass($$[$0]);\nbreak;\ncase 38:\nyy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 39:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 40:\nyy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 41:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 42:\n this.$ = [$$[$0]]; \nbreak;\ncase 43:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 44:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 45:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 46:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 47:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 48:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 49:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 50:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 51:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 52:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 53:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 54:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 55:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 56:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 57:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 58:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 59:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 60:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 61:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 62: case 68:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 63: case 69:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 64: case 72:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 66: case 74:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 67: case 75:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 71:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 73:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 76:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,6:4,7:5,8:$V1,9:$V2,10:$V3,11:$V4,12:6,13:11,19:$V5,23:$V6},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{3:14,4:2,5:$V0,6:4,7:5,8:$V1,9:$V2,10:$V3,11:$V4,12:6,13:11,19:$V5,23:$V6},{1:[2,9]},o($V7,[2,5]),o($V7,[2,6]),o($V7,[2,7]),o($V7,[2,8]),{14:15,20:[1,16]},{16:[1,17]},{20:[2,12]},{1:[2,4]},{15:18,17:[1,19],22:$V8},o([17,22],[2,13]),{6:30,7:29,8:$V1,9:$V2,10:$V3,11:$V4,13:11,19:$V5,24:21,26:22,27:34,28:43,29:44,31:23,33:24,34:25,35:26,36:27,37:28,38:$V9,40:$Va,42:$Vb,43:$Vc,48:$Vd,50:$Ve,51:$Vf,62:$Vg,63:$Vh,65:$Vi,69:$Vj,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{16:[1,49]},{18:50,21:[1,51]},{16:[2,15]},{25:[1,52]},{16:[1,53],25:[2,17]},o($Vo,[2,25],{32:[1,54]}),o($Vo,[2,27]),o($Vo,[2,28]),o($Vo,[2,29]),o($Vo,[2,30]),o($Vo,[2,31]),o($Vo,[2,32]),o($Vo,[2,33]),{39:[1,55]},{41:[1,56]},o($Vo,[2,36]),o($Vo,[2,44],{52:57,54:60,55:61,32:[1,59],53:[1,58],56:$Vp,57:$Vq,58:$Vr,59:$Vs,60:$Vt,61:$Vu}),{27:68,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vo,[2,46]),o($Vo,[2,47]),{28:69,83:$Vk,84:$Vl,85:$Vm},{27:70,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{27:71,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{27:72,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{53:[1,73]},o($Vv,[2,20],{28:43,29:44,27:74,30:[1,75],83:$Vk,84:$Vl,85:$Vm,86:$Vn}),o($Vv,[2,21],{30:[1,76]}),o($Vw,[2,90]),o($Vw,[2,91]),o($Vw,[2,92]),o([16,25,30,32,44,45,53,56,57,58,59,60,61,66,68],[2,93]),o($Vx,[2,10]),{15:77,22:$V8},{22:[2,14]},{1:[2,16]},{6:30,7:29,8:$V1,9:$V2,10:$V3,11:$V4,13:11,19:$V5,24:78,25:[2,18],26:22,27:34,28:43,29:44,31:23,33:24,34:25,35:26,36:27,37:28,38:$V9,40:$Va,42:$Vb,43:$Vc,48:$Vd,50:$Ve,51:$Vf,62:$Vg,63:$Vh,65:$Vi,69:$Vj,83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vo,[2,26]),o($Vo,[2,34]),o($Vo,[2,35]),{27:79,28:43,29:44,53:[1,80],83:$Vk,84:$Vl,85:$Vm,86:$Vn},{52:81,54:60,55:61,56:$Vp,57:$Vq,58:$Vr,59:$Vs,60:$Vt,61:$Vu},o($Vo,[2,45]),{55:82,60:$Vt,61:$Vu},o($Vy,[2,55],{54:83,56:$Vp,57:$Vq,58:$Vr,59:$Vs}),o($Vz,[2,56]),o($Vz,[2,57]),o($Vz,[2,58]),o($Vz,[2,59]),o($VA,[2,60]),o($VA,[2,61]),o($Vo,[2,37],{44:[1,84],45:[1,85]}),{49:[1,86]},{53:[1,87]},{53:[1,88]},{66:[1,89],68:[1,90]},{28:91,83:$Vk,84:$Vl,85:$Vm},o($Vv,[2,22]),o($Vv,[2,23]),o($Vv,[2,24]),{16:[1,92]},{25:[2,19]},o($VB,[2,48]),{27:93,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{27:94,28:43,29:44,53:[1,95],83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vy,[2,54],{54:96,56:$Vp,57:$Vq,58:$Vr,59:$Vs}),o($Vy,[2,53]),{28:97,83:$Vk,84:$Vl,85:$Vm},{46:98,50:$VC},{27:100,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vo,[2,62],{53:[1,101]}),o($Vo,[2,64],{53:[1,103],64:[1,102]}),o($Vo,[2,68],{53:[1,104],67:[1,105]}),o($Vo,[2,72],{53:[1,107],64:[1,106]}),o($Vo,[2,76]),o($Vx,[2,11]),o($VB,[2,50]),o($VB,[2,49]),{27:108,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vy,[2,52]),o($Vo,[2,38],{45:[1,109]}),{47:[1,110]},{46:111,47:[2,42],50:$VC},o($Vo,[2,41]),o($Vo,[2,63]),o($Vo,[2,65]),o($Vo,[2,66],{64:[1,112]}),o($Vo,[2,69]),o($Vo,[2,70],{53:[1,113]}),o($Vo,[2,73]),o($Vo,[2,74],{64:[1,114]}),o($VB,[2,51]),{46:115,50:$VC},o($Vo,[2,39]),{47:[2,43]},o($Vo,[2,67]),o($Vo,[2,71]),o($Vo,[2,75]),{47:[1,116]},o($Vo,[2,40])],\ndefaultActions: {2:[2,1],3:[2,2],4:[2,3],6:[2,9],13:[2,12],14:[2,4],20:[2,15],51:[2,14],52:[2,16],78:[2,19],111:[2,43]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 19; \nbreak;\ncase 1:return 8;\nbreak;\ncase 2:return 9;\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 11;\nbreak;\ncase 5: this.begin('type_directive'); return 20; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 17; \nbreak;\ncase 7: this.popState(); this.popState(); return 22; \nbreak;\ncase 8:return 21;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin(\"acc_title\");return 38; \nbreak;\ncase 12: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 13: this.begin(\"acc_descr\");return 40; \nbreak;\ncase 14: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 15: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 16: this.popState(); \nbreak;\ncase 17:return \"acc_descr_multiline_value\";\nbreak;\ncase 18:return 16;\nbreak;\ncase 19:/* skip whitespace */\nbreak;\ncase 20:return 23;\nbreak;\ncase 21:return 23;\nbreak;\ncase 22: this.begin(\"struct\"); /*console.log('Starting struct');*/ return 45;\nbreak;\ncase 23:return \"EOF_IN_STRUCT\";\nbreak;\ncase 24:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 25: /*console.log('Ending struct');*/this.popState(); return 47;\nbreak;\ncase 26:/* nothing */\nbreak;\ncase 27: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 28:return 43;\nbreak;\ncase 29:return 69;\nbreak;\ncase 30:return 62;\nbreak;\ncase 31:return 63;\nbreak;\ncase 32:return 65;\nbreak;\ncase 33:return 48;\nbreak;\ncase 34:return 49;\nbreak;\ncase 35:this.begin(\"generic\");\nbreak;\ncase 36:this.popState();\nbreak;\ncase 37:return \"GENERICTYPE\";\nbreak;\ncase 38:this.begin(\"string\");\nbreak;\ncase 39:this.popState();\nbreak;\ncase 40:return \"STR\";\nbreak;\ncase 41:this.begin(\"bqstring\");\nbreak;\ncase 42:this.popState();\nbreak;\ncase 43:return \"BQUOTE_STR\";\nbreak;\ncase 44:this.begin(\"href\");\nbreak;\ncase 45:this.popState();\nbreak;\ncase 46:return 68;\nbreak;\ncase 47:this.begin(\"callback_name\");\nbreak;\ncase 48:this.popState();\nbreak;\ncase 49:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 50:return 66;\nbreak;\ncase 51:this.popState();\nbreak;\ncase 52:return 67;\nbreak;\ncase 53:return 64;\nbreak;\ncase 54:return 64;\nbreak;\ncase 55:return 64;\nbreak;\ncase 56:return 64;\nbreak;\ncase 57:return 57;\nbreak;\ncase 58:return 57;\nbreak;\ncase 59:return 59;\nbreak;\ncase 60:return 59;\nbreak;\ncase 61:return 58;\nbreak;\ncase 62:return 56;\nbreak;\ncase 63:return 60;\nbreak;\ncase 64:return 61;\nbreak;\ncase 65:return 32;\nbreak;\ncase 66:return 44;\nbreak;\ncase 67:return 81;\nbreak;\ncase 68:return 'DOT';\nbreak;\ncase 69:return 'PLUS';\nbreak;\ncase 70:return 78;\nbreak;\ncase 71:return 'EQUALS';\nbreak;\ncase 72:return 'EQUALS';\nbreak;\ncase 73:return 85;\nbreak;\ncase 74:return 'PUNCTUATION';\nbreak;\ncase 75:return 84;\nbreak;\ncase 76:return 83;\nbreak;\ncase 77:return 80;\nbreak;\ncase 78:return 25;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:class\\b)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{1}[^:\\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\\w+)/,/^(?:[!\"#$%&'*+,-.`?\\\\/])/,/^(?:[0-9]+)/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"acc_descr_multiline\":{\"rules\":[16,17],\"inclusive\":false},\"acc_descr\":{\"rules\":[14],\"inclusive\":false},\"acc_title\":{\"rules\":[12],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"callback_args\":{\"rules\":[51,52],\"inclusive\":false},\"callback_name\":{\"rules\":[48,49,50],\"inclusive\":false},\"href\":{\"rules\":[45,46],\"inclusive\":false},\"struct\":{\"rules\":[23,24,25,26,27],\"inclusive\":false},\"generic\":{\"rules\":[36,37],\"inclusive\":false},\"bqstring\":{\"rules\":[42,43],\"inclusive\":false},\"string\":{\"rules\":[39,40],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,28,29,30,31,32,33,34,35,38,41,44,47,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,23,25,27,29,30,48],$V3=[1,17],$V4=[1,18],$V5=[1,19],$V6=[1,20],$V7=[1,21],$V8=[1,24],$V9=[1,29],$Va=[1,30],$Vb=[1,31],$Vc=[1,32],$Vd=[1,44],$Ve=[30,45,46],$Vf=[4,6,9,11,23,25,27,29,30,48],$Vg=[41,42,43,44],$Vh=[22,36],$Vi=[1,62];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"entityName\":17,\"relSpec\":18,\"role\":19,\"BLOCK_START\":20,\"attributes\":21,\"BLOCK_STOP\":22,\"title\":23,\"title_value\":24,\"acc_title\":25,\"acc_title_value\":26,\"acc_descr\":27,\"acc_descr_value\":28,\"acc_descr_multiline_value\":29,\"ALPHANUM\":30,\"attribute\":31,\"attributeType\":32,\"attributeName\":33,\"attributeKeyType\":34,\"attributeComment\":35,\"ATTRIBUTE_WORD\":36,\"ATTRIBUTE_KEY\":37,\"COMMENT\":38,\"cardinality\":39,\"relType\":40,\"ZERO_OR_ONE\":41,\"ZERO_OR_MORE\":42,\"ONE_OR_MORE\":43,\"ONLY_ONE\":44,\"NON_IDENTIFYING\":45,\"IDENTIFYING\":46,\"WORD\":47,\"open_directive\":48,\"type_directive\":49,\"arg_directive\":50,\"close_directive\":51,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",20:\"BLOCK_START\",22:\"BLOCK_STOP\",23:\"title\",24:\"title_value\",25:\"acc_title\",26:\"acc_title_value\",27:\"acc_descr\",28:\"acc_descr_value\",29:\"acc_descr_multiline_value\",30:\"ALPHANUM\",36:\"ATTRIBUTE_WORD\",37:\"ATTRIBUTE_KEY\",38:\"COMMENT\",41:\"ZERO_OR_ONE\",42:\"ZERO_OR_MORE\",43:\"ONE_OR_MORE\",44:\"ONLY_ONE\",45:\"NON_IDENTIFYING\",46:\"IDENTIFYING\",47:\"WORD\",48:\"open_directive\",49:\"type_directive\",50:\"arg_directive\",51:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[21,1],[21,2],[31,2],[31,3],[31,3],[31,4],[32,1],[33,1],[34,1],[35,1],[18,3],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n /*console.log('finished parsing');*/ \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 12:\n\n yy.addEntity($$[$0-4]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\n \nbreak;\ncase 13:\n\n /* console.log('detected block'); */\n yy.addEntity($$[$0-3]);\n yy.addAttributes($$[$0-3], $$[$0-1]);\n /* console.log('handled block'); */\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0]); \nbreak;\ncase 16: case 17:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 18: case 19:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 20:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 21:\n this.$ = [$$[$0]]; \nbreak;\ncase 22:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 23:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 24:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeKeyType: $$[$0] }; \nbreak;\ncase 25:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 26:\n this.$ = { attributeType: $$[$0-3], attributeName: $$[$0-2], attributeKeyType: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 27: case 28: case 29:\n this.$=$$[$0]; \nbreak;\ncase 30:\n this.$=$$[$0].replace(/\"/g, ''); \nbreak;\ncase 31:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 32:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 33:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 34:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 35:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 36:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 37:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 38:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 39:\n this.$ = $$[$0]; \nbreak;\ncase 40:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 41:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 42:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 43:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,48:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,48:$V1},{13:8,49:[1,9]},{49:[2,40]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:$V3,25:$V4,27:$V5,29:$V6,30:$V7,48:$V1},{1:[2,2]},{14:22,15:[1,23],51:$V8},o([15,51],[2,41]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:25,12:4,17:16,23:$V3,25:$V4,27:$V5,29:$V6,30:$V7,48:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:26,39:28,20:[1,27],41:$V9,42:$Va,43:$Vb,44:$Vc}),{24:[1,33]},{26:[1,34]},{28:[1,35]},o($V2,[2,19]),o([6,9,11,15,20,23,25,27,29,30,41,42,43,44,48],[2,20]),{11:[1,36]},{16:37,50:[1,38]},{11:[2,43]},o($V2,[2,5]),{17:39,30:$V7},{21:40,22:[1,41],31:42,32:43,36:$Vd},{40:45,45:[1,46],46:[1,47]},o($Ve,[2,32]),o($Ve,[2,33]),o($Ve,[2,34]),o($Ve,[2,35]),o($V2,[2,16]),o($V2,[2,17]),o($V2,[2,18]),o($Vf,[2,9]),{14:48,51:$V8},{51:[2,42]},{15:[1,49]},{22:[1,50]},o($V2,[2,14]),{21:51,22:[2,21],31:42,32:43,36:$Vd},{33:52,36:[1,53]},{36:[2,27]},{39:54,41:$V9,42:$Va,43:$Vb,44:$Vc},o($Vg,[2,36]),o($Vg,[2,37]),{11:[1,55]},{19:56,30:[1,58],47:[1,57]},o($V2,[2,13]),{22:[2,22]},o($Vh,[2,23],{34:59,35:60,37:[1,61],38:$Vi}),o([22,36,37,38],[2,28]),{30:[2,31]},o($Vf,[2,10]),o($V2,[2,12]),o($V2,[2,38]),o($V2,[2,39]),o($Vh,[2,24],{35:63,38:$Vi}),o($Vh,[2,25]),o([22,36,38],[2,29]),o($Vh,[2,30]),o($Vh,[2,26])],\ndefaultActions: {5:[2,40],7:[2,2],24:[2,43],38:[2,42],44:[2,27],51:[2,22],54:[2,31]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin(\"acc_title\");return 25; \nbreak;\ncase 1: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 2: this.begin(\"acc_descr\");return 27; \nbreak;\ncase 3: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 4: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 5: this.popState(); \nbreak;\ncase 6:return \"acc_descr_multiline_value\";\nbreak;\ncase 7: this.begin('open_directive'); return 48; \nbreak;\ncase 8: this.begin('type_directive'); return 49; \nbreak;\ncase 9: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 10: this.popState(); this.popState(); return 51; \nbreak;\ncase 11:return 50;\nbreak;\ncase 12:/* skip comments */\nbreak;\ncase 13:/* skip comments */\nbreak;\ncase 14:return 11;\nbreak;\ncase 15:/* skip whitespace */\nbreak;\ncase 16:return 9;\nbreak;\ncase 17:return 47;\nbreak;\ncase 18:return 4;\nbreak;\ncase 19: this.begin(\"block\"); return 20; \nbreak;\ncase 20:/* skip whitespace in block */\nbreak;\ncase 21:return 37\nbreak;\ncase 22:return 36\nbreak;\ncase 23:return 38;\nbreak;\ncase 24:/* nothing */\nbreak;\ncase 25: this.popState(); return 22; \nbreak;\ncase 26:return yy_.yytext[0];\nbreak;\ncase 27:return 41;\nbreak;\ncase 28:return 42;\nbreak;\ncase 29:return 43;\nbreak;\ncase 30:return 44;\nbreak;\ncase 31:return 41;\nbreak;\ncase 32:return 42;\nbreak;\ncase 33:return 43;\nbreak;\ncase 34:return 45;\nbreak;\ncase 35:return 46;\nbreak;\ncase 36:return 45;\nbreak;\ncase 37:return 45;\nbreak;\ncase 38:return 30;\nbreak;\ncase 39:return yy_.yytext[0];\nbreak;\ncase 40:return 6;\nbreak;\n}\n},\nrules: [/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:\"[^\"]*\")/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[5,6],\"inclusive\":false},\"acc_descr\":{\"rules\":[3],\"inclusive\":false},\"acc_title\":{\"rules\":[1],\"inclusive\":false},\"open_directive\":{\"rules\":[8],\"inclusive\":false},\"type_directive\":{\"rules\":[9,10],\"inclusive\":false},\"arg_directive\":{\"rules\":[10,11],\"inclusive\":false},\"block\":{\"rules\":[20,21,22,23,24,25,26],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,7,12,13,14,15,16,17,18,19,27,28,29,30,31,32,33,34,35,36,37,38,39,40],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,9],$V1=[1,7],$V2=[1,6],$V3=[1,8],$V4=[1,20,21,22,23,38,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,32],$Vc=[1,33],$Vd=[1,34],$Ve=[1,62],$Vf=[1,48],$Vg=[1,52],$Vh=[1,36],$Vi=[1,37],$Vj=[1,38],$Vk=[1,39],$Vl=[1,40],$Vm=[1,56],$Vn=[1,63],$Vo=[1,51],$Vp=[1,53],$Vq=[1,55],$Vr=[1,59],$Vs=[1,60],$Vt=[1,41],$Vu=[1,42],$Vv=[1,43],$Vw=[1,44],$Vx=[1,61],$Vy=[1,50],$Vz=[1,54],$VA=[1,57],$VB=[1,58],$VC=[1,49],$VD=[1,66],$VE=[1,71],$VF=[1,20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],$VG=[1,75],$VH=[1,74],$VI=[1,76],$VJ=[20,21,23,81,82],$VK=[1,99],$VL=[1,104],$VM=[1,107],$VN=[1,108],$VO=[1,101],$VP=[1,106],$VQ=[1,109],$VR=[1,102],$VS=[1,114],$VT=[1,113],$VU=[1,103],$VV=[1,105],$VW=[1,110],$VX=[1,111],$VY=[1,112],$VZ=[1,115],$V_=[20,21,22,23,81,82],$V$=[20,21,22,23,53,81,82],$V01=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],$V11=[20,21,23],$V21=[20,21,23,52,66,67,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],$V31=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],$V41=[52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],$V51=[1,149],$V61=[1,157],$V71=[1,158],$V81=[1,159],$V91=[1,160],$Va1=[1,144],$Vb1=[1,145],$Vc1=[1,141],$Vd1=[1,152],$Ve1=[1,153],$Vf1=[1,154],$Vg1=[1,155],$Vh1=[1,156],$Vi1=[1,161],$Vj1=[1,162],$Vk1=[1,147],$Vl1=[1,150],$Vm1=[1,146],$Vn1=[1,143],$Vo1=[20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],$Vp1=[1,165],$Vq1=[20,21,22,23,26,52,66,67,91,105,106,109,111,112,122,123,124,125,126,127],$Vr1=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,86,87,88,89,90,91,92,95,105,106,109,111,112,113,114,122,123,124,125,126,127],$Vs1=[12,21,22,24],$Vt1=[22,106],$Vu1=[1,250],$Vv1=[1,245],$Vw1=[1,246],$Vx1=[1,254],$Vy1=[1,251],$Vz1=[1,248],$VA1=[1,247],$VB1=[1,249],$VC1=[1,252],$VD1=[1,253],$VE1=[1,255],$VF1=[1,273],$VG1=[20,21,23,106],$VH1=[20,21,22,23,66,67,86,102,105,106,109,110,111,112,113];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"directive\":5,\"openDirective\":6,\"typeDirective\":7,\"closeDirective\":8,\"separator\":9,\":\":10,\"argDirective\":11,\"open_directive\":12,\"type_directive\":13,\"arg_directive\":14,\"close_directive\":15,\"graphConfig\":16,\"document\":17,\"line\":18,\"statement\":19,\"SEMI\":20,\"NEWLINE\":21,\"SPACE\":22,\"EOF\":23,\"GRAPH\":24,\"NODIR\":25,\"DIR\":26,\"FirstStmtSeperator\":27,\"ending\":28,\"endToken\":29,\"spaceList\":30,\"spaceListNewline\":31,\"verticeStatement\":32,\"styleStatement\":33,\"linkStyleStatement\":34,\"classDefStatement\":35,\"classStatement\":36,\"clickStatement\":37,\"subgraph\":38,\"text\":39,\"SQS\":40,\"SQE\":41,\"end\":42,\"direction\":43,\"acc_title\":44,\"acc_title_value\":45,\"acc_descr\":46,\"acc_descr_value\":47,\"acc_descr_multiline_value\":48,\"link\":49,\"node\":50,\"vertex\":51,\"AMP\":52,\"STYLE_SEPARATOR\":53,\"idString\":54,\"DOUBLECIRCLESTART\":55,\"DOUBLECIRCLEEND\":56,\"PS\":57,\"PE\":58,\"(-\":59,\"-)\":60,\"STADIUMSTART\":61,\"STADIUMEND\":62,\"SUBROUTINESTART\":63,\"SUBROUTINEEND\":64,\"VERTEX_WITH_PROPS_START\":65,\"ALPHA\":66,\"COLON\":67,\"PIPE\":68,\"CYLINDERSTART\":69,\"CYLINDEREND\":70,\"DIAMOND_START\":71,\"DIAMOND_STOP\":72,\"TAGEND\":73,\"TRAPSTART\":74,\"TRAPEND\":75,\"INVTRAPSTART\":76,\"INVTRAPEND\":77,\"linkStatement\":78,\"arrowText\":79,\"TESTSTR\":80,\"START_LINK\":81,\"LINK\":82,\"textToken\":83,\"STR\":84,\"keywords\":85,\"STYLE\":86,\"LINKSTYLE\":87,\"CLASSDEF\":88,\"CLASS\":89,\"CLICK\":90,\"DOWN\":91,\"UP\":92,\"textNoTags\":93,\"textNoTagsToken\":94,\"DEFAULT\":95,\"stylesOpt\":96,\"alphaNum\":97,\"CALLBACKNAME\":98,\"CALLBACKARGS\":99,\"HREF\":100,\"LINK_TARGET\":101,\"HEX\":102,\"numList\":103,\"INTERPOLATE\":104,\"NUM\":105,\"COMMA\":106,\"style\":107,\"styleComponent\":108,\"MINUS\":109,\"UNIT\":110,\"BRKT\":111,\"DOT\":112,\"PCT\":113,\"TAGSTART\":114,\"alphaNumToken\":115,\"idStringToken\":116,\"alphaNumStatement\":117,\"direction_tb\":118,\"direction_bt\":119,\"direction_rl\":120,\"direction_lr\":121,\"PUNCTUATION\":122,\"UNICODE_TEXT\":123,\"PLUS\":124,\"EQUALS\":125,\"MULT\":126,\"UNDERSCORE\":127,\"graphCodeTokens\":128,\"ARROW_CROSS\":129,\"ARROW_POINT\":130,\"ARROW_CIRCLE\":131,\"ARROW_OPEN\":132,\"QUOTE\":133,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",10:\":\",12:\"open_directive\",13:\"type_directive\",14:\"arg_directive\",15:\"close_directive\",20:\"SEMI\",21:\"NEWLINE\",22:\"SPACE\",23:\"EOF\",24:\"GRAPH\",25:\"NODIR\",26:\"DIR\",38:\"subgraph\",40:\"SQS\",41:\"SQE\",42:\"end\",44:\"acc_title\",45:\"acc_title_value\",46:\"acc_descr\",47:\"acc_descr_value\",48:\"acc_descr_multiline_value\",52:\"AMP\",53:\"STYLE_SEPARATOR\",55:\"DOUBLECIRCLESTART\",56:\"DOUBLECIRCLEEND\",57:\"PS\",58:\"PE\",59:\"(-\",60:\"-)\",61:\"STADIUMSTART\",62:\"STADIUMEND\",63:\"SUBROUTINESTART\",64:\"SUBROUTINEEND\",65:\"VERTEX_WITH_PROPS_START\",66:\"ALPHA\",67:\"COLON\",68:\"PIPE\",69:\"CYLINDERSTART\",70:\"CYLINDEREND\",71:\"DIAMOND_START\",72:\"DIAMOND_STOP\",73:\"TAGEND\",74:\"TRAPSTART\",75:\"TRAPEND\",76:\"INVTRAPSTART\",77:\"INVTRAPEND\",80:\"TESTSTR\",81:\"START_LINK\",82:\"LINK\",84:\"STR\",86:\"STYLE\",87:\"LINKSTYLE\",88:\"CLASSDEF\",89:\"CLASS\",90:\"CLICK\",91:\"DOWN\",92:\"UP\",95:\"DEFAULT\",98:\"CALLBACKNAME\",99:\"CALLBACKARGS\",100:\"HREF\",101:\"LINK_TARGET\",102:\"HEX\",104:\"INTERPOLATE\",105:\"NUM\",106:\"COMMA\",109:\"MINUS\",110:\"UNIT\",111:\"BRKT\",112:\"DOT\",113:\"PCT\",114:\"TAGSTART\",118:\"direction_tb\",119:\"direction_bt\",120:\"direction_rl\",121:\"direction_lr\",122:\"PUNCTUATION\",123:\"UNICODE_TEXT\",124:\"PLUS\",125:\"EQUALS\",126:\"MULT\",127:\"UNDERSCORE\",129:\"ARROW_CROSS\",130:\"ARROW_POINT\",131:\"ARROW_CIRCLE\",132:\"ARROW_OPEN\",133:\"QUOTE\"},\nproductions_: [0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[93,1],[93,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[103,1],[103,3],[96,1],[96,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[94,1],[94,1],[94,1],[94,1],[54,1],[54,2],[97,1],[97,2],[117,1],[117,1],[117,1],[117,1],[43,1],[43,1],[43,1],[43,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 6:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 8:\n yy.parseDirective('}%%', 'close_directive', 'flowchart'); \nbreak;\ncase 10:\n this.$ = [];\nbreak;\ncase 11:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 12: case 82: case 84: case 96: case 152: case 154: case 155:\nthis.$=$$[$0];\nbreak;\ncase 19:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 20:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 35:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 36: case 37: case 38: case 39: case 40:\nthis.$=[];\nbreak;\ncase 41:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 42:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 43:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 45:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 46: case 47:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 51:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 52:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 53:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 54:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 55:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 56:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 57:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'doublecircle');\nbreak;\ncase 60:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 62:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 64:\nthis.$ = $$[$0-7];yy.addVertex($$[$0-7],$$[$0-1],'rect',undefined,undefined,undefined, Object.fromEntries([[$$[$0-5], $$[$0-3]]]));\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 68:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 71:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 72:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 73:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 74:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 75:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 76: case 77:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 78:\nthis.$ = $$[$0];\nbreak;\ncase 79:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 80:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 81:\nthis.$ = $$[$0-1];\nbreak;\ncase 83: case 97: case 153:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 98: case 99:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 100:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 101: case 109:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 102: case 110:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 103:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 104:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 105: case 111:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 106: case 112:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 107: case 113:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 108: case 114:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 115:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 116: case 118:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 117:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 119:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 120:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 121:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 122:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 123: case 125:\nthis.$ = [$$[$0]]\nbreak;\ncase 124: case 126:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 128:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 150:\nthis.$=$$[$0]\nbreak;\ncase 151:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 156:\nthis.$='v';\nbreak;\ncase 157:\nthis.$='-';\nbreak;\ncase 158:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 159:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 160:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 161:\n this.$={stmt:'dir', value:'LR'};\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},o($V4,$V5,{17:11}),{7:12,13:[1,13]},{16:14,21:$V1,22:$V2,24:$V3},{16:15,21:$V1,22:$V2,24:$V3},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,43:31,44:$Vb,46:$Vc,48:$Vd,50:35,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{8:64,10:[1,65],15:$VD},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,68],21:[1,69],22:$VE,27:67,30:70},o($VF,[2,11]),o($VF,[2,12]),o($VF,[2,13]),o($VF,[2,14]),o($VF,[2,15]),o($VF,[2,16]),{9:72,20:$VG,21:$VH,23:$VI,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:$VG,21:$VH,23:$VI},{9:81,20:$VG,21:$VH,23:$VI},{9:82,20:$VG,21:$VH,23:$VI},{9:83,20:$VG,21:$VH,23:$VI},{9:84,20:$VG,21:$VH,23:$VI},{9:86,20:$VG,21:$VH,22:[1,85],23:$VI},o($VF,[2,44]),{45:[1,87]},{47:[1,88]},o($VF,[2,47]),o($VJ,[2,54],{30:89,22:$VE}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:$VK,52:$VL,66:$VM,67:$VN,84:[1,97],91:$VO,97:96,98:[1,94],100:[1,95],105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($VF,[2,158]),o($VF,[2,159]),o($VF,[2,160]),o($VF,[2,161]),o($V_,[2,55],{53:[1,116]}),o($V$,[2,74],{116:129,40:[1,117],52:$Ve,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:$Vf,67:$Vg,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC}),o($V01,[2,150]),o($V01,[2,175]),o($V01,[2,176]),o($V01,[2,177]),o($V01,[2,178]),o($V01,[2,179]),o($V01,[2,180]),o($V01,[2,181]),o($V01,[2,182]),o($V01,[2,183]),o($V01,[2,184]),o($V01,[2,185]),o($V01,[2,186]),o($V01,[2,187]),o($V01,[2,188]),o($V01,[2,189]),o($V01,[2,190]),{9:130,20:$VG,21:$VH,23:$VI},{11:131,14:[1,132]},o($V11,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,133]},o($V21,[2,34],{30:134,22:$VE}),o($VF,[2,35]),{50:135,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},o($V31,[2,48]),o($V31,[2,49]),o($V31,[2,50]),o($V41,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:$V51,24:$V61,26:$V71,38:$V81,39:139,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o([52,66,67,68,80,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,80]),o($VF,[2,36]),o($VF,[2,37]),o($VF,[2,38]),o($VF,[2,39]),o($VF,[2,40]),{22:$V51,24:$V61,26:$V71,38:$V81,39:163,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($Vo1,$V5,{17:164}),o($VF,[2,45]),o($VF,[2,46]),o($VJ,[2,53],{52:$Vp1}),{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:166,102:[1,167],105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{95:[1,168],103:169,105:[1,170]},{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,95:[1,171],97:172,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:173,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V11,[2,101],{22:[1,174],99:[1,175]}),o($V11,[2,105],{22:[1,176]}),o($V11,[2,109],{115:100,117:178,22:[1,177],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ}),o($V11,[2,111],{22:[1,179]}),o($Vq1,[2,152]),o($Vq1,[2,154]),o($Vq1,[2,155]),o($Vq1,[2,156]),o($Vq1,[2,157]),o($Vr1,[2,162]),o($Vr1,[2,163]),o($Vr1,[2,164]),o($Vr1,[2,165]),o($Vr1,[2,166]),o($Vr1,[2,167]),o($Vr1,[2,168]),o($Vr1,[2,169]),o($Vr1,[2,170]),o($Vr1,[2,171]),o($Vr1,[2,172]),o($Vr1,[2,173]),o($Vr1,[2,174]),{52:$Ve,54:180,66:$Vf,67:$Vg,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{22:$V51,24:$V61,26:$V71,38:$V81,39:181,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:182,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:184,42:$V91,52:$VL,57:[1,183],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:185,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:186,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:187,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{66:[1,188]},{22:$V51,24:$V61,26:$V71,38:$V81,39:189,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:190,42:$V91,52:$VL,66:$VM,67:$VN,71:[1,191],73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:192,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:193,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:194,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V01,[2,151]),o($Vs1,[2,3]),{8:195,15:$VD},{15:[2,7]},o($V4,[2,28]),o($V21,[2,33]),o($VJ,[2,51],{30:196,22:$VE}),o($V41,[2,75],{22:[1,197]}),{22:[1,198]},{22:$V51,24:$V61,26:$V71,38:$V81,39:199,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,82:[1,200],83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($Vr1,[2,82]),o($Vr1,[2,84]),o($Vr1,[2,140]),o($Vr1,[2,141]),o($Vr1,[2,142]),o($Vr1,[2,143]),o($Vr1,[2,144]),o($Vr1,[2,145]),o($Vr1,[2,146]),o($Vr1,[2,147]),o($Vr1,[2,148]),o($Vr1,[2,149]),o($Vr1,[2,85]),o($Vr1,[2,86]),o($Vr1,[2,87]),o($Vr1,[2,88]),o($Vr1,[2,89]),o($Vr1,[2,90]),o($Vr1,[2,91]),o($Vr1,[2,92]),o($Vr1,[2,93]),o($Vr1,[2,94]),o($Vr1,[2,95]),{9:203,20:$VG,21:$VH,22:$V51,23:$VI,24:$V61,26:$V71,38:$V81,40:[1,202],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,204],43:31,44:$Vb,46:$Vc,48:$Vd,50:35,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{22:$VE,30:205},{22:[1,206],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:178,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:[1,207]},{22:[1,208]},{22:[1,209],106:[1,210]},o($Vt1,[2,123]),{22:[1,211]},{22:[1,212],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:178,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:[1,213],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:178,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{84:[1,214]},o($V11,[2,103],{22:[1,215]}),{84:[1,216],101:[1,217]},{84:[1,218]},o($Vq1,[2,153]),{84:[1,219],101:[1,220]},o($V_,[2,57],{116:129,52:$Ve,66:$Vf,67:$Vg,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC}),{22:$V51,24:$V61,26:$V71,38:$V81,41:[1,221],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,56:[1,222],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:223,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,58:[1,224],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,60:[1,225],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,62:[1,226],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,64:[1,227],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{67:[1,228]},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,70:[1,229],73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,72:[1,230],73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:231,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,41:[1,232],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,75:[1,233],77:[1,234],81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,75:[1,236],77:[1,235],81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{9:237,20:$VG,21:$VH,23:$VI},o($VJ,[2,52],{52:$Vp1}),o($V41,[2,77]),o($V41,[2,76]),{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,68:[1,238],73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V41,[2,79]),o($Vr1,[2,83]),{22:$V51,24:$V61,26:$V71,38:$V81,39:239,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($Vo1,$V5,{17:240}),o($VF,[2,43]),{51:241,52:$Ve,54:46,66:$Vf,67:$Vg,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:242,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:256,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:257,102:$Vy1,104:[1,258],105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:259,102:$Vy1,104:[1,260],105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{105:[1,261]},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:262,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:263,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:264,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V11,[2,102]),{84:[1,265]},o($V11,[2,106],{22:[1,266]}),o($V11,[2,107]),o($V11,[2,110]),o($V11,[2,112],{22:[1,267]}),o($V11,[2,113]),o($V$,[2,58]),o($V$,[2,59]),{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,58:[1,268],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V$,[2,66]),o($V$,[2,61]),o($V$,[2,62]),o($V$,[2,63]),{66:[1,269]},o($V$,[2,65]),o($V$,[2,67]),{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,72:[1,270],73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V$,[2,69]),o($V$,[2,70]),o($V$,[2,72]),o($V$,[2,71]),o($V$,[2,73]),o($Vs1,[2,4]),o([22,52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,81]),{22:$V51,24:$V61,26:$V71,38:$V81,41:[1,271],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,272],43:31,44:$Vb,46:$Vc,48:$Vd,50:35,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},o($V_,[2,56]),o($V11,[2,115],{106:$VF1}),o($VG1,[2,125],{108:274,22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,102:$Vy1,105:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1}),o($VH1,[2,127]),o($VH1,[2,129]),o($VH1,[2,130]),o($VH1,[2,131]),o($VH1,[2,132]),o($VH1,[2,133]),o($VH1,[2,134]),o($VH1,[2,135]),o($VH1,[2,136]),o($VH1,[2,137]),o($VH1,[2,138]),o($VH1,[2,139]),o($V11,[2,116],{106:$VF1}),o($V11,[2,117],{106:$VF1}),{22:[1,275]},o($V11,[2,118],{106:$VF1}),{22:[1,276]},o($Vt1,[2,124]),o($V11,[2,98],{106:$VF1}),o($V11,[2,99],{106:$VF1}),o($V11,[2,100],{115:100,117:178,26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ}),o($V11,[2,104]),{101:[1,277]},{101:[1,278]},{58:[1,279]},{68:[1,280]},{72:[1,281]},{9:282,20:$VG,21:$VH,23:$VI},o($VF,[2,42]),{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,102:$Vy1,105:$Vz1,107:283,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},o($VH1,[2,128]),{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:284,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:285,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V11,[2,108]),o($V11,[2,114]),o($V$,[2,60]),{22:$V51,24:$V61,26:$V71,38:$V81,39:286,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V$,[2,68]),o($Vo1,$V5,{17:287}),o($VG1,[2,126],{108:274,22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,102:$Vy1,105:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1}),o($V11,[2,121],{115:100,117:178,22:[1,288],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ}),o($V11,[2,122],{115:100,117:178,22:[1,289],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ}),{22:$V51,24:$V61,26:$V71,38:$V81,41:[1,290],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,291],43:31,44:$Vb,46:$Vc,48:$Vd,50:35,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:292,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:293,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},o($V$,[2,64]),o($VF,[2,41]),o($V11,[2,119],{106:$VF1}),o($V11,[2,120],{106:$VF1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],132:[2,7]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 12; \nbreak;\ncase 1: this.begin('type_directive'); return 13; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 10; \nbreak;\ncase 3: this.popState(); this.popState(); return 15; \nbreak;\ncase 4:return 14;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7: this.begin(\"acc_title\");return 44; \nbreak;\ncase 8: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 9: this.begin(\"acc_descr\");return 46; \nbreak;\ncase 10: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 11: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 12: this.popState(); \nbreak;\ncase 13:return \"acc_descr_multiline_value\";\nbreak;\ncase 14:this.begin(\"string\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return \"STR\";\nbreak;\ncase 17:return 86;\nbreak;\ncase 18:return 95;\nbreak;\ncase 19:return 87;\nbreak;\ncase 20:return 104;\nbreak;\ncase 21:return 88;\nbreak;\ncase 22:return 89;\nbreak;\ncase 23:this.begin(\"href\");\nbreak;\ncase 24:this.popState();\nbreak;\ncase 25:return 100;\nbreak;\ncase 26:this.begin(\"callbackname\");\nbreak;\ncase 27:this.popState();\nbreak;\ncase 28:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 29:return 98;\nbreak;\ncase 30:this.popState();\nbreak;\ncase 31:return 99;\nbreak;\ncase 32:this.begin(\"click\");\nbreak;\ncase 33:this.popState();\nbreak;\ncase 34:return 90;\nbreak;\ncase 35:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 36:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 37:return 38;\nbreak;\ncase 38:return 42;\nbreak;\ncase 39:return 101;\nbreak;\ncase 40:return 101;\nbreak;\ncase 41:return 101;\nbreak;\ncase 42:return 101;\nbreak;\ncase 43: this.popState(); return 25; \nbreak;\ncase 44: this.popState(); return 26; \nbreak;\ncase 45: this.popState(); return 26; \nbreak;\ncase 46: this.popState(); return 26; \nbreak;\ncase 47: this.popState(); return 26; \nbreak;\ncase 48: this.popState(); return 26; \nbreak;\ncase 49: this.popState(); return 26; \nbreak;\ncase 50: this.popState(); return 26; \nbreak;\ncase 51: this.popState(); return 26; \nbreak;\ncase 52: this.popState(); return 26; \nbreak;\ncase 53: this.popState(); return 26; \nbreak;\ncase 54:return 118;\nbreak;\ncase 55:return 119;\nbreak;\ncase 56:return 120;\nbreak;\ncase 57:return 121;\nbreak;\ncase 58: return 105;\nbreak;\ncase 59:return 111;\nbreak;\ncase 60:return 53;\nbreak;\ncase 61:return 67;\nbreak;\ncase 62:return 52;\nbreak;\ncase 63:return 20;\nbreak;\ncase 64:return 106;\nbreak;\ncase 65:return 126;\nbreak;\ncase 66:return 82;\nbreak;\ncase 67:return 82;\nbreak;\ncase 68:return 82;\nbreak;\ncase 69:return 81;\nbreak;\ncase 70:return 81;\nbreak;\ncase 71:return 81;\nbreak;\ncase 72:return 59;\nbreak;\ncase 73:return 60;\nbreak;\ncase 74:return 61;\nbreak;\ncase 75:return 62;\nbreak;\ncase 76:return 63;\nbreak;\ncase 77:return 64;\nbreak;\ncase 78:return 65;\nbreak;\ncase 79:return 69;\nbreak;\ncase 80:return 70;\nbreak;\ncase 81:return 55;\nbreak;\ncase 82:return 56;\nbreak;\ncase 83:return 109;\nbreak;\ncase 84:return 112;\nbreak;\ncase 85:return 127;\nbreak;\ncase 86:return 124;\nbreak;\ncase 87:return 113;\nbreak;\ncase 88:return 125;\nbreak;\ncase 89:return 125;\nbreak;\ncase 90:return 114;\nbreak;\ncase 91:return 73;\nbreak;\ncase 92:return 92;\nbreak;\ncase 93:return 'SEP';\nbreak;\ncase 94:return 91;\nbreak;\ncase 95:return 66;\nbreak;\ncase 96:return 75;\nbreak;\ncase 97:return 74;\nbreak;\ncase 98:return 77;\nbreak;\ncase 99:return 76;\nbreak;\ncase 100:return 122;\nbreak;\ncase 101:return 123;\nbreak;\ncase 102:return 68;\nbreak;\ncase 103:return 57;\nbreak;\ncase 104:return 58;\nbreak;\ncase 105:return 40;\nbreak;\ncase 106:return 41;\nbreak;\ncase 107:return 71\nbreak;\ncase 108:return 72\nbreak;\ncase 109:return 133;\nbreak;\ncase 110:return 21;\nbreak;\ncase 111:return 22;\nbreak;\ncase 112:return 23;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)[^\\n]*)/,/^(?:[^\\}]%%[^\\n]*)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:(\\r?\\n)*\\s*\\n)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\|)/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:\\(\\(\\()/,/^(?:\\)\\)\\))/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\])/,/^(?:\\[\\/)/,/^(?:\\/\\])/,/^(?:\\[\\\\)/,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[30,31],\"inclusive\":false},\"callbackname\":{\"rules\":[27,28,29],\"inclusive\":false},\"href\":{\"rules\":[24,25],\"inclusive\":false},\"click\":{\"rules\":[33,34],\"inclusive\":false},\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[43,44,45,46,47,48,49,50,51,52,53],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[12,13],\"inclusive\":false},\"acc_descr\":{\"rules\":[10],\"inclusive\":false},\"acc_title\":{\"rules\":[8],\"inclusive\":false},\"string\":{\"rules\":[15,16],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,9,11,14,17,18,19,20,21,22,23,26,32,35,36,37,38,39,40,41,42,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[7,9,11,12,13,14,15,16,17,18,19,20,22,24,25,27,34,39],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,24],$Vd=[1,25],$Ve=[1,26],$Vf=[1,28],$Vg=[1,30],$Vh=[1,33],$Vi=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,24,25,27,34,39];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"gantt\":5,\"document\":6,\"EOF\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NL\":11,\"dateFormat\":12,\"inclusiveEndDates\":13,\"topAxis\":14,\"axisFormat\":15,\"excludes\":16,\"includes\":17,\"todayMarker\":18,\"title\":19,\"acc_title\":20,\"acc_title_value\":21,\"acc_descr\":22,\"acc_descr_value\":23,\"acc_descr_multiline_value\":24,\"section\":25,\"clickStatement\":26,\"taskTxt\":27,\"taskData\":28,\"openDirective\":29,\"typeDirective\":30,\"closeDirective\":31,\":\":32,\"argDirective\":33,\"click\":34,\"callbackname\":35,\"callbackargs\":36,\"href\":37,\"clickStatementDebug\":38,\"open_directive\":39,\"type_directive\":40,\"arg_directive\":41,\"close_directive\":42,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"gantt\",7:\"EOF\",9:\"SPACE\",11:\"NL\",12:\"dateFormat\",13:\"inclusiveEndDates\",14:\"topAxis\",15:\"axisFormat\",16:\"excludes\",17:\"includes\",18:\"todayMarker\",19:\"title\",20:\"acc_title\",21:\"acc_title_value\",22:\"acc_descr\",23:\"acc_descr_value\",24:\"acc_descr_multiline_value\",25:\"section\",27:\"taskTxt\",28:\"taskData\",32:\":\",34:\"click\",35:\"callbackname\",36:\"callbackargs\",37:\"href\",39:\"open_directive\",40:\"type_directive\",41:\"arg_directive\",42:\"close_directive\"},\nproductions_: [0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[26,2],[26,3],[26,3],[26,4],[26,3],[26,4],[26,2],[38,2],[38,3],[38,3],[38,4],[38,3],[38,4],[38,2],[29,1],[30,1],[33,1],[31,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 9:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 11:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 13:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 14:\nyy.setIncludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 15:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 16:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 17:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 18: case 19:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 20:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 22:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 26:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 27:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 28:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 29:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 30:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 31:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 32:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 33: case 39:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 34: case 35: case 37:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 36: case 38:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 40:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 41:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 42:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 43:\n yy.parseDirective('}%%', 'close_directive', 'gantt'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,29:4,39:$V1},{1:[3]},{3:6,4:2,5:$V0,29:4,39:$V1},o($V2,[2,3],{6:7}),{30:8,40:[1,9]},{40:[2,40]},{1:[2,1]},{4:29,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,22:$Vc,24:$Vd,25:$Ve,26:27,27:$Vf,29:4,34:$Vg,39:$V1},{31:31,32:[1,32],42:$Vh},o([32,42],[2,41]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:29,10:34,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,22:$Vc,24:$Vd,25:$Ve,26:27,27:$Vf,29:4,34:$Vg,39:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,9]),o($V2,[2,10]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,14]),o($V2,[2,15]),o($V2,[2,16]),{21:[1,35]},{23:[1,36]},o($V2,[2,19]),o($V2,[2,20]),o($V2,[2,21]),{28:[1,37]},o($V2,[2,23]),{35:[1,38],37:[1,39]},{11:[1,40]},{33:41,41:[1,42]},{11:[2,43]},o($V2,[2,5]),o($V2,[2,17]),o($V2,[2,18]),o($V2,[2,22]),o($V2,[2,26],{36:[1,43],37:[1,44]}),o($V2,[2,32],{35:[1,45]}),o($Vi,[2,24]),{31:46,42:$Vh},{42:[2,42]},o($V2,[2,27],{37:[1,47]}),o($V2,[2,28]),o($V2,[2,30],{36:[1,48]}),{11:[1,49]},o($V2,[2,29]),o($V2,[2,31]),o($Vi,[2,25])],\ndefaultActions: {5:[2,40],6:[2,1],33:[2,43],42:[2,42]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 39; \nbreak;\ncase 1: this.begin('type_directive'); return 40; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 32; \nbreak;\ncase 3: this.popState(); this.popState(); return 42; \nbreak;\ncase 4:return 41;\nbreak;\ncase 5: this.begin(\"acc_title\");return 20; \nbreak;\ncase 6: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 7: this.begin(\"acc_descr\");return 22; \nbreak;\ncase 8: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 9: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 10: this.popState(); \nbreak;\ncase 11:return \"acc_descr_multiline_value\";\nbreak;\ncase 12:/* skip comments */\nbreak;\ncase 13:/* skip comments */\nbreak;\ncase 14:/* do nothing */\nbreak;\ncase 15:return 11;\nbreak;\ncase 16:/* skip whitespace */\nbreak;\ncase 17:/* skip comments */\nbreak;\ncase 18:/* skip comments */\nbreak;\ncase 19:this.begin(\"href\");\nbreak;\ncase 20:this.popState();\nbreak;\ncase 21:return 37;\nbreak;\ncase 22:this.begin(\"callbackname\");\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 25:return 35;\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 36;\nbreak;\ncase 28:this.begin(\"click\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return 34;\nbreak;\ncase 31:return 5;\nbreak;\ncase 32:return 12;\nbreak;\ncase 33:return 13;\nbreak;\ncase 34:return 14;\nbreak;\ncase 35:return 15;\nbreak;\ncase 36:return 17;\nbreak;\ncase 37:return 16;\nbreak;\ncase 38:return 18;\nbreak;\ncase 39:return 'date';\nbreak;\ncase 40:return 19;\nbreak;\ncase 41:return 'accDescription'\nbreak;\ncase 42:return 25;\nbreak;\ncase 43:return 27;\nbreak;\ncase 44:return 28;\nbreak;\ncase 45:return 32;\nbreak;\ncase 46:return 7;\nbreak;\ncase 47:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:topAxis\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:includes\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[10,11],\"inclusive\":false},\"acc_descr\":{\"rules\":[8],\"inclusive\":false},\"acc_title\":{\"rules\":[6],\"inclusive\":false},\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[26,27],\"inclusive\":false},\"callbackname\":{\"rules\":[23,24,25],\"inclusive\":false},\"href\":{\"rules\":[20,21],\"inclusive\":false},\"click\":{\"rules\":[29,30],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,7],$V2=[1,5],$V3=[1,9],$V4=[1,6],$V5=[2,6],$V6=[1,16],$V7=[6,8,14,19,21,23,24,26,28,31,34,47,51],$V8=[8,14,19,21,23,24,26,28,31,34],$V9=[8,13,14,19,21,23,24,26,28,31,34],$Va=[1,26],$Vb=[6,8,14,47,51],$Vc=[8,14,51],$Vd=[1,61],$Ve=[1,62],$Vf=[1,63],$Vg=[8,14,32,38,39,51];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"GG\":6,\"document\":7,\"EOF\":8,\":\":9,\"DIR\":10,\"options\":11,\"body\":12,\"OPT\":13,\"NL\":14,\"line\":15,\"statement\":16,\"commitStatement\":17,\"mergeStatement\":18,\"acc_title\":19,\"acc_title_value\":20,\"acc_descr\":21,\"acc_descr_value\":22,\"acc_descr_multiline_value\":23,\"section\":24,\"branchStatement\":25,\"CHECKOUT\":26,\"ID\":27,\"BRANCH\":28,\"ORDER\":29,\"NUM\":30,\"MERGE\":31,\"COMMIT_TAG\":32,\"STR\":33,\"COMMIT\":34,\"commit_arg\":35,\"COMMIT_TYPE\":36,\"commitType\":37,\"COMMIT_ID\":38,\"COMMIT_MSG\":39,\"NORMAL\":40,\"REVERSE\":41,\"HIGHLIGHT\":42,\"openDirective\":43,\"typeDirective\":44,\"closeDirective\":45,\"argDirective\":46,\"open_directive\":47,\"type_directive\":48,\"arg_directive\":49,\"close_directive\":50,\";\":51,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"GG\",8:\"EOF\",9:\":\",10:\"DIR\",13:\"OPT\",14:\"NL\",19:\"acc_title\",20:\"acc_title_value\",21:\"acc_descr\",22:\"acc_descr_value\",23:\"acc_descr_multiline_value\",24:\"section\",26:\"CHECKOUT\",27:\"ID\",28:\"BRANCH\",29:\"ORDER\",30:\"NUM\",31:\"MERGE\",32:\"COMMIT_TAG\",33:\"STR\",34:\"COMMIT\",36:\"COMMIT_TYPE\",38:\"COMMIT_ID\",39:\"COMMIT_MSG\",40:\"NORMAL\",41:\"REVERSE\",42:\"HIGHLIGHT\",47:\"open_directive\",48:\"type_directive\",49:\"arg_directive\",50:\"close_directive\",51:\";\"},\nproductions_: [0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[25,2],[25,4],[18,2],[18,4],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[35,0],[35,1],[37,1],[37,1],[37,1],[5,3],[5,5],[43,1],[44,1],[46,1],[45,1],[4,1],[4,1],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n return $$[$0]; \nbreak;\ncase 4:\n return $$[$0-1]; \nbreak;\ncase 5:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 7:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 8:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 10:\nthis.$ = []\nbreak;\ncase 11:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 12:\nthis.$ =$$[$0-1]\nbreak;\ncase 16:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 17: case 18:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 19:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 21:\nyy.checkout($$[$0])\nbreak;\ncase 22:\nyy.branch($$[$0])\nbreak;\ncase 23:\nyy.branch($$[$0-2], $$[$0])\nbreak;\ncase 24:\nyy.merge($$[$0])\nbreak;\ncase 25:\nyy.merge($$[$0-2], $$[$0])\nbreak;\ncase 26:\nyy.commit($$[$0])\nbreak;\ncase 27:\nyy.commit('','',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 28:\nyy.commit('','',$$[$0],'')\nbreak;\ncase 29:\nyy.commit('','',$$[$0],$$[$0-2])\nbreak;\ncase 30:\nyy.commit('','',$$[$0-2],$$[$0])\nbreak;\ncase 31:\nyy.commit('',$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 32:\nyy.commit('',$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 33:\nyy.commit('',$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 34:\nyy.commit('',$$[$0-2],$$[$0],'')\nbreak;\ncase 35:\nyy.commit('',$$[$0],$$[$0-2],'')\nbreak;\ncase 36:\nyy.commit('',$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 37:\nyy.commit('',$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 38:\nyy.commit('',$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 39:\nyy.commit('',$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 40:\nyy.commit('',$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 41:\nyy.commit('',$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 42:\nyy.commit($$[$0],'',yy.commitType.NORMAL,'')\nbreak;\ncase 43:\nyy.commit($$[$0],'',yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 44:\nyy.commit($$[$0-2],'',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 45:\nyy.commit($$[$0-2],'',$$[$0],'')\nbreak;\ncase 46:\nyy.commit($$[$0],'',$$[$0-2],'')\nbreak;\ncase 47:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,'')\nbreak;\ncase 48:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 49:\nyy.commit($$[$0-4],'',$$[$0-2],$$[$0])\nbreak;\ncase 50:\nyy.commit($$[$0-4],'',$$[$0],$$[$0-2])\nbreak;\ncase 51:\nyy.commit($$[$0-2],'',$$[$0-4],$$[$0])\nbreak;\ncase 52:\nyy.commit($$[$0],'',$$[$0-4],$$[$0-2])\nbreak;\ncase 53:\nyy.commit($$[$0],'',$$[$0-2],$$[$0-4])\nbreak;\ncase 54:\nyy.commit($$[$0-2],'',$$[$0],$$[$0-4])\nbreak;\ncase 55:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],'')\nbreak;\ncase 56:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],'')\nbreak;\ncase 57:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],'')\nbreak;\ncase 58:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],'')\nbreak;\ncase 59:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],'')\nbreak;\ncase 60:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],'')\nbreak;\ncase 61:\nyy.commit($$[$0-4],$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 62:\nyy.commit($$[$0-4],$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 63:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 64:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 65:\nyy.commit($$[$0],$$[$0-4],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 66:\nyy.commit($$[$0-2],$$[$0-4],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 67:\nyy.commit($$[$0-6],$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 68:\nyy.commit($$[$0-6],$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 69:\nyy.commit($$[$0-6],$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 70:\nyy.commit($$[$0-6],$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 71:\nyy.commit($$[$0-6],$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 72:\nyy.commit($$[$0-6],$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 73:\nyy.commit($$[$0-4],$$[$0-6],$$[$0-2],$$[$0])\nbreak;\ncase 74:\nyy.commit($$[$0-4],$$[$0-6],$$[$0],$$[$0-2])\nbreak;\ncase 75:\nyy.commit($$[$0-2],$$[$0-6],$$[$0-4],$$[$0])\nbreak;\ncase 76:\nyy.commit($$[$0],$$[$0-6],$$[$0-4],$$[$0-2])\nbreak;\ncase 77:\nyy.commit($$[$0-2],$$[$0-6],$$[$0],$$[$0-4])\nbreak;\ncase 78:\nyy.commit($$[$0],$$[$0-6],$$[$0-2],$$[$0-4])\nbreak;\ncase 79:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],$$[$0-6])\nbreak;\ncase 80:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],$$[$0-6])\nbreak;\ncase 81:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],$$[$0-6])\nbreak;\ncase 82:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],$$[$0-6])\nbreak;\ncase 83:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],$$[$0-6])\nbreak;\ncase 84:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],$$[$0-6])\nbreak;\ncase 85:\nyy.commit($$[$0-2],$$[$0-4],$$[$0-6],$$[$0])\nbreak;\ncase 86:\nyy.commit($$[$0],$$[$0-4],$$[$0-6],$$[$0-2])\nbreak;\ncase 87:\nyy.commit($$[$0-2],$$[$0],$$[$0-6],$$[$0-4])\nbreak;\ncase 88:\nyy.commit($$[$0],$$[$0-2],$$[$0-6],$$[$0-4])\nbreak;\ncase 89:\nyy.commit($$[$0-4],$$[$0-2],$$[$0-6],$$[$0])\nbreak;\ncase 90:\nyy.commit($$[$0-4],$$[$0],$$[$0-6],$$[$0-2])\nbreak;\ncase 91:\nthis.$ = \"\"\nbreak;\ncase 92:\nthis.$=$$[$0]\nbreak;\ncase 93:\n this.$=yy.commitType.NORMAL;\nbreak;\ncase 94:\n this.$=yy.commitType.REVERSE;\nbreak;\ncase 95:\n this.$=yy.commitType.HIGHLIGHT;\nbreak;\ncase 98:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 99:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 100:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 101:\n yy.parseDirective('}%%', 'close_directive', 'gitGraph'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,8:$V1,14:$V2,43:8,47:$V3,51:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,8:$V1,14:$V2,43:8,47:$V3,51:$V4},{3:11,4:2,5:3,6:$V0,8:$V1,14:$V2,43:8,47:$V3,51:$V4},{7:12,8:$V5,9:[1,13],10:[1,14],11:15,14:$V6},o($V7,[2,102]),o($V7,[2,103]),o($V7,[2,104]),{44:17,48:[1,18]},{48:[2,98]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:$V5,11:15,14:$V6},{9:[1,21]},o($V8,[2,10],{12:22,13:[1,23]}),o($V9,[2,9]),{9:[1,25],45:24,50:$Va},o([9,50],[2,99]),{1:[2,3]},{8:[1,27]},{7:28,8:$V5,11:15,14:$V6},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:[1,34],21:[1,35],23:[1,36],24:[1,37],25:38,26:[1,39],28:[1,42],31:[1,41],34:[1,40]},o($V9,[2,8]),o($Vb,[2,96]),{46:43,49:[1,44]},o($Vb,[2,101]),{1:[2,4]},{8:[1,45]},o($V8,[2,11]),{4:46,8:$V1,14:$V2,51:$V4},o($V8,[2,13]),o($Vc,[2,14]),o($Vc,[2,15]),{20:[1,47]},{22:[1,48]},o($Vc,[2,18]),o($Vc,[2,19]),o($Vc,[2,20]),{27:[1,49]},o($Vc,[2,91],{35:50,32:[1,51],33:[1,55],36:[1,52],38:[1,53],39:[1,54]}),{27:[1,56]},{27:[1,57]},{45:58,50:$Va},{50:[2,100]},{1:[2,5]},o($V8,[2,12]),o($Vc,[2,16]),o($Vc,[2,17]),o($Vc,[2,21]),o($Vc,[2,26]),{33:[1,59]},{37:60,40:$Vd,41:$Ve,42:$Vf},{33:[1,64]},{33:[1,65]},o($Vc,[2,92]),o($Vc,[2,24],{32:[1,66]}),o($Vc,[2,22],{29:[1,67]}),o($Vb,[2,97]),o($Vc,[2,27],{36:[1,68],38:[1,69],39:[1,70]}),o($Vc,[2,28],{32:[1,71],38:[1,72],39:[1,73]}),o($Vg,[2,93]),o($Vg,[2,94]),o($Vg,[2,95]),o($Vc,[2,31],{32:[1,74],36:[1,75],39:[1,76]}),o($Vc,[2,42],{32:[1,77],36:[1,78],38:[1,79]}),{33:[1,80]},{30:[1,81]},{37:82,40:$Vd,41:$Ve,42:$Vf},{33:[1,83]},{33:[1,84]},{33:[1,85]},{33:[1,86]},{33:[1,87]},{33:[1,88]},{37:89,40:$Vd,41:$Ve,42:$Vf},{33:[1,90]},{33:[1,91]},{37:92,40:$Vd,41:$Ve,42:$Vf},{33:[1,93]},o($Vc,[2,25]),o($Vc,[2,23]),o($Vc,[2,29],{38:[1,94],39:[1,95]}),o($Vc,[2,33],{36:[1,96],39:[1,97]}),o($Vc,[2,43],{36:[1,98],38:[1,99]}),o($Vc,[2,30],{38:[1,100],39:[1,101]}),o($Vc,[2,35],{32:[1,102],39:[1,103]}),o($Vc,[2,46],{32:[1,104],38:[1,105]}),o($Vc,[2,32],{36:[1,106],39:[1,107]}),o($Vc,[2,34],{32:[1,108],39:[1,109]}),o($Vc,[2,47],{32:[1,111],36:[1,110]}),o($Vc,[2,44],{36:[1,112],38:[1,113]}),o($Vc,[2,45],{32:[1,114],38:[1,115]}),o($Vc,[2,48],{32:[1,117],36:[1,116]}),{33:[1,118]},{33:[1,119]},{37:120,40:$Vd,41:$Ve,42:$Vf},{33:[1,121]},{37:122,40:$Vd,41:$Ve,42:$Vf},{33:[1,123]},{33:[1,124]},{33:[1,125]},{33:[1,126]},{33:[1,127]},{33:[1,128]},{33:[1,129]},{37:130,40:$Vd,41:$Ve,42:$Vf},{33:[1,131]},{33:[1,132]},{33:[1,133]},{37:134,40:$Vd,41:$Ve,42:$Vf},{33:[1,135]},{37:136,40:$Vd,41:$Ve,42:$Vf},{33:[1,137]},{33:[1,138]},{33:[1,139]},{37:140,40:$Vd,41:$Ve,42:$Vf},{33:[1,141]},o($Vc,[2,40],{39:[1,142]}),o($Vc,[2,53],{38:[1,143]}),o($Vc,[2,41],{39:[1,144]}),o($Vc,[2,64],{36:[1,145]}),o($Vc,[2,54],{38:[1,146]}),o($Vc,[2,63],{36:[1,147]}),o($Vc,[2,39],{39:[1,148]}),o($Vc,[2,52],{38:[1,149]}),o($Vc,[2,38],{39:[1,150]}),o($Vc,[2,58],{32:[1,151]}),o($Vc,[2,51],{38:[1,152]}),o($Vc,[2,57],{32:[1,153]}),o($Vc,[2,37],{39:[1,154]}),o($Vc,[2,65],{36:[1,155]}),o($Vc,[2,36],{39:[1,156]}),o($Vc,[2,59],{32:[1,157]}),o($Vc,[2,60],{32:[1,158]}),o($Vc,[2,66],{36:[1,159]}),o($Vc,[2,50],{38:[1,160]}),o($Vc,[2,61],{36:[1,161]}),o($Vc,[2,49],{38:[1,162]}),o($Vc,[2,55],{32:[1,163]}),o($Vc,[2,56],{32:[1,164]}),o($Vc,[2,62],{36:[1,165]}),{33:[1,166]},{33:[1,167]},{33:[1,168]},{37:169,40:$Vd,41:$Ve,42:$Vf},{33:[1,170]},{37:171,40:$Vd,41:$Ve,42:$Vf},{33:[1,172]},{33:[1,173]},{33:[1,174]},{33:[1,175]},{33:[1,176]},{33:[1,177]},{33:[1,178]},{37:179,40:$Vd,41:$Ve,42:$Vf},{33:[1,180]},{33:[1,181]},{33:[1,182]},{37:183,40:$Vd,41:$Ve,42:$Vf},{33:[1,184]},{37:185,40:$Vd,41:$Ve,42:$Vf},{33:[1,186]},{33:[1,187]},{33:[1,188]},{37:189,40:$Vd,41:$Ve,42:$Vf},o($Vc,[2,81]),o($Vc,[2,82]),o($Vc,[2,79]),o($Vc,[2,80]),o($Vc,[2,84]),o($Vc,[2,83]),o($Vc,[2,88]),o($Vc,[2,87]),o($Vc,[2,86]),o($Vc,[2,85]),o($Vc,[2,90]),o($Vc,[2,89]),o($Vc,[2,78]),o($Vc,[2,77]),o($Vc,[2,76]),o($Vc,[2,75]),o($Vc,[2,73]),o($Vc,[2,74]),o($Vc,[2,72]),o($Vc,[2,71]),o($Vc,[2,70]),o($Vc,[2,69]),o($Vc,[2,67]),o($Vc,[2,68])],\ndefaultActions: {9:[2,98],10:[2,1],11:[2,2],19:[2,3],27:[2,4],44:[2,100],45:[2,5]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 47; \nbreak;\ncase 1: this.begin('type_directive'); return 48; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 9; \nbreak;\ncase 3: this.popState(); this.popState(); return 50; \nbreak;\ncase 4:return 49;\nbreak;\ncase 5: this.begin(\"acc_title\");return 19; \nbreak;\ncase 6: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 7: this.begin(\"acc_descr\");return 21; \nbreak;\ncase 8: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 9: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 10: this.popState(); \nbreak;\ncase 11:return \"acc_descr_multiline_value\";\nbreak;\ncase 12:/*{console.log('New line');return 14;}*/ return 14;\nbreak;\ncase 13:/* skip all whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16:return 6;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 38;\nbreak;\ncase 19:return 36;\nbreak;\ncase 20:return 39;\nbreak;\ncase 21:return 40;\nbreak;\ncase 22:return 41;\nbreak;\ncase 23:return 42;\nbreak;\ncase 24:return 32;\nbreak;\ncase 25:return 28;\nbreak;\ncase 26:return 29;\nbreak;\ncase 27:return 31;\nbreak;\ncase 28:return 26;\nbreak;\ncase 29:return 10;\nbreak;\ncase 30:return 10;\nbreak;\ncase 31:return 9;\nbreak;\ncase 32:return 'CARET'\nbreak;\ncase 33:this.begin(\"options\"); //\nbreak;\ncase 34:this.popState(); // not used anymore in the renderer, fixed for backward compatibility\nbreak;\ncase 35:return 13; //\nbreak;\ncase 36:this.begin(\"string\");\nbreak;\ncase 37:this.popState();\nbreak;\ncase 38:return 33;\nbreak;\ncase 39:return 30;\nbreak;\ncase 40:return 27;\nbreak;\ncase 41:return 8;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\\b)/i,/^(?:REVERSE\\b)/i,/^(?:HIGHLIGHT\\b)/i,/^(?:tag:)/i,/^(?:branch\\b)/i,/^(?:order:)/i,/^(?:merge\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:[ \\r\\n\\t]+end\\b)/i,/^(?:[\\s\\S]+(?=[ \\r\\n\\t]+end))/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[0-9]+)/i,/^(?:[a-zA-Z][-_\\./a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[10,11],\"inclusive\":false},\"acc_descr\":{\"rules\":[8],\"inclusive\":false},\"acc_title\":{\"rules\":[6],\"inclusive\":false},\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"options\":{\"rules\":[34,35],\"inclusive\":false},\"string\":{\"rules\":[37,38],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,39,40,41],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\r\n\t// Pre-lexer code can go here\r\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,11,13,15,17,19,20,26,27,28,29],$V6=[2,5],$V7=[1,6,11,13,15,17,19,20,26,27,28,29],$V8=[26,27,28],$V9=[2,8],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,21],$Ve=[1,22],$Vf=[1,23],$Vg=[1,28],$Vh=[6,26,27,28,29];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"PIE\":6,\"document\":7,\"showData\":8,\"line\":9,\"statement\":10,\"txt\":11,\"value\":12,\"title\":13,\"title_value\":14,\"acc_title\":15,\"acc_title_value\":16,\"acc_descr\":17,\"acc_descr_value\":18,\"acc_descr_multiline_value\":19,\"section\":20,\"openDirective\":21,\"typeDirective\":22,\"closeDirective\":23,\":\":24,\"argDirective\":25,\"NEWLINE\":26,\";\":27,\"EOF\":28,\"open_directive\":29,\"type_directive\":30,\"arg_directive\":31,\"close_directive\":32,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",8:\"showData\",11:\"txt\",12:\"value\",13:\"title\",14:\"title_value\",15:\"acc_title\",16:\"acc_title_value\",17:\"acc_descr\",18:\"acc_descr_value\",19:\"acc_descr_multiline_value\",20:\"section\",24:\":\",26:\"NEWLINE\",27:\";\",28:\"EOF\",29:\"open_directive\",30:\"type_directive\",31:\"arg_directive\",32:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[21,1],[22,1],[25,1],[23,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\nyy.setShowData(true);\nbreak;\ncase 7:\n this.$ = $$[$0-1] \nbreak;\ncase 9:\n yy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 10:\n this.$=$$[$0].trim();yy.setPieTitle(this.$); \nbreak;\ncase 11:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 12: case 13:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 14:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 21:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 22:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 23:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 24:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,21:8,26:$V1,27:$V2,28:$V3,29:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,21:8,26:$V1,27:$V2,28:$V3,29:$V4},{3:11,4:2,5:3,6:$V0,21:8,26:$V1,27:$V2,28:$V3,29:$V4},o($V5,$V6,{7:12,8:[1,13]}),o($V7,[2,18]),o($V7,[2,19]),o($V7,[2,20]),{22:14,30:[1,15]},{30:[2,21]},{1:[2,1]},{1:[2,2]},o($V8,$V9,{21:8,9:16,10:17,5:24,1:[2,3],11:$Va,13:$Vb,15:$Vc,17:$Vd,19:$Ve,20:$Vf,29:$V4}),o($V5,$V6,{7:25}),{23:26,24:[1,27],32:$Vg},o([24,32],[2,22]),o($V5,[2,6]),{4:29,26:$V1,27:$V2,28:$V3},{12:[1,30]},{14:[1,31]},{16:[1,32]},{18:[1,33]},o($V8,[2,13]),o($V8,[2,14]),o($V8,[2,15]),o($V8,$V9,{21:8,9:16,10:17,5:24,1:[2,4],11:$Va,13:$Vb,15:$Vc,17:$Vd,19:$Ve,20:$Vf,29:$V4}),o($Vh,[2,16]),{25:34,31:[1,35]},o($Vh,[2,24]),o($V5,[2,7]),o($V8,[2,9]),o($V8,[2,10]),o($V8,[2,11]),o($V8,[2,12]),{23:36,32:$Vg},{32:[2,23]},o($Vh,[2,17])],\ndefaultActions: {9:[2,21],10:[2,1],11:[2,2],35:[2,23]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 29; \nbreak;\ncase 1: this.begin('type_directive'); return 30; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 24; \nbreak;\ncase 3: this.popState(); this.popState(); return 32; \nbreak;\ncase 4:return 31;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 26;\nbreak;\ncase 8:/* do nothing */\nbreak;\ncase 9:/* ignore */\nbreak;\ncase 10: this.begin(\"title\");return 13; \nbreak;\ncase 11: this.popState(); return \"title_value\"; \nbreak;\ncase 12: this.begin(\"acc_title\");return 15; \nbreak;\ncase 13: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 14: this.begin(\"acc_descr\");return 17; \nbreak;\ncase 15: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 16: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 17: this.popState(); \nbreak;\ncase 18:return \"acc_descr_multiline_value\";\nbreak;\ncase 19: this.begin(\"string\"); \nbreak;\ncase 20: this.popState(); \nbreak;\ncase 21: return \"txt\"; \nbreak;\ncase 22:return 6;\nbreak;\ncase 23:return 8;\nbreak;\ncase 24:return \"value\";\nbreak;\ncase 25:return 28;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:[\\s]+)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:pie\\b)/i,/^(?:showData\\b)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[17,18],\"inclusive\":false},\"acc_descr\":{\"rules\":[15],\"inclusive\":false},\"acc_title\":{\"rules\":[13],\"inclusive\":false},\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[20,21],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,8],$V5=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],$V6=[1,22],$V7=[2,13],$V8=[1,26],$V9=[1,27],$Va=[1,28],$Vb=[1,29],$Vc=[1,30],$Vd=[1,31],$Ve=[1,24],$Vf=[1,32],$Vg=[1,33],$Vh=[1,36],$Vi=[71,72],$Vj=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],$Vk=[1,56],$Vl=[1,57],$Vm=[1,58],$Vn=[1,59],$Vo=[1,60],$Vp=[1,61],$Vq=[1,62],$Vr=[62,63],$Vs=[1,74],$Vt=[1,70],$Vu=[1,71],$Vv=[1,72],$Vw=[1,73],$Vx=[1,75],$Vy=[1,79],$Vz=[1,80],$VA=[1,77],$VB=[1,78],$VC=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"NEWLINE\":5,\"RD\":6,\"diagram\":7,\"EOF\":8,\"openDirective\":9,\"typeDirective\":10,\"closeDirective\":11,\":\":12,\"argDirective\":13,\"acc_title\":14,\"acc_title_value\":15,\"acc_descr\":16,\"acc_descr_value\":17,\"acc_descr_multiline_value\":18,\"open_directive\":19,\"type_directive\":20,\"arg_directive\":21,\"close_directive\":22,\"requirementDef\":23,\"elementDef\":24,\"relationshipDef\":25,\"requirementType\":26,\"requirementName\":27,\"STRUCT_START\":28,\"requirementBody\":29,\"ID\":30,\"COLONSEP\":31,\"id\":32,\"TEXT\":33,\"text\":34,\"RISK\":35,\"riskLevel\":36,\"VERIFYMTHD\":37,\"verifyType\":38,\"STRUCT_STOP\":39,\"REQUIREMENT\":40,\"FUNCTIONAL_REQUIREMENT\":41,\"INTERFACE_REQUIREMENT\":42,\"PERFORMANCE_REQUIREMENT\":43,\"PHYSICAL_REQUIREMENT\":44,\"DESIGN_CONSTRAINT\":45,\"LOW_RISK\":46,\"MED_RISK\":47,\"HIGH_RISK\":48,\"VERIFY_ANALYSIS\":49,\"VERIFY_DEMONSTRATION\":50,\"VERIFY_INSPECTION\":51,\"VERIFY_TEST\":52,\"ELEMENT\":53,\"elementName\":54,\"elementBody\":55,\"TYPE\":56,\"type\":57,\"DOCREF\":58,\"ref\":59,\"END_ARROW_L\":60,\"relationship\":61,\"LINE\":62,\"END_ARROW_R\":63,\"CONTAINS\":64,\"COPIES\":65,\"DERIVES\":66,\"SATISFIES\":67,\"VERIFIES\":68,\"REFINES\":69,\"TRACES\":70,\"unqString\":71,\"qString\":72,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",12:\":\",14:\"acc_title\",15:\"acc_title_value\",16:\"acc_descr\",17:\"acc_descr_value\",18:\"acc_descr_multiline_value\",19:\"open_directive\",20:\"type_directive\",21:\"arg_directive\",22:\"close_directive\",28:\"STRUCT_START\",30:\"ID\",31:\"COLONSEP\",33:\"TEXT\",35:\"RISK\",37:\"VERIFYMTHD\",39:\"STRUCT_STOP\",40:\"REQUIREMENT\",41:\"FUNCTIONAL_REQUIREMENT\",42:\"INTERFACE_REQUIREMENT\",43:\"PERFORMANCE_REQUIREMENT\",44:\"PHYSICAL_REQUIREMENT\",45:\"DESIGN_CONSTRAINT\",46:\"LOW_RISK\",47:\"MED_RISK\",48:\"HIGH_RISK\",49:\"VERIFY_ANALYSIS\",50:\"VERIFY_DEMONSTRATION\",51:\"VERIFY_INSPECTION\",52:\"VERIFY_TEST\",53:\"ELEMENT\",56:\"TYPE\",58:\"DOCREF\",60:\"END_ARROW_L\",62:\"LINE\",63:\"END_ARROW_R\",64:\"CONTAINS\",65:\"COPIES\",66:\"DERIVES\",67:\"SATISFIES\",68:\"VERIFIES\",69:\"REFINES\",70:\"TRACES\",71:\"unqString\",72:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 7: case 8:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 9:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 10:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 11:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 12:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\ncase 13:\n this.$ = [] \nbreak;\ncase 19:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 20:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 21:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 22:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 23:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 26:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 27:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 28:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 29:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 30:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 31:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 32:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 33:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 34:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 35:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 36:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 37:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 38:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 39:\n yy.addElement($$[$0-3]) \nbreak;\ncase 40:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 41:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 44:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 45:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 46:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 47:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 48:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 49:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 50:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 51:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 52:\n this.$=yy.Relationships.TRACES;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:4,14:$V1,16:$V2,18:$V3,19:$V4},{1:[3]},{3:10,4:2,5:[1,9],6:$V0,9:4,14:$V1,16:$V2,18:$V3,19:$V4},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},o($V5,[2,8]),{20:[2,9]},{3:16,4:2,6:$V0,9:4,14:$V1,16:$V2,18:$V3,19:$V4},{1:[2,2]},{4:21,5:$V6,7:17,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{11:34,12:[1,35],22:$Vh},o([12,22],[2,10]),o($V5,[2,6]),o($V5,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:$V6,7:38,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{4:21,5:$V6,7:39,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{4:21,5:$V6,7:40,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{4:21,5:$V6,7:41,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{4:21,5:$V6,7:42,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},o($Vi,[2,26]),o($Vi,[2,27]),o($Vi,[2,28]),o($Vi,[2,29]),o($Vi,[2,30]),o($Vi,[2,31]),o($Vj,[2,55]),o($Vj,[2,56]),o($V5,[2,4]),{13:51,21:[1,52]},o($V5,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:$Vk,65:$Vl,66:$Vm,67:$Vn,68:$Vo,69:$Vp,70:$Vq},{61:63,64:$Vk,65:$Vl,66:$Vm,67:$Vn,68:$Vo,69:$Vp,70:$Vq},{11:64,22:$Vh},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},o($Vr,[2,46]),o($Vr,[2,47]),o($Vr,[2,48]),o($Vr,[2,49]),o($Vr,[2,50]),o($Vr,[2,51]),o($Vr,[2,52]),{63:[1,68]},o($V5,[2,5]),{5:$Vs,29:69,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vy,39:$Vz,55:76,56:$VA,58:$VB},{32:81,71:$Vf,72:$Vg},{32:82,71:$Vf,72:$Vg},o($VC,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:$Vs,29:87,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},o($VC,[2,25]),o($VC,[2,39]),{31:[1,88]},{31:[1,89]},{5:$Vy,39:$Vz,55:90,56:$VA,58:$VB},o($VC,[2,43]),o($VC,[2,44]),o($VC,[2,45]),{32:91,71:$Vf,72:$Vg},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},o($VC,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},o($VC,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:$Vs,29:116,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vs,29:117,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vs,29:118,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vs,29:119,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vy,39:$Vz,55:120,56:$VA,58:$VB},{5:$Vy,39:$Vz,55:121,56:$VA,58:$VB},o($VC,[2,20]),o($VC,[2,21]),o($VC,[2,22]),o($VC,[2,23]),o($VC,[2,40]),o($VC,[2,41])],\ndefaultActions: {8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 19; \nbreak;\ncase 1: this.begin('type_directive'); return 20; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 12; \nbreak;\ncase 3: this.popState(); this.popState(); return 22; \nbreak;\ncase 4:return 21;\nbreak;\ncase 5:return 'title';\nbreak;\ncase 6: this.begin(\"acc_title\");return 14; \nbreak;\ncase 7: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 8: this.begin(\"acc_descr\");return 16; \nbreak;\ncase 9: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 10: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 11: this.popState(); \nbreak;\ncase 12:return \"acc_descr_multiline_value\";\nbreak;\ncase 13:return 5;\nbreak;\ncase 14:/* skip all whitespace */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16:/* skip comments */\nbreak;\ncase 17:return 8;\nbreak;\ncase 18:return 6;\nbreak;\ncase 19:return 28;\nbreak;\ncase 20:return 39;\nbreak;\ncase 21:return 31;\nbreak;\ncase 22:return 30;\nbreak;\ncase 23:return 33;\nbreak;\ncase 24:return 35;\nbreak;\ncase 25:return 37;\nbreak;\ncase 26:return 40;\nbreak;\ncase 27:return 41;\nbreak;\ncase 28:return 42;\nbreak;\ncase 29:return 43;\nbreak;\ncase 30:return 44;\nbreak;\ncase 31:return 45;\nbreak;\ncase 32:return 46;\nbreak;\ncase 33:return 47;\nbreak;\ncase 34:return 48;\nbreak;\ncase 35:return 49;\nbreak;\ncase 36:return 50;\nbreak;\ncase 37:return 51;\nbreak;\ncase 38:return 52;\nbreak;\ncase 39:return 53;\nbreak;\ncase 40:return 64;\nbreak;\ncase 41:return 65;\nbreak;\ncase 42:return 66;\nbreak;\ncase 43:return 67;\nbreak;\ncase 44:return 68;\nbreak;\ncase 45:return 69;\nbreak;\ncase 46:return 70;\nbreak;\ncase 47:return 56;\nbreak;\ncase 48:return 58;\nbreak;\ncase 49:return 60;\nbreak;\ncase 50:return 63;\nbreak;\ncase 51:return 62;\nbreak;\ncase 52: this.begin(\"string\"); \nbreak;\ncase 53: this.popState(); \nbreak;\ncase 54: return \"qString\"; \nbreak;\ncase 55: yy_.yytext = yy_.yytext.trim(); return 71;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::)/i,/^(?:id\\b)/i,/^(?:text\\b)/i,/^(?:risk\\b)/i,/^(?:verifyMethod\\b)/i,/^(?:requirement\\b)/i,/^(?:functionalRequirement\\b)/i,/^(?:interfaceRequirement\\b)/i,/^(?:performanceRequirement\\b)/i,/^(?:physicalRequirement\\b)/i,/^(?:designConstraint\\b)/i,/^(?:low\\b)/i,/^(?:medium\\b)/i,/^(?:high\\b)/i,/^(?:analysis\\b)/i,/^(?:demonstration\\b)/i,/^(?:inspection\\b)/i,/^(?:test\\b)/i,/^(?:element\\b)/i,/^(?:contains\\b)/i,/^(?:copies\\b)/i,/^(?:derives\\b)/i,/^(?:satisfies\\b)/i,/^(?:verifies\\b)/i,/^(?:refines\\b)/i,/^(?:traces\\b)/i,/^(?:type\\b)/i,/^(?:docref\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[11,12],\"inclusive\":false},\"acc_descr\":{\"rules\":[9],\"inclusive\":false},\"acc_title\":{\"rules\":[7],\"inclusive\":false},\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"unqString\":{\"rules\":[],\"inclusive\":false},\"token\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[53,54],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,19],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,29],$Vd=[1,30],$Ve=[1,31],$Vf=[1,32],$Vg=[1,33],$Vh=[1,34],$Vi=[1,35],$Vj=[1,36],$Vk=[1,37],$Vl=[1,38],$Vm=[1,41],$Vn=[1,42],$Vo=[1,43],$Vp=[1,44],$Vq=[1,45],$Vr=[1,46],$Vs=[1,49],$Vt=[1,4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,48,49,54,55,56,57,65,75],$Vu=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,49,54,55,56,57,65,75],$Vv=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,48,49,54,55,56,57,65,75],$Vw=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,49,54,55,56,57,65,75],$Vx=[63,64,65],$Vy=[1,114],$Vz=[1,4,5,7,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,48,49,54,55,56,57,65,75];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"participant_actor\":20,\"signal\":21,\"autonumber\":22,\"NUM\":23,\"off\":24,\"activate\":25,\"deactivate\":26,\"note_statement\":27,\"links_statement\":28,\"link_statement\":29,\"properties_statement\":30,\"details_statement\":31,\"title\":32,\"legacy_title\":33,\"acc_title\":34,\"acc_title_value\":35,\"acc_descr\":36,\"acc_descr_value\":37,\"acc_descr_multiline_value\":38,\"loop\":39,\"end\":40,\"rect\":41,\"opt\":42,\"alt\":43,\"else_sections\":44,\"par\":45,\"par_sections\":46,\"and\":47,\"else\":48,\"note\":49,\"placement\":50,\"text2\":51,\"over\":52,\"actor_pair\":53,\"links\":54,\"link\":55,\"properties\":56,\"details\":57,\"spaceList\":58,\",\":59,\"left_of\":60,\"right_of\":61,\"signaltype\":62,\"+\":63,\"-\":64,\"ACTOR\":65,\"SOLID_OPEN_ARROW\":66,\"DOTTED_OPEN_ARROW\":67,\"SOLID_ARROW\":68,\"DOTTED_ARROW\":69,\"SOLID_CROSS\":70,\"DOTTED_CROSS\":71,\"SOLID_POINT\":72,\"DOTTED_POINT\":73,\"TXT\":74,\"open_directive\":75,\"type_directive\":76,\"arg_directive\":77,\"close_directive\":78,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",20:\"participant_actor\",22:\"autonumber\",23:\"NUM\",24:\"off\",25:\"activate\",26:\"deactivate\",32:\"title\",33:\"legacy_title\",34:\"acc_title\",35:\"acc_title_value\",36:\"acc_descr\",37:\"acc_descr_value\",38:\"acc_descr_multiline_value\",39:\"loop\",40:\"end\",41:\"rect\",42:\"opt\",43:\"alt\",45:\"par\",47:\"and\",48:\"else\",49:\"note\",52:\"over\",54:\"links\",55:\"link\",56:\"properties\",57:\"details\",59:\",\",60:\"left_of\",61:\"right_of\",63:\"+\",64:\"-\",65:\"ACTOR\",66:\"SOLID_OPEN_ARROW\",67:\"DOTTED_OPEN_ARROW\",68:\"SOLID_ARROW\",69:\"DOTTED_ARROW\",70:\"SOLID_CROSS\",71:\"DOTTED_CROSS\",72:\"SOLID_POINT\",73:\"DOTTED_POINT\",74:\"TXT\",75:\"open_directive\",76:\"type_directive\",77:\"arg_directive\",78:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[46,1],[46,4],[44,1],[44,4],[27,4],[27,4],[28,3],[29,3],[30,3],[31,3],[58,2],[58,1],[53,3],[53,1],[50,1],[50,1],[21,5],[21,5],[21,4],[17,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[51,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\n$$[$0-1].type='addParticipant';this.$=$$[$0-1];\nbreak;\ncase 14:\n$$[$0-3].type='addActor';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 15:\n$$[$0-1].type='addActor'; this.$=$$[$0-1];\nbreak;\ncase 17:\n this.$= {type:'sequenceIndex',sequenceIndex: Number($$[$0-2]), sequenceIndexStep:Number($$[$0-1]), sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 18:\n this.$ = {type:'sequenceIndex',sequenceIndex: Number($$[$0-1]), sequenceIndexStep:1, sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 19:\n this.$ = {type:'sequenceIndex', sequenceVisible:false, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 20:\nthis.$ = {type:'sequenceIndex', sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER}; \nbreak;\ncase 21:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 22:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 28:\nyy.setDiagramTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 29:\nyy.setDiagramTitle($$[$0].substring(7));this.$=$$[$0].substring(7);\nbreak;\ncase 30:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 31: case 32:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 33:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 34:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 35:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 36:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 37:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 40:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 42:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 43:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 44:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 45:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 46:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 47:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 48:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 51:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 52:\n this.$ = $$[$0]; \nbreak;\ncase 53:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 54:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 55:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 56:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 57:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 58:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 59:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 60:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 61:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 62:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 63:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 64:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 65:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 66:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 67:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 68:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 69:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 70:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 71:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,75:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,75:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,75:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,75:$V3},o([1,4,5,16,20,22,25,26,32,33,34,36,38,39,41,42,43,45,49,54,55,56,57,65,75],$V4,{8:11}),{12:12,76:[1,13]},{76:[2,68]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{13:47,14:[1,48],78:$Vs},o([14,78],[2,69]),o($Vt,[2,6]),{6:39,10:50,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},o($Vt,[2,8]),o($Vt,[2,9]),{17:51,65:$Vr},{17:52,65:$Vr},{5:[1,53]},{5:[1,56],23:[1,54],24:[1,55]},{17:57,65:$Vr},{17:58,65:$Vr},{5:[1,59]},{5:[1,60]},{5:[1,61]},{5:[1,62]},{5:[1,63]},o($Vt,[2,28]),o($Vt,[2,29]),{35:[1,64]},{37:[1,65]},o($Vt,[2,32]),{19:[1,66]},{19:[1,67]},{19:[1,68]},{19:[1,69]},{19:[1,70]},o($Vt,[2,38]),{62:71,66:[1,72],67:[1,73],68:[1,74],69:[1,75],70:[1,76],71:[1,77],72:[1,78],73:[1,79]},{50:80,52:[1,81],60:[1,82],61:[1,83]},{17:84,65:$Vr},{17:85,65:$Vr},{17:86,65:$Vr},{17:87,65:$Vr},o([5,18,59,66,67,68,69,70,71,72,73,74],[2,58]),{5:[1,88]},{15:89,77:[1,90]},{5:[2,71]},o($Vt,[2,7]),{5:[1,92],18:[1,91]},{5:[1,94],18:[1,93]},o($Vt,[2,16]),{5:[1,96],23:[1,95]},{5:[1,97]},o($Vt,[2,20]),{5:[1,98]},{5:[1,99]},o($Vt,[2,23]),o($Vt,[2,24]),o($Vt,[2,25]),o($Vt,[2,26]),o($Vt,[2,27]),o($Vt,[2,30]),o($Vt,[2,31]),o($Vu,$V4,{8:100}),o($Vu,$V4,{8:101}),o($Vu,$V4,{8:102}),o($Vv,$V4,{44:103,8:104}),o($Vw,$V4,{46:105,8:106}),{17:109,63:[1,107],64:[1,108],65:$Vr},o($Vx,[2,59]),o($Vx,[2,60]),o($Vx,[2,61]),o($Vx,[2,62]),o($Vx,[2,63]),o($Vx,[2,64]),o($Vx,[2,65]),o($Vx,[2,66]),{17:110,65:$Vr},{17:112,53:111,65:$Vr},{65:[2,53]},{65:[2,54]},{51:113,74:$Vy},{51:115,74:$Vy},{51:116,74:$Vy},{51:117,74:$Vy},o($Vz,[2,10]),{13:118,78:$Vs},{78:[2,70]},{19:[1,119]},o($Vt,[2,13]),{19:[1,120]},o($Vt,[2,15]),{5:[1,121]},o($Vt,[2,18]),o($Vt,[2,19]),o($Vt,[2,21]),o($Vt,[2,22]),{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[1,122],41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[1,123],41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[1,124],41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{40:[1,125]},{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[2,41],41:$Vi,42:$Vj,43:$Vk,45:$Vl,48:[1,126],49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{40:[1,127]},{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[2,39],41:$Vi,42:$Vj,43:$Vk,45:$Vl,47:[1,128],49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{17:129,65:$Vr},{17:130,65:$Vr},{51:131,74:$Vy},{51:132,74:$Vy},{51:133,74:$Vy},{59:[1,134],74:[2,52]},{5:[2,45]},{5:[2,67]},{5:[2,46]},{5:[2,47]},{5:[2,48]},{5:[1,135]},{5:[1,136]},{5:[1,137]},o($Vt,[2,17]),o($Vt,[2,33]),o($Vt,[2,34]),o($Vt,[2,35]),o($Vt,[2,36]),{19:[1,138]},o($Vt,[2,37]),{19:[1,139]},{51:140,74:$Vy},{51:141,74:$Vy},{5:[2,57]},{5:[2,43]},{5:[2,44]},{17:142,65:$Vr},o($Vz,[2,11]),o($Vt,[2,12]),o($Vt,[2,14]),o($Vv,$V4,{8:104,44:143}),o($Vw,$V4,{8:106,46:144}),{5:[2,55]},{5:[2,56]},{74:[2,51]},{40:[2,42]},{40:[2,40]}],\ndefaultActions: {7:[2,68],8:[2,1],9:[2,2],10:[2,3],49:[2,71],82:[2,53],83:[2,54],90:[2,70],113:[2,45],114:[2,67],115:[2,46],116:[2,47],117:[2,48],131:[2,57],132:[2,43],133:[2,44],140:[2,55],141:[2,56],142:[2,51],143:[2,42],144:[2,40]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 75; \nbreak;\ncase 1: this.begin('type_directive'); return 76; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 78; \nbreak;\ncase 4:return 77;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 23;\nbreak;\ncase 12: this.begin('ID'); return 16; \nbreak;\ncase 13: this.begin('ID'); return 20; \nbreak;\ncase 14: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 65; \nbreak;\ncase 15: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 16: this.popState(); this.popState(); return 5; \nbreak;\ncase 17: this.begin('LINE'); return 39; \nbreak;\ncase 18: this.begin('LINE'); return 41; \nbreak;\ncase 19: this.begin('LINE'); return 42; \nbreak;\ncase 20: this.begin('LINE'); return 43; \nbreak;\ncase 21: this.begin('LINE'); return 48; \nbreak;\ncase 22: this.begin('LINE'); return 45; \nbreak;\ncase 23: this.begin('LINE'); return 47; \nbreak;\ncase 24: this.popState(); return 19; \nbreak;\ncase 25:return 40;\nbreak;\ncase 26:return 60;\nbreak;\ncase 27:return 61;\nbreak;\ncase 28:return 54;\nbreak;\ncase 29:return 55;\nbreak;\ncase 30:return 56;\nbreak;\ncase 31:return 57;\nbreak;\ncase 32:return 52;\nbreak;\ncase 33:return 49;\nbreak;\ncase 34: this.begin('ID'); return 25; \nbreak;\ncase 35: this.begin('ID'); return 26; \nbreak;\ncase 36:return 32;\nbreak;\ncase 37:return 33;\nbreak;\ncase 38: this.begin(\"acc_title\");return 34; \nbreak;\ncase 39: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 40: this.begin(\"acc_descr\");return 36; \nbreak;\ncase 41: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 42: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 43: this.popState(); \nbreak;\ncase 44:return \"acc_descr_multiline_value\";\nbreak;\ncase 45:return 7;\nbreak;\ncase 46:return 22;\nbreak;\ncase 47:return 24;\nbreak;\ncase 48:return 59;\nbreak;\ncase 49:return 5;\nbreak;\ncase 50: yy_.yytext = yy_.yytext.trim(); return 65; \nbreak;\ncase 51:return 68;\nbreak;\ncase 52:return 69;\nbreak;\ncase 53:return 66;\nbreak;\ncase 54:return 67;\nbreak;\ncase 55:return 70;\nbreak;\ncase 56:return 71;\nbreak;\ncase 57:return 72;\nbreak;\ncase 58:return 73;\nbreak;\ncase 59:return 74;\nbreak;\ncase 60:return 63;\nbreak;\ncase 61:return 64;\nbreak;\ncase 62:return 5;\nbreak;\ncase 63:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[0-9]+(?=[ \\n]+))/i,/^(?:participant\\b)/i,/^(?:actor\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:links\\b)/i,/^(?:link\\b)/i,/^(?:properties\\b)/i,/^(?:details\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:title:\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:off\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[43,44],\"inclusive\":false},\"acc_descr\":{\"rules\":[41],\"inclusive\":false},\"acc_title\":{\"rules\":[39],\"inclusive\":false},\"open_directive\":{\"rules\":[1,8],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3,8],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4,8],\"inclusive\":false},\"ID\":{\"rules\":[7,8,14],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,15,16],\"inclusive\":false},\"LINE\":{\"rules\":[7,8,24],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,12,13,17,18,19,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,42,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,33],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,30],$Vi=[1,31],$Vj=[1,32],$Vk=[1,35],$Vl=[1,36],$Vm=[1,37],$Vn=[1,38],$Vo=[1,34],$Vp=[1,41],$Vq=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],$Vr=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],$Vs=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],$Vt=[4,5,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"idStatement\":11,\"DESCR\":12,\"-->\":13,\"HIDE_EMPTY\":14,\"scale\":15,\"WIDTH\":16,\"COMPOSIT_STATE\":17,\"STRUCT_START\":18,\"STRUCT_STOP\":19,\"STATE_DESCR\":20,\"AS\":21,\"ID\":22,\"FORK\":23,\"JOIN\":24,\"CHOICE\":25,\"CONCURRENT\":26,\"note\":27,\"notePosition\":28,\"NOTE_TEXT\":29,\"direction\":30,\"acc_title\":31,\"acc_title_value\":32,\"acc_descr\":33,\"acc_descr_value\":34,\"acc_descr_multiline_value\":35,\"openDirective\":36,\"typeDirective\":37,\"closeDirective\":38,\":\":39,\"argDirective\":40,\"direction_tb\":41,\"direction_bt\":42,\"direction_rl\":43,\"direction_lr\":44,\"eol\":45,\";\":46,\"EDGE_STATE\":47,\"left_of\":48,\"right_of\":49,\"open_directive\":50,\"type_directive\":51,\"arg_directive\":52,\"close_directive\":53,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",12:\"DESCR\",13:\"-->\",14:\"HIDE_EMPTY\",15:\"scale\",16:\"WIDTH\",17:\"COMPOSIT_STATE\",18:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"STATE_DESCR\",21:\"AS\",22:\"ID\",23:\"FORK\",24:\"JOIN\",25:\"CHOICE\",26:\"CONCURRENT\",27:\"note\",29:\"NOTE_TEXT\",31:\"acc_title\",32:\"acc_title_value\",33:\"acc_descr\",34:\"acc_descr_value\",35:\"acc_descr_multiline_value\",39:\":\",41:\"direction_tb\",42:\"direction_bt\",43:\"direction_rl\",44:\"direction_lr\",46:\";\",47:\"EDGE_STATE\",48:\"left_of\",49:\"right_of\",50:\"open_directive\",51:\"type_directive\",52:\"arg_directive\",53:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[45,1],[45,1],[11,1],[11,1],[28,1],[28,1],[36,1],[37,1],[40,1],[38,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n\n if($$[$0]!='nl'){\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\n }\n // console.warn('Got document',$$[$0-1], $$[$0]);\n \nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$='nl';\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 11:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 12:\n\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\n \nbreak;\ncase 13:\n\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\n \nbreak;\ncase 17:\n\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 18:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 19:\n\n // console.warn('Adding document for state with id zxzx', $$[$0-3], $$[$0-2], yy.getDirection()); yy.addDocument($$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 20:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 21:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 22:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\n \nbreak;\ncase 23:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 24:\n\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 28:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 29: case 30:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 33:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 34:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 35:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 36:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 39: case 40:\nthis.$=$$[$0];\nbreak;\ncase 43:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 44:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 45:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 46:\n yy.parseDirective('}%%', 'close_directive', 'state'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,36:6,50:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,36:6,50:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,36:6,50:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,36:6,50:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],$V4,{8:11}),{37:12,51:[1,13]},{51:[2,43]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:$Vj,36:6,41:$Vk,42:$Vl,43:$Vm,44:$Vn,47:$Vo,50:$V3},{38:39,39:[1,40],53:$Vp},o([39,53],[2,44]),o($Vq,[2,6]),{6:28,10:42,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:$Vj,36:6,41:$Vk,42:$Vl,43:$Vm,44:$Vn,47:$Vo,50:$V3},o($Vq,[2,8]),o($Vq,[2,9]),o($Vq,[2,10],{12:[1,43],13:[1,44]}),o($Vq,[2,14]),{16:[1,45]},o($Vq,[2,16],{18:[1,46]}),{21:[1,47]},o($Vq,[2,20]),o($Vq,[2,21]),o($Vq,[2,22]),o($Vq,[2,23]),{28:48,29:[1,49],48:[1,50],49:[1,51]},o($Vq,[2,26]),o($Vq,[2,27]),{32:[1,52]},{34:[1,53]},o($Vq,[2,30]),o($Vr,[2,39]),o($Vr,[2,40]),o($Vq,[2,33]),o($Vq,[2,34]),o($Vq,[2,35]),o($Vq,[2,36]),o($Vs,[2,31]),{40:54,52:[1,55]},o($Vs,[2,46]),o($Vq,[2,7]),o($Vq,[2,11]),{11:56,22:$Vb,47:$Vo},o($Vq,[2,15]),o($Vt,$V4,{8:57}),{22:[1,58]},{22:[1,59]},{21:[1,60]},{22:[2,41]},{22:[2,42]},o($Vq,[2,28]),o($Vq,[2,29]),{38:61,53:$Vp},{53:[2,45]},o($Vq,[2,12],{12:[1,62]}),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,63],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:$Vj,36:6,41:$Vk,42:$Vl,43:$Vm,44:$Vn,47:$Vo,50:$V3},o($Vq,[2,18],{18:[1,64]}),{29:[1,65]},{22:[1,66]},o($Vs,[2,32]),o($Vq,[2,13]),o($Vq,[2,17]),o($Vt,$V4,{8:67}),o($Vq,[2,24]),o($Vq,[2,25]),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,68],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:$Vj,36:6,41:$Vk,42:$Vl,43:$Vm,44:$Vn,47:$Vo,50:$V3},o($Vq,[2,19])],\ndefaultActions: {7:[2,43],8:[2,1],9:[2,2],10:[2,3],50:[2,41],51:[2,42],55:[2,45]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 41;\nbreak;\ncase 1:return 42;\nbreak;\ncase 2:return 43;\nbreak;\ncase 3:return 44;\nbreak;\ncase 4: this.begin('open_directive'); return 50; \nbreak;\ncase 5: this.begin('type_directive'); return 51; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 39; \nbreak;\ncase 7: this.popState(); this.popState(); return 53; \nbreak;\ncase 8:return 52;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */{ /*console.log('Crap after close');*/ }\nbreak;\ncase 11:return 5;\nbreak;\ncase 12:/* skip all whitespace */\nbreak;\ncase 13:/* skip same-line whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 15; \nbreak;\ncase 17:return 16;\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19: this.begin(\"acc_title\");return 31; \nbreak;\ncase 20: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 21: this.begin(\"acc_descr\");return 33; \nbreak;\ncase 22: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 23: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 24: this.popState(); \nbreak;\ncase 25:return \"acc_descr_multiline_value\";\nbreak;\ncase 26: /*console.log('Starting STATE zxzx'+yy.getDirection());*/this.pushState('STATE'); \nbreak;\ncase 27:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 28:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 29:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 30:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 31:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 32:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 33: return 41;\nbreak;\ncase 34: return 42;\nbreak;\ncase 35: return 43;\nbreak;\ncase 36: return 44;\nbreak;\ncase 37: /*console.log('Starting STATE_STRING zxzx');*/this.begin(\"STATE_STRING\");\nbreak;\ncase 38:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 39:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 40:this.popState();\nbreak;\ncase 41: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 42:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;\nbreak;\ncase 43:this.popState();\nbreak;\ncase 44:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;\nbreak;\ncase 45: /*console.log('Ending struct');*/ this.popState(); return 19;\nbreak;\ncase 46:/* nothing */\nbreak;\ncase 47: this.begin('NOTE'); return 27; \nbreak;\ncase 48: this.popState();this.pushState('NOTE_ID');return 48;\nbreak;\ncase 49: this.popState();this.pushState('NOTE_ID');return 49;\nbreak;\ncase 50: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 51:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 52:/**/\nbreak;\ncase 53: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 54:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 55: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;\nbreak;\ncase 56: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 29;\nbreak;\ncase 57: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 29;\nbreak;\ncase 58: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 59: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 60: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; \nbreak;\ncase 61: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 47;\nbreak;\ncase 62: /*console.log('=>ID=',yy_.yytext);*/ return 22;\nbreak;\ncase 63: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; \nbreak;\ncase 64:return 13;\nbreak;\ncase 65:return 26;\nbreak;\ncase 66:return 5;\nbreak;\ncase 67:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:state\\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\\[\\[fork\\]\\])/i,/^(?:.*\\[\\[join\\]\\])/i,/^(?:.*\\[\\[choice\\]\\])/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\"])/i,/^(?:\\s*as\\s+)/i,/^(?:[^\\n\\{]*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n\\s\\{]+)/i,/^(?:\\n)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:[\\n])/i,/^(?:note\\s+)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:\")/i,/^(?:\\s*as\\s*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n]*)/i,/^(?:\\s*[^:\\n\\s\\-]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:[\\s\\S]*?end note\\b)/i,/^(?:stateDiagram\\s+)/i,/^(?:stateDiagram-v2\\s+)/i,/^(?:hide empty description\\b)/i,/^(?:\\[\\*\\])/i,/^(?:[^:\\n\\s\\-\\{]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[13,14],\"inclusive\":false},\"close_directive\":{\"rules\":[13,14],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7,13,14],\"inclusive\":false},\"open_directive\":{\"rules\":[5,13,14],\"inclusive\":false},\"struct\":{\"rules\":[13,14,26,33,34,35,36,45,46,47,61,62,63,64,65],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[54],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[51,52,53],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[56,57],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[55],\"inclusive\":false},\"NOTE\":{\"rules\":[48,49,50],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[24,25],\"inclusive\":false},\"acc_descr\":{\"rules\":[22],\"inclusive\":false},\"acc_title\":{\"rules\":[20],\"inclusive\":false},\"SCALE\":{\"rules\":[17,18],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[39],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[40,41],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[13,14,27,28,29,30,31,32,37,38,42,43,44],\"inclusive\":false},\"ID\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,14,15,16,19,21,23,26,44,47,58,59,60,61,62,63,64,66,67],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,17,18,20,22,23,24,26],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,24],$Va=[4,6,9,11,17,18,20,22,23,24,26];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"title\":17,\"acc_title\":18,\"acc_title_value\":19,\"acc_descr\":20,\"acc_descr_value\":21,\"acc_descr_multiline_value\":22,\"section\":23,\"taskName\":24,\"taskData\":25,\"open_directive\":26,\"type_directive\":27,\"arg_directive\":28,\"close_directive\":29,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",17:\"title\",18:\"acc_title\",19:\"acc_title_value\",20:\"acc_descr\",21:\"acc_descr_value\",22:\"acc_descr_multiline_value\",23:\"section\",24:\"taskName\",25:\"taskData\",26:\"open_directive\",27:\"type_directive\",28:\"arg_directive\",29:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 11:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 13: case 14:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 15:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 16:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\ncase 18:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 19:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 20:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 21:\n yy.parseDirective('}%%', 'close_directive', 'journey'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,26:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,26:$V1},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,20:$V5,22:$V6,23:$V7,24:$V8,26:$V1},{1:[2,2]},{14:22,15:[1,23],29:$V9},o([15,29],[2,19]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:21,10:25,12:4,17:$V3,18:$V4,20:$V5,22:$V6,23:$V7,24:$V8,26:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),{19:[1,26]},{21:[1,27]},o($V2,[2,14]),o($V2,[2,15]),{25:[1,28]},o($V2,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},o($V2,[2,5]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,16]),o($Va,[2,9]),{14:32,29:$V9},{29:[2,20]},{11:[1,33]},o($Va,[2,10])],\ndefaultActions: {5:[2,18],7:[2,2],24:[2,21],31:[2,20]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return 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(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 26; \nbreak;\ncase 1: this.begin('type_directive'); return 27; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 29; \nbreak;\ncase 4:return 28;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:return 4;\nbreak;\ncase 11:return 17;\nbreak;\ncase 12: this.begin(\"acc_title\");return 18; \nbreak;\ncase 13: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 14: this.begin(\"acc_descr\");return 20; \nbreak;\ncase 15: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 16: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 17: this.popState(); \nbreak;\ncase 18:return \"acc_descr_multiline_value\";\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 24;\nbreak;\ncase 21:return 25;\nbreak;\ncase 22:return 15;\nbreak;\ncase 23:return 6;\nbreak;\ncase 24:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[17,18],\"inclusive\":false},\"acc_descr\":{\"rules\":[15],\"inclusive\":false},\"acc_title\":{\"rules\":[13],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nvar htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nvar ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nvar urlSchemeRegex = /^([^:]+):/gm;\nvar relativeFirstCharacters = [\".\", \"/\"];\nfunction isRelativeUrlWithoutProtocol(url) {\n return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n return str.replace(htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction sanitizeUrl(url) {\n var sanitizedUrl = decodeHtmlCharacters(url || \"\")\n .replace(ctrlCharactersRegex, \"\")\n .trim();\n if (!sanitizedUrl) {\n return \"about:blank\";\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0];\n if (invalidProtocolRegex.test(urlScheme)) {\n return \"about:blank\";\n }\n return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n","module.exports = intersectNode;\n\n/**\n * @param node\n * @param point\n */\nfunction intersectNode(node, point) {\n // console.info('Intersect Node');\n return node.intersect(point);\n}\n","import moment from 'moment-mini';\n\n/** @typedef {'debug' | 'info' | 'warn' | 'error' | 'fatal'} LogLevel A log level */\n\n/** @type {Object} */\nexport const LEVELS = {\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n\nexport const log = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n fatal: () => {},\n};\n\n/**\n * Sets a log level\n *\n * @param {LogLevel} [level=\"fatal\"] The level to set the logging to. Default is `\"fatal\"`\n */\nexport const setLogLevel = function (level = 'fatal') {\n if (isNaN(level)) {\n level = level.toLowerCase();\n if (LEVELS[level] !== undefined) {\n level = LEVELS[level];\n }\n }\n log.trace = () => {};\n log.debug = () => {};\n log.info = () => {};\n log.warn = () => {};\n log.error = () => {};\n log.fatal = () => {};\n if (level <= LEVELS.fatal) {\n log.fatal = console.error\n ? console.error.bind(console, format('FATAL'), 'color: orange')\n : console.log.bind(console, '\\x1b[35m', format('FATAL'));\n }\n if (level <= LEVELS.error) {\n log.error = console.error\n ? console.error.bind(console, format('ERROR'), 'color: orange')\n : console.log.bind(console, '\\x1b[31m', format('ERROR'));\n }\n if (level <= LEVELS.warn) {\n log.warn = console.warn\n ? console.warn.bind(console, format('WARN'), 'color: orange')\n : console.log.bind(console, `\\x1b[33m`, format('WARN'));\n }\n if (level <= LEVELS.info) {\n log.info = console.info // ? console.info.bind(console, '\\x1b[34m', format('INFO'), 'color: blue')\n ? console.info.bind(console, format('INFO'), 'color: lightblue')\n : console.log.bind(console, '\\x1b[34m', format('INFO'));\n }\n if (level <= LEVELS.debug) {\n log.debug = console.debug\n ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen')\n : console.log.bind(console, '\\x1b[32m', format('DEBUG'));\n }\n};\n\n/**\n * Returns a format with the timestamp and the log level\n *\n * @param {LogLevel} level The level for the log format\n * @returns {string} The format with the timestamp and log level\n */\nconst format = (level) => {\n const time = moment().format('ss.SSS');\n return `%c${time} : ${level} : `;\n};\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function bisector(f) {\n let delta = f;\n let compare1 = f;\n let compare2 = f;\n\n if (f.length !== 2) {\n delta = (d, x) => f(d) - x;\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3)\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && characters.charCodeAt(length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import DOMPurify from 'dompurify';\n\n/**\n * Gets the number of lines in a string\n *\n * @param {string | undefined} s The string to check the lines for\n * @returns {number} The number of lines in that string\n */\nexport const getRows = (s) => {\n if (!s) return 1;\n let str = breakToPlaceholder(s);\n str = str.replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\nexport const removeEscapes = (text) => {\n let newStr = text.replace(/\\\\u[\\dA-F]{4}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16));\n });\n\n newStr = newStr.replace(/\\\\x([0-9a-f]{2})/gi, (_, c) => String.fromCharCode(parseInt(c, 16)));\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{3}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{2}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n\n return newStr;\n};\n\n/**\n * Removes script tags from a text\n *\n * @param {string} txt The text to sanitize\n * @returns {string} The safer text\n */\nexport const removeScript = (txt) => {\n var rs = '';\n var idx = 0;\n\n while (idx >= 0) {\n idx = txt.indexOf('= 0) {\n rs += txt.substr(0, idx);\n txt = txt.substr(idx + 1);\n\n idx = txt.indexOf('');\n if (idx >= 0) {\n idx += 9;\n txt = txt.substr(idx);\n }\n } else {\n rs += txt;\n idx = -1;\n break;\n }\n }\n let decodedText = removeEscapes(rs);\n decodedText = decodedText.replaceAll(/script>/gi, '#');\n decodedText = decodedText.replaceAll(/javascript:/gi, '#');\n decodedText = decodedText.replaceAll(/javascript&colon/gi, '#');\n decodedText = decodedText.replaceAll(/onerror=/gi, 'onerror:');\n decodedText = decodedText.replaceAll(/`;\n } else {\n if (cnf.securityLevel !== 'loose') {\n svgCode = DOMPurify.sanitize(svgCode, {\n ADD_TAGS: ['foreignobject'],\n ADD_ATTR: ['dominant-baseline'],\n });\n }\n }\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, flowDb.bindFunctions);\n break;\n case 'gantt':\n cb(svgCode, ganttDb.bindFunctions);\n break;\n case 'class':\n case 'classDiagram':\n cb(svgCode, classDb.bindFunctions);\n break;\n default:\n cb(svgCode);\n }\n } else {\n log.debug('CB = undefined!');\n }\n attachFunctions();\n\n const tmpElementSelector = cnf.securityLevel === 'sandbox' ? '#i' + id : '#d' + id;\n const node = select(tmpElementSelector).node();\n if (node !== null && typeof node.remove === 'function') {\n select(tmpElementSelector).node().remove();\n }\n\n return svgCode;\n};\n\nlet currentDirective = {};\n\nconst parseDirective = function (p, statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n case 'close_directive':\n handleDirective(p, currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n log.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n log.error(error.message);\n }\n};\n\nconst handleDirective = function (p, directive, type) {\n log.debug(`Directive type=${directive.type} with args:`, directive.args);\n switch (directive.type) {\n case 'init':\n case 'initialize': {\n ['config'].forEach((prop) => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n log.debug('sanitize in handleDirective', directive.args);\n directiveSanitizer(directive.args);\n log.debug('sanitize in handleDirective (done)', directive.args);\n reinitialize(directive.args);\n configApi.addDirective(directive.args);\n break;\n }\n case 'wrap':\n case 'nowrap':\n if (p && p['setWrap']) {\n p.setWrap(directive.type === 'wrap');\n }\n break;\n case 'themeCss':\n log.warn('themeCss encountered');\n break;\n default:\n log.warn(\n `Unhandled directive: source: '%%{${directive.type}: ${JSON.stringify(\n directive.args ? directive.args : {}\n )}}%%`,\n directive\n );\n break;\n }\n};\n\n/** @param {any} conf */\nfunction updateRendererConfigs(conf) {\n // Todo remove, all diagrams should get config on demoand from the config object, no need for this\n\n // gitGraphRenderer.setConf(conf.git); // Todo Remove all of these\n flowRenderer.setConf(conf.flowchart);\n flowRendererV2.setConf(conf.flowchart);\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n sequenceRenderer.setConf(assignWithDepth(conf.sequence, conf['sequenceDiagram']));\n }\n sequenceRenderer.setConf(conf.sequence);\n ganttRenderer.setConf(conf.gantt);\n classRenderer.setConf(conf.class);\n stateRenderer.setConf(conf.state);\n stateRendererV2.setConf(conf.state);\n infoRenderer.setConf(conf.class);\n // pieRenderer.setConf(conf.class);\n erRenderer.setConf(conf.er);\n journeyRenderer.setConf(conf.journey);\n requirementRenderer.setConf(conf.requirement);\n errorRenderer.setConf(conf.class);\n}\n\n/** To be removed */\nfunction reinitialize() {\n // `mermaidAPI.reinitialize: v${pkg.version}`,\n // JSON.stringify(options),\n // options.themeVariables.primaryColor;\n // // if (options.theme && theme[options.theme]) {\n // // options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n // // }\n // // Set default options\n // const config =\n // typeof options === 'object' ? configApi.setConfig(options) : configApi.getSiteConfig();\n // updateRendererConfigs(config);\n // setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.reinitialize: ', config);\n}\n\n/** @param {any} options */\nfunction initialize(options) {\n // console.warn(`mermaidAPI.initialize: v${pkg.version} `, options);\n\n // Handle legacy location of font-family configuration\n if (options && options.fontFamily) {\n if (!options.themeVariables) {\n options.themeVariables = { fontFamily: options.fontFamily };\n } else {\n if (!options.themeVariables.fontFamily) {\n options.themeVariables = { fontFamily: options.fontFamily };\n }\n }\n }\n // Set default options\n configApi.saveConfigFromInitilize(options);\n\n if (options && options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = theme.default.getThemeVariables(options.themeVariables);\n }\n\n const config =\n typeof options === 'object' ? configApi.setSiteConfig(options) : configApi.getSiteConfig();\n\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.initialize: ', config);\n}\n\nconst mermaidAPI = Object.freeze({\n render,\n parse,\n parseDirective,\n initialize,\n reinitialize,\n getConfig: configApi.getConfig,\n setConfig: configApi.setConfig,\n getSiteConfig: configApi.getSiteConfig,\n updateSiteConfig: configApi.updateSiteConfig,\n reset: () => {\n // console.warn('reset');\n configApi.reset();\n // const siteConfig = configApi.getSiteConfig();\n // updateRendererConfigs(siteConfig);\n },\n globalReset: () => {\n configApi.reset(configApi.defaultConfig);\n updateRendererConfigs(configApi.getConfig());\n },\n defaultConfig: configApi.defaultConfig,\n});\n\nsetLogLevel(configApi.getConfig().logLevel);\nconfigApi.reset(configApi.getConfig());\n\nexport default mermaidAPI;\n/**\n * ## mermaidAPI configuration defaults\n *\n * ```html\n * \n * ```\n */\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid\n * functionality and to render the diagrams to svg code.\n */\nimport { log } from './logger';\nimport mermaidAPI from './mermaidAPI';\nimport utils from './utils';\n\n/**\n * ## init\n *\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found\n * elements with the attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n *\n * - A DOM Node\n * - An array of DOM nodes (as would come from a jQuery selector)\n * - A W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n *\n * Renders the mermaid diagrams\n */\nconst init = function () {\n try {\n initThrowsErrors();\n } catch (e) {\n log.warn('Syntax Error rendering');\n log.warn(e);\n if (this.parseError) {\n this.parseError(e);\n }\n }\n};\n\nconst initThrowsErrors = function () {\n const conf = mermaidAPI.getConfig();\n // console.log('Starting rendering diagrams (init) - mermaid.init', conf);\n let nodes;\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0];\n }\n\n nodes = arguments[1];\n } else {\n nodes = arguments[0];\n }\n\n // if last argument is a function this is the callback function\n let callback;\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1];\n log.debug('Callback function found');\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback;\n log.debug('Callback function found');\n } else {\n log.debug('No Callback function found');\n }\n }\n }\n nodes =\n nodes === undefined\n ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string'\n ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node\n ? [nodes]\n : nodes; // Last case - sequence config was passed pick next\n\n log.debug('Start On Load before: ' + mermaid.startOnLoad);\n if (typeof mermaid.startOnLoad !== 'undefined') {\n log.debug('Start On Load inner: ' + mermaid.startOnLoad);\n mermaidAPI.updateSiteConfig({ startOnLoad: mermaid.startOnLoad });\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.updateSiteConfig({ gantt: mermaid.ganttConfig });\n }\n\n const idGeneratior = new utils.initIdGeneratior(conf.deterministicIds, conf.deterministicIDSeed);\n\n let txt;\n\n for (let i = 0; i < nodes.length; i++) {\n // element is the current div with mermaid class\n const element = nodes[i];\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true);\n } else {\n continue;\n }\n\n const id = `mermaid-${idGeneratior.next()}`;\n\n // Fetch the graph definition including tags\n txt = element.innerHTML;\n\n // transforms the html to pure text\n txt = utils\n .entityDecode(txt)\n .trim()\n .replace(//gi, '
');\n\n const init = utils.detectInit(txt);\n if (init) {\n log.debug('Detected early reinit: ', init);\n }\n\n mermaidAPI.render(\n id,\n txt,\n (svgCode, bindFunctions) => {\n element.innerHTML = svgCode;\n if (typeof callback !== 'undefined') {\n callback(id);\n }\n if (bindFunctions) bindFunctions(element);\n },\n element\n );\n }\n};\n\nconst initialize = function (config) {\n // mermaidAPI.reset();\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad;\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels =\n config.mermaid.htmlLabels === 'false' || config.mermaid.htmlLabels === false ? false : true;\n }\n }\n mermaidAPI.initialize(config);\n // mermaidAPI.reset();\n};\n\n/**\n * ##contentLoaded Callback function that is called when page is loaded. This functions fetches\n * configuration for mermaid rendering and calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function () {\n let config;\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n log.debug('In start, no config');\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n }\n }\n};\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\n 'load',\n function () {\n contentLoaded();\n },\n false\n );\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded,\n};\n\nexport default mermaid;\n","/**\n * @license\n * Copyright (c) 2012-2013 Chris Pettitt\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n dagre: require(\"./lib/dagre\"),\n intersect: require(\"./lib/intersect\"),\n render: require(\"./lib/render\"),\n util: require(\"./lib/util\"),\n version: require(\"./lib/version\")\n};\n","var util = require(\"./util\");\n\nmodule.exports = {\n \"default\": normal,\n \"normal\": normal,\n \"vee\": vee,\n \"undirected\": undirected\n};\n\nfunction normal(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction vee(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 L 4 5 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction undirected(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 5 L 10 5\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n","var util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar addLabel = require(\"./label/add-label\");\n\nmodule.exports = createClusters;\n\nfunction createClusters(selection, g) {\n var clusters = g.nodes().filter(function(v) { return util.isSubgraph(g, v); });\n var svgClusters = selection.selectAll(\"g.cluster\")\n .data(clusters, function(v) { return v; });\n\n svgClusters.selectAll(\"*\").remove();\n svgClusters.enter().append(\"g\")\n .attr(\"class\", \"cluster\")\n .attr(\"id\",function(v){\n var node = g.node(v);\n return node.id;\n })\n .style(\"opacity\", 0);\n \n svgClusters = selection.selectAll(\"g.cluster\");\n\n util.applyTransition(svgClusters, g)\n .style(\"opacity\", 1);\n\n svgClusters.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n d3.select(this).append(\"rect\");\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n addLabel(labelGroup, node, node.clusterLabelPos);\n });\n\n svgClusters.selectAll(\"rect\").each(function(c) {\n var node = g.node(c);\n var domCluster = d3.select(this);\n util.applyStyle(domCluster, node.style);\n });\n\n var exitSelection;\n\n if (svgClusters.exit) {\n exitSelection = svgClusters.exit();\n } else {\n exitSelection = svgClusters.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgClusters;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createEdgeLabels;\n\nfunction createEdgeLabels(selection, g) {\n var svgEdgeLabels = selection.selectAll(\"g.edgeLabel\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n svgEdgeLabels.exit().remove();\n svgEdgeLabels.enter().append(\"g\")\n .classed(\"edgeLabel\", true)\n .style(\"opacity\", 0);\n\n svgEdgeLabels = selection.selectAll(\"g.edgeLabel\");\n\n svgEdgeLabels.each(function(e) {\n var root = d3.select(this);\n root.select(\".label\").remove();\n var edge = g.edge(e);\n var label = addLabel(root, g.edge(e), 0, 0).classed(\"label\", true);\n var bbox = label.node().getBBox();\n\n if (edge.labelId) { label.attr(\"id\", edge.labelId); }\n if (!_.has(edge, \"width\")) { edge.width = bbox.width; }\n if (!_.has(edge, \"height\")) { edge.height = bbox.height; }\n });\n\n var exitSelection;\n\n if (svgEdgeLabels.exit) {\n exitSelection = svgEdgeLabels.exit();\n } else {\n exitSelection = svgEdgeLabels.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgEdgeLabels;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar intersectNode = require(\"./intersect/intersect-node\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nmodule.exports = createEdgePaths;\n\nfunction createEdgePaths(selection, g, arrows) {\n var previousPaths = selection.selectAll(\"g.edgePath\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n var newPaths = enter(previousPaths, g);\n exit(previousPaths, g);\n\n var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;\n util.applyTransition(svgPaths, g)\n .style(\"opacity\", 1);\n\n // Save DOM element in the path group, and set ID and class\n svgPaths.each(function(e) {\n var domEdge = d3.select(this);\n var edge = g.edge(e);\n edge.elem = this;\n\n if (edge.id) {\n domEdge.attr(\"id\", edge.id);\n }\n\n util.applyClass(domEdge, edge[\"class\"],\n (domEdge.classed(\"update\") ? \"update \" : \"\") + \"edgePath\");\n });\n\n svgPaths.selectAll(\"path.path\")\n .each(function(e) {\n var edge = g.edge(e);\n edge.arrowheadId = _.uniqueId(\"arrowhead\");\n\n var domEdge = d3.select(this)\n .attr(\"marker-end\", function() {\n return \"url(\" + makeFragmentRef(location.href, edge.arrowheadId) + \")\";\n })\n .style(\"fill\", \"none\");\n\n util.applyTransition(domEdge, g)\n .attr(\"d\", function(e) { return calcPoints(g, e); });\n\n util.applyStyle(domEdge, edge.style);\n });\n\n svgPaths.selectAll(\"defs *\").remove();\n svgPaths.selectAll(\"defs\")\n .each(function(e) {\n var edge = g.edge(e);\n var arrowhead = arrows[edge.arrowhead];\n arrowhead(d3.select(this), edge.arrowheadId, edge, \"arrowhead\");\n });\n\n return svgPaths;\n}\n\nfunction makeFragmentRef(url, fragmentId) {\n var baseUrl = url.split(\"#\")[0];\n return baseUrl + \"#\" + fragmentId;\n}\n\nfunction calcPoints(g, e) {\n var edge = g.edge(e);\n var tail = g.node(e.v);\n var head = g.node(e.w);\n var points = edge.points.slice(1, edge.points.length - 1);\n points.unshift(intersectNode(tail, points[0]));\n points.push(intersectNode(head, points[points.length - 1]));\n\n return createLine(edge, points);\n}\n\nfunction createLine(edge, points) {\n var line = (d3.line || d3.svg.line)()\n .x(function(d) { return d.x; })\n .y(function(d) { return d.y; });\n \n (line.curve || line.interpolate)(edge.curve);\n\n return line(points);\n}\n\nfunction getCoords(elem) {\n var bbox = elem.getBBox();\n var matrix = elem.ownerSVGElement.getScreenCTM()\n .inverse()\n .multiply(elem.getScreenCTM())\n .translate(bbox.width / 2, bbox.height / 2);\n return { x: matrix.e, y: matrix.f };\n}\n\nfunction enter(svgPaths, g) {\n var svgPathsEnter = svgPaths.enter().append(\"g\")\n .attr(\"class\", \"edgePath\")\n .style(\"opacity\", 0);\n svgPathsEnter.append(\"path\")\n .attr(\"class\", \"path\")\n .attr(\"d\", function(e) {\n var edge = g.edge(e);\n var sourceElem = g.node(e.v).elem;\n var points = _.range(edge.points.length).map(function() { return getCoords(sourceElem); });\n return createLine(edge, points);\n });\n svgPathsEnter.append(\"defs\");\n return svgPathsEnter;\n}\n\nfunction exit(svgPaths, g) {\n var svgPathExit = svgPaths.exit();\n util.applyTransition(svgPathExit, g)\n .style(\"opacity\", 0)\n .remove();\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createNodes;\n\nfunction createNodes(selection, g, shapes) {\n var simpleNodes = g.nodes().filter(function(v) { return !util.isSubgraph(g, v); });\n var svgNodes = selection.selectAll(\"g.node\")\n .data(simpleNodes, function(v) { return v; })\n .classed(\"update\", true);\n\n svgNodes.exit().remove();\n\n svgNodes.enter().append(\"g\")\n .attr(\"class\", \"node\")\n .style(\"opacity\", 0);\n\n svgNodes = selection.selectAll(\"g.node\"); \n\n svgNodes.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n util.applyClass(thisGroup, node[\"class\"],\n (thisGroup.classed(\"update\") ? \"update \" : \"\") + \"node\");\n\n thisGroup.select(\"g.label\").remove();\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n var labelDom = addLabel(labelGroup, node);\n var shape = shapes[node.shape];\n var bbox = _.pick(labelDom.node().getBBox(), \"width\", \"height\");\n\n node.elem = this;\n\n if (node.id) { thisGroup.attr(\"id\", node.id); }\n if (node.labelId) { labelGroup.attr(\"id\", node.labelId); }\n\n if (_.has(node, \"width\")) { bbox.width = node.width; }\n if (_.has(node, \"height\")) { bbox.height = node.height; }\n\n bbox.width += node.paddingLeft + node.paddingRight;\n bbox.height += node.paddingTop + node.paddingBottom;\n labelGroup.attr(\"transform\", \"translate(\" +\n ((node.paddingLeft - node.paddingRight) / 2) + \",\" +\n ((node.paddingTop - node.paddingBottom) / 2) + \")\");\n\n var root = d3.select(this);\n root.select(\".label-container\").remove();\n var shapeSvg = shape(root, bbox, node).classed(\"label-container\", true);\n util.applyStyle(shapeSvg, node.style);\n\n var shapeBBox = shapeSvg.node().getBBox();\n node.width = shapeBBox.width;\n node.height = shapeBBox.height;\n });\n\n var exitSelection;\n\n if (svgNodes.exit) {\n exitSelection = svgNodes.exit();\n } else {\n exitSelection = svgNodes.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgNodes;\n}\n","// Stub to get D3 either via NPM or from the global object\nvar d3;\n\nif (!d3) {\n if (typeof require === \"function\") {\n try {\n d3 = require(\"d3\");\n }\n catch (e) {\n // continue regardless of error\n }\n }\n}\n\nif (!d3) {\n d3 = window.d3;\n}\n\nmodule.exports = d3;\n","/* global window */\n\nvar dagre;\n\nif (typeof require === \"function\") {\n try {\n dagre = require(\"dagre\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!dagre) {\n dagre = window.dagre;\n}\n\nmodule.exports = dagre;\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","module.exports = {\n node: require(\"./intersect-node\"),\n circle: require(\"./intersect-circle\"),\n ellipse: require(\"./intersect-ellipse\"),\n polygon: require(\"./intersect-polygon\"),\n rect: require(\"./intersect-rect\")\n};\n","var intersectEllipse = require(\"./intersect-ellipse\");\n\nmodule.exports = intersectCircle;\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n","module.exports = intersectEllipse;\n\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return {x: cx + dx, y: cy + dy};\n}\n\n","module.exports = intersectLine;\n\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2 , r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = (p2.x * p1.y) - (p1.x * p2.y);\n\n // Compute r3 and r4.\n r3 = ((a1 * q1.x) + (b1 * q1.y) + c1);\n r4 = ((a1 * q2.x) + (b1 * q2.y) + c1);\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if ((r3 !== 0) && (r4 !== 0) && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = (q2.x * q1.y) - (q1.x * q2.y);\n\n // Compute r1 and r2\n r1 = (a2 * p1.x) + (b2 * p1.y) + c2;\n r2 = (a2 * p2.x) + (b2 * p2.y) + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if ((r1 !== 0) && (r2 !== 0) && (sameSign(r1, r2))) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = (a1 * b2) - (a2 * b1);\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = (b1 * c2) - (b2 * c1);\n x = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n num = (a2 * c1) - (a1 * c2);\n y = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n","module.exports = intersectNode;\n\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n","/* eslint \"no-console\": off */\n\nvar intersectLine = require(\"./intersect-line\");\n\nmodule.exports = intersectPolygon;\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(node, point,\n {x: left + p1.x, y: top + p1.y}, {x: left + p2.x, y: top + p2.y});\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log(\"NO INTERSECTION FOUND, RETURN NODE CENTER\", node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function(p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return (distp < distq) ? -1 : (distp === distq ? 0 : 1);\n });\n }\n return intersections[0];\n}\n","module.exports = intersectRect;\n\nfunction intersectRect(node, point) {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n\n return {x: x + sx, y: y + sy};\n}\n","var util = require(\"../util\");\n\nmodule.exports = addHtmlLabel;\n\nfunction addHtmlLabel(root, node) {\n var fo = root\n .append(\"foreignObject\")\n .attr(\"width\", \"100000\");\n\n var div = fo\n .append(\"xhtml:div\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n\n var label = node.label;\n switch(typeof label) {\n case \"function\":\n div.insert(label);\n break;\n case \"object\":\n // Currently we assume this is a DOM object.\n div.insert(function() { return label; });\n break;\n default: div.html(label);\n }\n\n util.applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n // Fix for firefox\n div.style(\"white-space\", \"nowrap\");\n\n var client = div.node().getBoundingClientRect();\n fo\n .attr(\"width\", client.width)\n .attr(\"height\", client.height); \n\n return fo;\n}\n","var addTextLabel = require(\"./add-text-label\");\nvar addHtmlLabel = require(\"./add-html-label\");\nvar addSVGLabel = require(\"./add-svg-label\");\n\nmodule.exports = addLabel;\n\nfunction addLabel(root, node, location) {\n var label = node.label;\n var labelSvg = root.append(\"g\");\n\n // Allow the label to be a string, a function that returns a DOM element, or\n // a DOM element itself.\n if (node.labelType === \"svg\") {\n addSVGLabel(labelSvg, node);\n } else if (typeof label !== \"string\" || node.labelType === \"html\") {\n addHtmlLabel(labelSvg, node);\n } else {\n addTextLabel(labelSvg, node);\n }\n\n var labelBBox = labelSvg.node().getBBox();\n var y;\n switch(location) {\n case \"top\":\n y = (-node.height / 2);\n break;\n case \"bottom\":\n y = (node.height / 2) - labelBBox.height;\n break;\n default:\n y = (-labelBBox.height / 2);\n }\n labelSvg.attr(\n \"transform\",\n \"translate(\" + (-labelBBox.width / 2) + \",\" + y + \")\");\n\n return labelSvg;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addSVGLabel;\n\nfunction addSVGLabel(root, node) {\n var domNode = root;\n\n domNode.node().appendChild(node.label);\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addTextLabel;\n\n/*\n * Attaches a text label to the specified root. Handles escape sequences.\n */\nfunction addTextLabel(root, node) {\n var domNode = root.append(\"text\");\n\n var lines = processEscapeSequences(node.label).split(\"\\n\");\n for (var i = 0; i < lines.length; i++) {\n domNode.append(\"tspan\")\n .attr(\"xml:space\", \"preserve\")\n .attr(\"dy\", \"1em\")\n .attr(\"x\", \"1\")\n .text(lines[i]);\n }\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n\nfunction processEscapeSequences(text) {\n var newText = \"\";\n var escaped = false;\n var ch;\n for (var i = 0; i < text.length; ++i) {\n ch = text[i];\n if (escaped) {\n switch(ch) {\n case \"n\": newText += \"\\n\"; break;\n default: newText += ch;\n }\n escaped = false;\n } else if (ch === \"\\\\\") {\n escaped = true;\n } else {\n newText += ch;\n }\n }\n return newText;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n isFunction: require(\"lodash/isFunction\"),\n isPlainObject: require(\"lodash/isPlainObject\"),\n pick: require(\"lodash/pick\"),\n has: require(\"lodash/has\"),\n range: require(\"lodash/range\"),\n uniqueId: require(\"lodash/uniqueId\")\n };\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionClusters;\n\nfunction positionClusters(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n\n util.applyTransition(created.selectAll(\"rect\"), g)\n .attr(\"width\", function(v) { return g.node(v).width; })\n .attr(\"height\", function(v) { return g.node(v).height; })\n .attr(\"x\", function(v) {\n var node = g.node(v);\n return -node.width / 2;\n })\n .attr(\"y\", function(v) {\n var node = g.node(v);\n return -node.height / 2;\n });\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar _ = require(\"./lodash\");\n\nmodule.exports = positionEdgeLabels;\n\nfunction positionEdgeLabels(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(e) {\n var edge = g.edge(e);\n return _.has(edge, \"x\") ? \"translate(\" + edge.x + \",\" + edge.y + \")\" : \"\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionNodes;\n\nfunction positionNodes(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","var _ = require(\"./lodash\");\nvar d3 = require(\"./d3\");\nvar layout = require(\"./dagre\").layout;\n\nmodule.exports = render;\n\n// This design is based on http://bost.ocks.org/mike/chart/.\nfunction render() {\n var createNodes = require(\"./create-nodes\");\n var createClusters = require(\"./create-clusters\");\n var createEdgeLabels = require(\"./create-edge-labels\");\n var createEdgePaths = require(\"./create-edge-paths\");\n var positionNodes = require(\"./position-nodes\");\n var positionEdgeLabels = require(\"./position-edge-labels\");\n var positionClusters = require(\"./position-clusters\");\n var shapes = require(\"./shapes\");\n var arrows = require(\"./arrows\");\n\n var fn = function(svg, g) {\n preProcessGraph(g);\n\n var outputGroup = createOrSelectGroup(svg, \"output\");\n var clustersGroup = createOrSelectGroup(outputGroup, \"clusters\");\n var edgePathsGroup = createOrSelectGroup(outputGroup, \"edgePaths\");\n var edgeLabels = createEdgeLabels(createOrSelectGroup(outputGroup, \"edgeLabels\"), g);\n var nodes = createNodes(createOrSelectGroup(outputGroup, \"nodes\"), g, shapes);\n\n layout(g);\n\n positionNodes(nodes, g);\n positionEdgeLabels(edgeLabels, g);\n createEdgePaths(edgePathsGroup, g, arrows);\n\n var clusters = createClusters(clustersGroup, g);\n positionClusters(clusters, g);\n\n postProcessGraph(g);\n };\n\n fn.createNodes = function(value) {\n if (!arguments.length) return createNodes;\n createNodes = value;\n return fn;\n };\n\n fn.createClusters = function(value) {\n if (!arguments.length) return createClusters;\n createClusters = value;\n return fn;\n };\n\n fn.createEdgeLabels = function(value) {\n if (!arguments.length) return createEdgeLabels;\n createEdgeLabels = value;\n return fn;\n };\n\n fn.createEdgePaths = function(value) {\n if (!arguments.length) return createEdgePaths;\n createEdgePaths = value;\n return fn;\n };\n\n fn.shapes = function(value) {\n if (!arguments.length) return shapes;\n shapes = value;\n return fn;\n };\n\n fn.arrows = function(value) {\n if (!arguments.length) return arrows;\n arrows = value;\n return fn;\n };\n\n return fn;\n}\n\nvar NODE_DEFAULT_ATTRS = {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 10,\n paddingBottom: 10,\n rx: 0,\n ry: 0,\n shape: \"rect\"\n};\n\nvar EDGE_DEFAULT_ATTRS = {\n arrowhead: \"normal\",\n curve: d3.curveLinear\n};\n\nfunction preProcessGraph(g) {\n g.nodes().forEach(function(v) {\n var node = g.node(v);\n if (!_.has(node, \"label\") && !g.children(v).length) { node.label = v; }\n\n if (_.has(node, \"paddingX\")) {\n _.defaults(node, {\n paddingLeft: node.paddingX,\n paddingRight: node.paddingX\n });\n }\n\n if (_.has(node, \"paddingY\")) {\n _.defaults(node, {\n paddingTop: node.paddingY,\n paddingBottom: node.paddingY\n });\n }\n\n if (_.has(node, \"padding\")) {\n _.defaults(node, {\n paddingLeft: node.padding,\n paddingRight: node.padding,\n paddingTop: node.padding,\n paddingBottom: node.padding\n });\n }\n\n _.defaults(node, NODE_DEFAULT_ATTRS);\n\n _.each([\"paddingLeft\", \"paddingRight\", \"paddingTop\", \"paddingBottom\"], function(k) {\n node[k] = Number(node[k]);\n });\n\n // Save dimensions for restore during post-processing\n if (_.has(node, \"width\")) { node._prevWidth = node.width; }\n if (_.has(node, \"height\")) { node._prevHeight = node.height; }\n });\n\n g.edges().forEach(function(e) {\n var edge = g.edge(e);\n if (!_.has(edge, \"label\")) { edge.label = \"\"; }\n _.defaults(edge, EDGE_DEFAULT_ATTRS);\n });\n}\n\nfunction postProcessGraph(g) {\n _.each(g.nodes(), function(v) {\n var node = g.node(v);\n\n // Restore original dimensions\n if (_.has(node, \"_prevWidth\")) {\n node.width = node._prevWidth;\n } else {\n delete node.width;\n }\n\n if (_.has(node, \"_prevHeight\")) {\n node.height = node._prevHeight;\n } else {\n delete node.height;\n }\n\n delete node._prevWidth;\n delete node._prevHeight;\n });\n}\n\nfunction createOrSelectGroup(root, name) {\n var selection = root.select(\"g.\" + name);\n if (selection.empty()) {\n selection = root.append(\"g\").attr(\"class\", name);\n }\n return selection;\n}\n","\"use strict\";\n\nvar intersectRect = require(\"./intersect/intersect-rect\");\nvar intersectEllipse = require(\"./intersect/intersect-ellipse\");\nvar intersectCircle = require(\"./intersect/intersect-circle\");\nvar intersectPolygon = require(\"./intersect/intersect-polygon\");\n\nmodule.exports = {\n rect: rect,\n ellipse: ellipse,\n circle: circle,\n diamond: diamond\n};\n\nfunction rect(parent, bbox, node) {\n var shapeSvg = parent.insert(\"rect\", \":first-child\")\n .attr(\"rx\", node.rx)\n .attr(\"ry\", node.ry)\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"width\", bbox.width)\n .attr(\"height\", bbox.height);\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n}\n\nfunction ellipse(parent, bbox, node) {\n var rx = bbox.width / 2;\n var ry = bbox.height / 2;\n var shapeSvg = parent.insert(\"ellipse\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"rx\", rx)\n .attr(\"ry\", ry);\n\n node.intersect = function(point) {\n return intersectEllipse(node, rx, ry, point);\n };\n\n return shapeSvg;\n}\n\nfunction circle(parent, bbox, node) {\n var r = Math.max(bbox.width, bbox.height) / 2;\n var shapeSvg = parent.insert(\"circle\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"r\", r);\n\n node.intersect = function(point) {\n return intersectCircle(node, r, point);\n };\n\n return shapeSvg;\n}\n\n// Circumscribe an ellipse for the bounding box with a diamond shape. I derived\n// the function to calculate the diamond shape from:\n// http://mathforum.org/kb/message.jspa?messageID=3750236\nfunction diamond(parent, bbox, node) {\n var w = (bbox.width * Math.SQRT2) / 2;\n var h = (bbox.height * Math.SQRT2) / 2;\n var points = [\n { x: 0, y: -h },\n { x: -w, y: 0 },\n { x: 0, y: h },\n { x: w, y: 0 }\n ];\n var shapeSvg = parent.insert(\"polygon\", \":first-child\")\n .attr(\"points\", points.map(function(p) { return p.x + \",\" + p.y; }).join(\" \"));\n\n node.intersect = function(p) {\n return intersectPolygon(node, points, p);\n };\n\n return shapeSvg;\n}\n","var _ = require(\"./lodash\");\n\n// Public utility functions\nmodule.exports = {\n isSubgraph: isSubgraph,\n edgeToId: edgeToId,\n applyStyle: applyStyle,\n applyClass: applyClass,\n applyTransition: applyTransition\n};\n\n/*\n * Returns true if the specified node in the graph is a subgraph node. A\n * subgraph node is one that contains other nodes.\n */\nfunction isSubgraph(g, v) {\n return !!g.children(v).length;\n}\n\nfunction edgeToId(e) {\n return escapeId(e.v) + \":\" + escapeId(e.w) + \":\" + escapeId(e.name);\n}\n\nvar ID_DELIM = /:/g;\nfunction escapeId(str) {\n return str ? String(str).replace(ID_DELIM, \"\\\\:\") : \"\";\n}\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n\nfunction applyClass(dom, classFn, otherClasses) {\n if (classFn) {\n dom\n .attr(\"class\", classFn)\n .attr(\"class\", otherClasses + \" \" + dom.attr(\"class\"));\n }\n}\n\nfunction applyTransition(selection, g) {\n var graph = g.graph();\n\n if (_.isPlainObject(graph)) {\n var transition = graph.transition;\n if (_.isFunction(transition)) {\n return transition(selection);\n }\n }\n\n return selection;\n}\n","module.exports = \"0.6.4\";\n","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\nvar List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar acyclic = require(\"./acyclic\");\nvar normalize = require(\"./normalize\");\nvar rank = require(\"./rank\");\nvar normalizeRanks = require(\"./util\").normalizeRanks;\nvar parentDummyChains = require(\"./parent-dummy-chains\");\nvar removeEmptyRanks = require(\"./util\").removeEmptyRanks;\nvar nestingGraph = require(\"./nesting-graph\");\nvar addBorderSegments = require(\"./add-border-segments\");\nvar coordinateSystem = require(\"./coordinate-system\");\nvar order = require(\"./order\");\nvar position = require(\"./position\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\"];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar initOrder = require(\"./init-order\");\nvar crossCount = require(\"./cross-count\");\nvar sortSubgraph = require(\"./sort-subgraph\");\nvar buildLayerGraph = require(\"./build-layer-graph\");\nvar addSubgraphConstraints = require(\"./add-subgraph-constraints\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var _ = require(\"../lodash\");\nvar barycenter = require(\"./barycenter\");\nvar resolveConflicts = require(\"./resolve-conflicts\");\nvar sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","var _ = require(\"../lodash\");\nvar util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar util = require(\"../util\");\nvar positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","\"use strict\";\n\nvar rankUtil = require(\"./util\");\nvar longestPath = rankUtil.longestPath;\nvar feasibleTree = require(\"./feasible-tree\");\nvar networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar feasibleTree = require(\"./feasible-tree\");\nvar slack = require(\"./util\").slack;\nvar initRank = require(\"./util\").longestPath;\nvar preorder = require(\"../graphlib\").alg.preorder;\nvar postorder = require(\"../graphlib\").alg.postorder;\nvar simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","/* eslint \"no-console\": off */\n\n\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","module.exports = \"0.8.5\";\n","/*! @license DOMPurify 2.3.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.6/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n\n var regExpTest = unapply(RegExp.prototype.test);\n\n var typeErrorCreate = unconstruct(TypeError);\n\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n\n /* Add properties to a lookup table */\n function addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n\n /* Shallow clone an object */\n function clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n var svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\n var mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\n var text = freeze(['#text']);\n\n var html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\n var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\n var mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n var DOCTYPE_NAME = seal(/^html$/i);\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.6';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Parsing of strict XHTML documents */\n var PARSER_MEDIA_TYPE = void 0;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc = void 0;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n return x;\n } : stringToLowerCase;\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function');\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (tagName === 'select' && regExpTest(/