{"version":3,"file":"mermaid.min.js","mappings":"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,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,IAAIC,EAAI,CAAC,EAAE,KAAKC,EAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,IAAIC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,EAAE,KAAKC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIC,GAAI,CAAC,GAAG,GAAG,GAAG,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,KAAKC,GAAI,CAAC,GAAG,GAAG,IAAIC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,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,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,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,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,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,IAAIC,GAAK,CAAC,GAAG,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,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,G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G,CAAC,GAAG,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,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,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,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,GAA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,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOjB,EAAEiB,EAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,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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/./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/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/svgDraw.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/accessibility.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/khroma/dist/channels/index.js","webpack://mermaid/./node_modules/khroma/dist/channels/reusable.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/index.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/consts.js","webpack://mermaid/./node_modules/khroma/dist/index.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust_channel.js","webpack://mermaid/./node_modules/khroma/dist/methods/alpha.js","webpack://mermaid/./node_modules/khroma/dist/methods/blue.js","webpack://mermaid/./node_modules/khroma/dist/methods/change.js","webpack://mermaid/./node_modules/khroma/dist/methods/channel.js","webpack://mermaid/./node_modules/khroma/dist/methods/complement.js","webpack://mermaid/./node_modules/khroma/dist/methods/contrast.js","webpack://mermaid/./node_modules/khroma/dist/methods/darken.js","webpack://mermaid/./node_modules/khroma/dist/methods/desaturate.js","webpack://mermaid/./node_modules/khroma/dist/methods/grayscale.js","webpack://mermaid/./node_modules/khroma/dist/methods/green.js","webpack://mermaid/./node_modules/khroma/dist/methods/hsla.js","webpack://mermaid/./node_modules/khroma/dist/methods/hue.js","webpack://mermaid/./node_modules/khroma/dist/methods/index.js","webpack://mermaid/./node_modules/khroma/dist/methods/invert.js","webpack://mermaid/./node_modules/khroma/dist/methods/is_dark.js","webpack://mermaid/./node_modules/khroma/dist/methods/is_light.js","webpack://mermaid/./node_modules/khroma/dist/methods/is_valid.js","webpack://mermaid/./node_modules/khroma/dist/methods/lighten.js","webpack://mermaid/./node_modules/khroma/dist/methods/lightness.js","webpack://mermaid/./node_modules/khroma/dist/methods/luminance.js","webpack://mermaid/./node_modules/khroma/dist/methods/mix.js","webpack://mermaid/./node_modules/khroma/dist/methods/opacify.js","webpack://mermaid/./node_modules/khroma/dist/methods/red.js","webpack://mermaid/./node_modules/khroma/dist/methods/rgba.js","webpack://mermaid/./node_modules/khroma/dist/methods/saturate.js","webpack://mermaid/./node_modules/khroma/dist/methods/saturation.js","webpack://mermaid/./node_modules/khroma/dist/methods/scale.js","webpack://mermaid/./node_modules/khroma/dist/methods/to_hex.js","webpack://mermaid/./node_modules/khroma/dist/methods/to_hsla.js","webpack://mermaid/./node_modules/khroma/dist/methods/to_keyword.js","webpack://mermaid/./node_modules/khroma/dist/methods/to_rgba.js","webpack://mermaid/./node_modules/khroma/dist/methods/transparentize.js","webpack://mermaid/./node_modules/khroma/dist/utils/channel.js","webpack://mermaid/./node_modules/khroma/dist/utils/index.js","webpack://mermaid/./node_modules/khroma/dist/utils/lang.js","webpack://mermaid/./node_modules/khroma/dist/utils/unit.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//Users/ashishj/projects/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, function() {\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,6],$V1=[1,7],$V2=[1,8],$V3=[1,9],$V4=[1,12],$V5=[1,11],$V6=[1,15,24],$V7=[1,19],$V8=[1,31],$V9=[1,34],$Va=[1,32],$Vb=[1,33],$Vc=[1,35],$Vd=[1,36],$Ve=[1,37],$Vf=[1,38],$Vg=[1,41],$Vh=[1,42],$Vi=[1,43],$Vj=[1,44],$Vk=[15,24],$Vl=[1,56],$Vm=[1,57],$Vn=[1,58],$Vo=[1,59],$Vp=[1,60],$Vq=[1,61],$Vr=[15,24,31,38,39,47,50,51,52,53,54,55,60,62],$Vs=[15,24,29,31,38,39,43,47,50,51,52,53,54,55,60,62,77,78,79,80],$Vt=[7,8,9,10,15,18,22,24],$Vu=[47,77,78,79,80],$Vv=[47,54,55,77,78,79,80],$Vw=[47,50,51,52,53,77,78,79,80],$Vx=[15,24,31],$Vy=[1,93];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"direction\":5,\"directive\":6,\"direction_tb\":7,\"direction_bt\":8,\"direction_rl\":9,\"direction_lr\":10,\"graphConfig\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\"NEWLINE\":15,\":\":16,\"argDirective\":17,\"open_directive\":18,\"type_directive\":19,\"arg_directive\":20,\"close_directive\":21,\"CLASS_DIAGRAM\":22,\"statements\":23,\"EOF\":24,\"statement\":25,\"className\":26,\"alphaNumToken\":27,\"classLiteralName\":28,\"GENERICTYPE\":29,\"relationStatement\":30,\"LABEL\":31,\"classStatement\":32,\"methodStatement\":33,\"annotationStatement\":34,\"clickStatement\":35,\"cssClassStatement\":36,\"CLASS\":37,\"STYLE_SEPARATOR\":38,\"STRUCT_START\":39,\"members\":40,\"STRUCT_STOP\":41,\"ANNOTATION_START\":42,\"ANNOTATION_END\":43,\"MEMBER\":44,\"SEPARATOR\":45,\"relation\":46,\"STR\":47,\"relationType\":48,\"lineType\":49,\"AGGREGATION\":50,\"EXTENSION\":51,\"COMPOSITION\":52,\"DEPENDENCY\":53,\"LINE\":54,\"DOTTED_LINE\":55,\"CALLBACK\":56,\"LINK\":57,\"LINK_TARGET\":58,\"CLICK\":59,\"CALLBACK_NAME\":60,\"CALLBACK_ARGS\":61,\"HREF\":62,\"CSSCLASS\":63,\"commentToken\":64,\"textToken\":65,\"graphCodeTokens\":66,\"textNoTagsToken\":67,\"TAGSTART\":68,\"TAGEND\":69,\"==\":70,\"--\":71,\"PCT\":72,\"DEFAULT\":73,\"SPACE\":74,\"MINUS\":75,\"keywords\":76,\"UNICODE_TEXT\":77,\"NUM\":78,\"ALPHA\":79,\"BQUOTE_STR\":80,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",7:\"direction_tb\",8:\"direction_bt\",9:\"direction_rl\",10:\"direction_lr\",15:\"NEWLINE\",16:\":\",18:\"open_directive\",19:\"type_directive\",20:\"arg_directive\",21:\"close_directive\",22:\"CLASS_DIAGRAM\",24:\"EOF\",29:\"GENERICTYPE\",31:\"LABEL\",37:\"CLASS\",38:\"STYLE_SEPARATOR\",39:\"STRUCT_START\",41:\"STRUCT_STOP\",42:\"ANNOTATION_START\",43:\"ANNOTATION_END\",44:\"MEMBER\",45:\"SEPARATOR\",47:\"STR\",50:\"AGGREGATION\",51:\"EXTENSION\",52:\"COMPOSITION\",53:\"DEPENDENCY\",54:\"LINE\",55:\"DOTTED_LINE\",56:\"CALLBACK\",57:\"LINK\",58:\"LINK_TARGET\",59:\"CLICK\",60:\"CALLBACK_NAME\",61:\"CALLBACK_ARGS\",62:\"HREF\",63:\"CSSCLASS\",66:\"graphCodeTokens\",68:\"TAGSTART\",69:\"TAGEND\",70:\"==\",71:\"--\",72:\"PCT\",73:\"DEFAULT\",74:\"SPACE\",75:\"MINUS\",76:\"keywords\",77:\"UNICODE_TEXT\",78:\"NUM\",79:\"ALPHA\",80:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[23,1],[23,2],[23,3],[26,1],[26,1],[26,2],[26,2],[26,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[32,2],[32,4],[32,5],[32,7],[34,4],[40,1],[40,2],[33,1],[33,2],[33,1],[33,1],[30,3],[30,4],[30,4],[30,5],[46,3],[46,2],[46,2],[46,1],[48,1],[48,1],[48,1],[48,1],[49,1],[49,1],[35,3],[35,4],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[36,3],[64,1],[64,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[67,1],[67,1],[67,1],[67,1],[27,1],[27,1],[27,1],[28,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.setDirection('TB');\nbreak;\ncase 5:\n yy.setDirection('BT');\nbreak;\ncase 6:\n yy.setDirection('RL');\nbreak;\ncase 7:\n yy.setDirection('LR');\nbreak;\ncase 11:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 12:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 13:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 14:\n yy.parseDirective('}%%', 'close_directive', 'class'); \nbreak;\ncase 19: case 20:\n this.$=$$[$0]; \nbreak;\ncase 21:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 22: case 23:\n this.$=$$[$0-1]+'~'+$$[$0]; \nbreak;\ncase 24:\n yy.addRelation($$[$0]); \nbreak;\ncase 25:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 33:\nyy.addClass($$[$0]);\nbreak;\ncase 34:\nyy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 35:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 36:\nyy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 37:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 38:\n this.$ = [$$[$0]]; \nbreak;\ncase 39:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 40:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 41:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 42:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 43:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 44:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 45:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 46:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 47:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 48:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 49:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 50:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 51:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 52:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 53:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 54:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 55:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 56:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 57:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 58: case 64:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 59: case 65:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 60: case 68:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 62: case 70:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 63: case 71:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 67:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 72:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[3]},{1:[2,1]},{1:[2,2]},{3:13,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[2,8]},o($V6,[2,4]),o($V6,[2,5]),o($V6,[2,6]),o($V6,[2,7]),{13:14,19:[1,15]},{15:[1,16]},{19:[2,11]},{1:[2,3]},{14:17,16:[1,18],21:$V7},o([16,21],[2,12]),{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:20,25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{15:[1,45]},{17:46,20:[1,47]},{15:[2,14]},{24:[1,48]},{15:[1,49],24:[2,16]},o($Vk,[2,24],{31:[1,50]}),o($Vk,[2,26]),o($Vk,[2,27]),o($Vk,[2,28]),o($Vk,[2,29]),o($Vk,[2,30]),o($Vk,[2,31]),o($Vk,[2,32]),o($Vk,[2,40],{46:51,48:54,49:55,31:[1,53],47:[1,52],50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq}),{26:62,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,42]),o($Vk,[2,43]),{27:63,77:$Vg,78:$Vh,79:$Vi},{26:64,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:65,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:66,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{47:[1,67]},o($Vr,[2,19],{27:39,28:40,26:68,29:[1,69],77:$Vg,78:$Vh,79:$Vi,80:$Vj}),o($Vr,[2,20],{29:[1,70]}),o($Vs,[2,86]),o($Vs,[2,87]),o($Vs,[2,88]),o([15,24,29,31,38,39,47,50,51,52,53,54,55,60,62],[2,89]),o($Vt,[2,9]),{14:71,21:$V7},{21:[2,13]},{1:[2,15]},{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:72,24:[2,17],25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,25]),{26:73,27:39,28:40,47:[1,74],77:$Vg,78:$Vh,79:$Vi,80:$Vj},{46:75,48:54,49:55,50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq},o($Vk,[2,41]),{49:76,54:$Vp,55:$Vq},o($Vu,[2,51],{48:77,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vv,[2,52]),o($Vv,[2,53]),o($Vv,[2,54]),o($Vv,[2,55]),o($Vw,[2,56]),o($Vw,[2,57]),o($Vk,[2,33],{38:[1,78],39:[1,79]}),{43:[1,80]},{47:[1,81]},{47:[1,82]},{60:[1,83],62:[1,84]},{27:85,77:$Vg,78:$Vh,79:$Vi},o($Vr,[2,21]),o($Vr,[2,22]),o($Vr,[2,23]),{15:[1,86]},{24:[2,18]},o($Vx,[2,44]),{26:87,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:88,27:39,28:40,47:[1,89],77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,50],{48:90,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vu,[2,49]),{27:91,77:$Vg,78:$Vh,79:$Vi},{40:92,44:$Vy},{26:94,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,58],{47:[1,95]}),o($Vk,[2,60],{47:[1,97],58:[1,96]}),o($Vk,[2,64],{47:[1,98],61:[1,99]}),o($Vk,[2,68],{47:[1,101],58:[1,100]}),o($Vk,[2,72]),o($Vt,[2,10]),o($Vx,[2,46]),o($Vx,[2,45]),{26:102,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,48]),o($Vk,[2,34],{39:[1,103]}),{41:[1,104]},{40:105,41:[2,38],44:$Vy},o($Vk,[2,37]),o($Vk,[2,59]),o($Vk,[2,61]),o($Vk,[2,62],{58:[1,106]}),o($Vk,[2,65]),o($Vk,[2,66],{47:[1,107]}),o($Vk,[2,69]),o($Vk,[2,70],{58:[1,108]}),o($Vx,[2,47]),{40:109,44:$Vy},o($Vk,[2,35]),{41:[2,39]},o($Vk,[2,63]),o($Vk,[2,67]),o($Vk,[2,71]),{41:[1,110]},o($Vk,[2,36])],\ndefaultActions: {2:[2,1],3:[2,2],5:[2,8],12:[2,11],13:[2,3],19:[2,14],47:[2,13],48:[2,15],72:[2,18],105:[2,39]},\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 18; \nbreak;\ncase 1:return 7;\nbreak;\ncase 2:return 8;\nbreak;\ncase 3:return 9;\nbreak;\ncase 4:return 10;\nbreak;\ncase 5: this.begin('type_directive'); return 19; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 16; \nbreak;\ncase 7: this.popState(); this.popState(); return 21; \nbreak;\ncase 8:return 20;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 15;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 22;\nbreak;\ncase 14:return 22;\nbreak;\ncase 15: this.begin(\"struct\"); /*console.log('Starting struct');*/ return 39;\nbreak;\ncase 16:return \"EOF_IN_STRUCT\";\nbreak;\ncase 17:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 18: /*console.log('Ending struct');*/this.popState(); return 41;\nbreak;\ncase 19:/* nothing */\nbreak;\ncase 20: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 21:return 37;\nbreak;\ncase 22:return 63;\nbreak;\ncase 23:return 56;\nbreak;\ncase 24:return 57;\nbreak;\ncase 25:return 59;\nbreak;\ncase 26:return 42;\nbreak;\ncase 27:return 43;\nbreak;\ncase 28:this.begin(\"generic\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return \"GENERICTYPE\";\nbreak;\ncase 31:this.begin(\"string\");\nbreak;\ncase 32:this.popState();\nbreak;\ncase 33:return \"STR\";\nbreak;\ncase 34:this.begin(\"bqstring\");\nbreak;\ncase 35:this.popState();\nbreak;\ncase 36:return \"BQUOTE_STR\";\nbreak;\ncase 37:this.begin(\"href\");\nbreak;\ncase 38:this.popState();\nbreak;\ncase 39:return 62;\nbreak;\ncase 40:this.begin(\"callback_name\");\nbreak;\ncase 41:this.popState();\nbreak;\ncase 42:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 43:return 60;\nbreak;\ncase 44:this.popState();\nbreak;\ncase 45:return 61;\nbreak;\ncase 46:return 58;\nbreak;\ncase 47:return 58;\nbreak;\ncase 48:return 58;\nbreak;\ncase 49:return 58;\nbreak;\ncase 50:return 51;\nbreak;\ncase 51:return 51;\nbreak;\ncase 52:return 53;\nbreak;\ncase 53:return 53;\nbreak;\ncase 54:return 52;\nbreak;\ncase 55:return 50;\nbreak;\ncase 56:return 54;\nbreak;\ncase 57:return 55;\nbreak;\ncase 58:return 31;\nbreak;\ncase 59:return 38;\nbreak;\ncase 60:return 75;\nbreak;\ncase 61:return 'DOT';\nbreak;\ncase 62:return 'PLUS';\nbreak;\ncase 63:return 72;\nbreak;\ncase 64:return 'EQUALS';\nbreak;\ncase 65:return 'EQUALS';\nbreak;\ncase 66:return 79;\nbreak;\ncase 67:return 'PUNCTUATION';\nbreak;\ncase 68:return 78;\nbreak;\ncase 69:return 77;\nbreak;\ncase 70:return 74;\nbreak;\ncase 71:return 24;\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)*)/,/^(?:\\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: {\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"callback_args\":{\"rules\":[44,45],\"inclusive\":false},\"callback_name\":{\"rules\":[41,42,43],\"inclusive\":false},\"href\":{\"rules\":[38,39],\"inclusive\":false},\"struct\":{\"rules\":[16,17,18,19,20],\"inclusive\":false},\"generic\":{\"rules\":[29,30],\"inclusive\":false},\"bqstring\":{\"rules\":[35,36],\"inclusive\":false},\"string\":{\"rules\":[32,33],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,13,14,15,21,22,23,24,25,26,27,28,31,34,37,40,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71],\"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,45],$V3=[1,17],$V4=[1,18],$V5=[1,19],$V6=[1,22],$V7=[1,27],$V8=[1,28],$V9=[1,29],$Va=[1,30],$Vb=[1,41],$Vc=[27,42,43],$Vd=[4,6,9,11,23,25,27,45],$Ve=[38,39,40,41],$Vf=[22,33],$Vg=[1,59];\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,\"accDescription\":25,\"description_value\":26,\"ALPHANUM\":27,\"attribute\":28,\"attributeType\":29,\"attributeName\":30,\"attributeKeyType\":31,\"attributeComment\":32,\"ATTRIBUTE_WORD\":33,\"ATTRIBUTE_KEY\":34,\"COMMENT\":35,\"cardinality\":36,\"relType\":37,\"ZERO_OR_ONE\":38,\"ZERO_OR_MORE\":39,\"ONE_OR_MORE\":40,\"ONLY_ONE\":41,\"NON_IDENTIFYING\":42,\"IDENTIFYING\":43,\"WORD\":44,\"open_directive\":45,\"type_directive\":46,\"arg_directive\":47,\"close_directive\":48,\"$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:\"accDescription\",26:\"description_value\",27:\"ALPHANUM\",33:\"ATTRIBUTE_WORD\",34:\"ATTRIBUTE_KEY\",35:\"COMMENT\",38:\"ZERO_OR_ONE\",39:\"ZERO_OR_MORE\",40:\"ONE_OR_MORE\",41:\"ONLY_ONE\",42:\"NON_IDENTIFYING\",43:\"IDENTIFYING\",44:\"WORD\",45:\"open_directive\",46:\"type_directive\",47:\"arg_directive\",48:\"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],[17,1],[21,1],[21,2],[28,2],[28,3],[28,3],[28,4],[29,1],[30,1],[31,1],[32,1],[18,3],[36,1],[36,1],[36,1],[36,1],[37,1],[37,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:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 17:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 18:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 19:\n this.$ = [$$[$0]]; \nbreak;\ncase 20:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 21:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 22:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeKeyType: $$[$0] }; \nbreak;\ncase 23:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 24:\n this.$ = { attributeType: $$[$0-3], attributeName: $$[$0-2], attributeKeyType: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 25: case 26: case 27:\n this.$=$$[$0]; \nbreak;\ncase 28:\n this.$=$$[$0].replace(/\"/g, ''); \nbreak;\ncase 29:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 30:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 31:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 32:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 33:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 34:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 35:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 36:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 37:\n this.$ = $$[$0]; \nbreak;\ncase 38:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 39:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 40:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 41:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,45:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,45:$V1},{13:8,46:[1,9]},{46:[2,38]},{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,45:$V1},{1:[2,2]},{14:20,15:[1,21],48:$V6},o([15,48],[2,39]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:23,12:4,17:16,23:$V3,25:$V4,27:$V5,45:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:24,36:26,20:[1,25],38:$V7,39:$V8,40:$V9,41:$Va}),{24:[1,31]},{26:[1,32]},o([6,9,11,15,20,23,25,27,38,39,40,41,45],[2,18]),{11:[1,33]},{16:34,47:[1,35]},{11:[2,41]},o($V2,[2,5]),{17:36,27:$V5},{21:37,22:[1,38],28:39,29:40,33:$Vb},{37:42,42:[1,43],43:[1,44]},o($Vc,[2,30]),o($Vc,[2,31]),o($Vc,[2,32]),o($Vc,[2,33]),o($V2,[2,16]),o($V2,[2,17]),o($Vd,[2,9]),{14:45,48:$V6},{48:[2,40]},{15:[1,46]},{22:[1,47]},o($V2,[2,14]),{21:48,22:[2,19],28:39,29:40,33:$Vb},{30:49,33:[1,50]},{33:[2,25]},{36:51,38:$V7,39:$V8,40:$V9,41:$Va},o($Ve,[2,34]),o($Ve,[2,35]),{11:[1,52]},{19:53,27:[1,55],44:[1,54]},o($V2,[2,13]),{22:[2,20]},o($Vf,[2,21],{31:56,32:57,34:[1,58],35:$Vg}),o([22,33,34,35],[2,26]),{27:[2,29]},o($Vd,[2,10]),o($V2,[2,12]),o($V2,[2,36]),o($V2,[2,37]),o($Vf,[2,22],{32:60,35:$Vg}),o($Vf,[2,23]),o([22,33,35],[2,27]),o($Vf,[2,28]),o($Vf,[2,24])],\ndefaultActions: {5:[2,38],7:[2,2],22:[2,41],35:[2,40],41:[2,25],48:[2,20],51:[2,29]},\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(\"title\");return 23; \nbreak;\ncase 1: this.popState(); return \"title_value\"; \nbreak;\ncase 2: this.begin(\"accDescription\");return 25; \nbreak;\ncase 3: this.popState(); return \"description_value\"; \nbreak;\ncase 4: this.begin('open_directive'); return 45; \nbreak;\ncase 5: this.begin('type_directive'); return 46; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 7: this.popState(); this.popState(); return 48; \nbreak;\ncase 8:return 47;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 11;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 9;\nbreak;\ncase 14:return 44;\nbreak;\ncase 15:return 4;\nbreak;\ncase 16: this.begin(\"block\"); return 20; \nbreak;\ncase 17:/* skip whitespace in block */\nbreak;\ncase 18:return 34\nbreak;\ncase 19:return 33\nbreak;\ncase 20:return 35;\nbreak;\ncase 21:/* nothing */\nbreak;\ncase 22: this.popState(); return 22; \nbreak;\ncase 23:return yy_.yytext[0];\nbreak;\ncase 24:return 38;\nbreak;\ncase 25:return 39;\nbreak;\ncase 26:return 40;\nbreak;\ncase 27:return 41;\nbreak;\ncase 28:return 38;\nbreak;\ncase 29:return 39;\nbreak;\ncase 30:return 40;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 43;\nbreak;\ncase 33:return 42;\nbreak;\ncase 34:return 42;\nbreak;\ncase 35:return 27;\nbreak;\ncase 36:return yy_.yytext[0];\nbreak;\ncase 37:return 6;\nbreak;\n}\n},\nrules: [/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescription\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/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: {\"accDescription\":{\"rules\":[3],\"inclusive\":false},\"title\":{\"rules\":[1],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"block\":{\"rules\":[17,18,19,20,21,22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,9,10,11,12,13,14,15,16,24,25,26,27,28,29,30,31,32,33,34,35,36,37],\"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,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,59],$Vc=[1,45],$Vd=[1,49],$Ve=[1,33],$Vf=[1,34],$Vg=[1,35],$Vh=[1,36],$Vi=[1,37],$Vj=[1,53],$Vk=[1,60],$Vl=[1,48],$Vm=[1,50],$Vn=[1,52],$Vo=[1,56],$Vp=[1,57],$Vq=[1,38],$Vr=[1,39],$Vs=[1,40],$Vt=[1,41],$Vu=[1,58],$Vv=[1,47],$Vw=[1,51],$Vx=[1,54],$Vy=[1,55],$Vz=[1,46],$VA=[1,63],$VB=[1,68],$VC=[1,20,21,22,23,38,42,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$VD=[1,72],$VE=[1,71],$VF=[1,73],$VG=[20,21,23,76,77],$VH=[1,94],$VI=[1,99],$VJ=[1,102],$VK=[1,103],$VL=[1,96],$VM=[1,101],$VN=[1,104],$VO=[1,97],$VP=[1,109],$VQ=[1,108],$VR=[1,98],$VS=[1,100],$VT=[1,105],$VU=[1,106],$VV=[1,107],$VW=[1,110],$VX=[20,21,22,23,76,77],$VY=[20,21,22,23,48,76,77],$VZ=[20,21,22,23,40,47,48,50,52,54,56,58,60,61,62,64,66,68,69,71,76,77,86,90,100,101,104,106,107,117,118,119,120,121,122],$V_=[20,21,23],$V$=[20,21,23,47,61,62,76,77,86,90,100,101,104,106,107,117,118,119,120,121,122],$V01=[1,12,20,21,22,23,24,38,42,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$V11=[47,61,62,86,90,100,101,104,106,107,117,118,119,120,121,122],$V21=[1,144],$V31=[1,152],$V41=[1,153],$V51=[1,154],$V61=[1,155],$V71=[1,139],$V81=[1,140],$V91=[1,136],$Va1=[1,147],$Vb1=[1,148],$Vc1=[1,149],$Vd1=[1,150],$Ve1=[1,151],$Vf1=[1,156],$Vg1=[1,157],$Vh1=[1,142],$Vi1=[1,145],$Vj1=[1,141],$Vk1=[1,138],$Vl1=[20,21,22,23,38,42,47,61,62,81,82,83,84,85,86,90,100,101,104,106,107,113,114,115,116,117,118,119,120,121,122],$Vm1=[1,160],$Vn1=[20,21,22,23,26,47,61,62,86,100,101,104,106,107,117,118,119,120,121,122],$Vo1=[20,21,22,23,24,26,38,40,41,42,47,51,53,55,57,59,61,62,63,65,67,68,70,72,76,77,81,82,83,84,85,86,87,90,100,101,104,106,107,108,109,117,118,119,120,121,122],$Vp1=[12,21,22,24],$Vq1=[22,101],$Vr1=[1,245],$Vs1=[1,240],$Vt1=[1,241],$Vu1=[1,249],$Vv1=[1,246],$Vw1=[1,243],$Vx1=[1,242],$Vy1=[1,244],$Vz1=[1,247],$VA1=[1,248],$VB1=[1,250],$VC1=[1,268],$VD1=[20,21,23,101],$VE1=[20,21,22,23,61,62,81,97,100,101,104,105,106,107,108];\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,\"link\":44,\"node\":45,\"vertex\":46,\"AMP\":47,\"STYLE_SEPARATOR\":48,\"idString\":49,\"DOUBLECIRCLESTART\":50,\"DOUBLECIRCLEEND\":51,\"PS\":52,\"PE\":53,\"(-\":54,\"-)\":55,\"STADIUMSTART\":56,\"STADIUMEND\":57,\"SUBROUTINESTART\":58,\"SUBROUTINEEND\":59,\"VERTEX_WITH_PROPS_START\":60,\"ALPHA\":61,\"COLON\":62,\"PIPE\":63,\"CYLINDERSTART\":64,\"CYLINDEREND\":65,\"DIAMOND_START\":66,\"DIAMOND_STOP\":67,\"TAGEND\":68,\"TRAPSTART\":69,\"TRAPEND\":70,\"INVTRAPSTART\":71,\"INVTRAPEND\":72,\"linkStatement\":73,\"arrowText\":74,\"TESTSTR\":75,\"START_LINK\":76,\"LINK\":77,\"textToken\":78,\"STR\":79,\"keywords\":80,\"STYLE\":81,\"LINKSTYLE\":82,\"CLASSDEF\":83,\"CLASS\":84,\"CLICK\":85,\"DOWN\":86,\"UP\":87,\"textNoTags\":88,\"textNoTagsToken\":89,\"DEFAULT\":90,\"stylesOpt\":91,\"alphaNum\":92,\"CALLBACKNAME\":93,\"CALLBACKARGS\":94,\"HREF\":95,\"LINK_TARGET\":96,\"HEX\":97,\"numList\":98,\"INTERPOLATE\":99,\"NUM\":100,\"COMMA\":101,\"style\":102,\"styleComponent\":103,\"MINUS\":104,\"UNIT\":105,\"BRKT\":106,\"DOT\":107,\"PCT\":108,\"TAGSTART\":109,\"alphaNumToken\":110,\"idStringToken\":111,\"alphaNumStatement\":112,\"direction_tb\":113,\"direction_bt\":114,\"direction_rl\":115,\"direction_lr\":116,\"PUNCTUATION\":117,\"UNICODE_TEXT\":118,\"PLUS\":119,\"EQUALS\":120,\"MULT\":121,\"UNDERSCORE\":122,\"graphCodeTokens\":123,\"ARROW_CROSS\":124,\"ARROW_POINT\":125,\"ARROW_CIRCLE\":126,\"ARROW_OPEN\":127,\"QUOTE\":128,\"$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\",47:\"AMP\",48:\"STYLE_SEPARATOR\",50:\"DOUBLECIRCLESTART\",51:\"DOUBLECIRCLEEND\",52:\"PS\",53:\"PE\",54:\"(-\",55:\"-)\",56:\"STADIUMSTART\",57:\"STADIUMEND\",58:\"SUBROUTINESTART\",59:\"SUBROUTINEEND\",60:\"VERTEX_WITH_PROPS_START\",61:\"ALPHA\",62:\"COLON\",63:\"PIPE\",64:\"CYLINDERSTART\",65:\"CYLINDEREND\",66:\"DIAMOND_START\",67:\"DIAMOND_STOP\",68:\"TAGEND\",69:\"TRAPSTART\",70:\"TRAPEND\",71:\"INVTRAPSTART\",72:\"INVTRAPEND\",75:\"TESTSTR\",76:\"START_LINK\",77:\"LINK\",79:\"STR\",81:\"STYLE\",82:\"LINKSTYLE\",83:\"CLASSDEF\",84:\"CLASS\",85:\"CLICK\",86:\"DOWN\",87:\"UP\",90:\"DEFAULT\",93:\"CALLBACKNAME\",94:\"CALLBACKARGS\",95:\"HREF\",96:\"LINK_TARGET\",97:\"HEX\",99:\"INTERPOLATE\",100:\"NUM\",101:\"COMMA\",104:\"MINUS\",105:\"UNIT\",106:\"BRKT\",107:\"DOT\",108:\"PCT\",109:\"TAGSTART\",113:\"direction_tb\",114:\"direction_bt\",115:\"direction_rl\",116:\"direction_lr\",117:\"PUNCTUATION\",118:\"UNICODE_TEXT\",119:\"PLUS\",120:\"EQUALS\",121:\"MULT\",122:\"UNDERSCORE\",124:\"ARROW_CROSS\",125:\"ARROW_POINT\",126:\"ARROW_CIRCLE\",127:\"ARROW_OPEN\",128:\"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],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[45,1],[45,5],[45,3],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,8],[46,4],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,1],[44,2],[44,3],[44,3],[44,1],[44,3],[73,1],[74,3],[39,1],[39,2],[39,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[88,1],[88,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],[98,1],[98,3],[91,1],[91,3],[102,1],[102,2],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[103,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[89,1],[89,1],[89,1],[89,1],[49,1],[49,2],[92,1],[92,2],[112,1],[112,1],[112,1],[112,1],[43,1],[43,1],[43,1],[43,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,1],[123,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 79: case 81: case 93: case 149: case 151: case 152:\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 48:\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 49:\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 50:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 51:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 52:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 53:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 54:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 55:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 56:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'doublecircle');\nbreak;\ncase 57:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 61:\nthis.$ = $$[$0-7];yy.addVertex($$[$0-7],$$[$0-1],'rect',undefined,undefined,undefined, Object.fromEntries([[$$[$0-5], $$[$0-3]]]));\nbreak;\ncase 62:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 65:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 68:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 71:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 72:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 73: case 74:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 75:\nthis.$ = $$[$0];\nbreak;\ncase 76:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 77:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 78:\nthis.$ = $$[$0-1];\nbreak;\ncase 80: case 94: case 150:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 95: case 96:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 97:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 98: case 106:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 99: case 107:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 100:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 101:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 102: case 108:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 103: case 109:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 104: case 110:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 105: case 111:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 112:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 113: case 115:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 114:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 116:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 117:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 118:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 119:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 120: case 122:\nthis.$ = [$$[$0]]\nbreak;\ncase 121: case 123:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 125:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 147:\nthis.$=$$[$0]\nbreak;\ncase 148:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 153:\nthis.$='v';\nbreak;\ncase 154:\nthis.$='-';\nbreak;\ncase 155:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 156:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 157:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 158:\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,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{8:61,10:[1,62],15:$VA},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,65],21:[1,66],22:$VB,27:64,30:67},o($VC,[2,11]),o($VC,[2,12]),o($VC,[2,13]),o($VC,[2,14]),o($VC,[2,15]),o($VC,[2,16]),{9:69,20:$VD,21:$VE,23:$VF,44:70,73:74,76:[1,75],77:[1,76]},{9:77,20:$VD,21:$VE,23:$VF},{9:78,20:$VD,21:$VE,23:$VF},{9:79,20:$VD,21:$VE,23:$VF},{9:80,20:$VD,21:$VE,23:$VF},{9:81,20:$VD,21:$VE,23:$VF},{9:83,20:$VD,21:$VE,22:[1,82],23:$VF},o($VC,[2,44]),o($VG,[2,51],{30:84,22:$VB}),{22:[1,85]},{22:[1,86]},{22:[1,87]},{22:[1,88]},{26:$VH,47:$VI,61:$VJ,62:$VK,79:[1,92],86:$VL,92:91,93:[1,89],95:[1,90],100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VC,[2,155]),o($VC,[2,156]),o($VC,[2,157]),o($VC,[2,158]),o($VX,[2,52],{48:[1,111]}),o($VY,[2,71],{111:124,40:[1,112],47:$Vb,50:[1,113],52:[1,114],54:[1,115],56:[1,116],58:[1,117],60:[1,118],61:$Vc,62:$Vd,64:[1,119],66:[1,120],68:[1,121],69:[1,122],71:[1,123],86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz}),o($VZ,[2,147]),o($VZ,[2,172]),o($VZ,[2,173]),o($VZ,[2,174]),o($VZ,[2,175]),o($VZ,[2,176]),o($VZ,[2,177]),o($VZ,[2,178]),o($VZ,[2,179]),o($VZ,[2,180]),o($VZ,[2,181]),o($VZ,[2,182]),o($VZ,[2,183]),o($VZ,[2,184]),o($VZ,[2,185]),o($VZ,[2,186]),o($VZ,[2,187]),{9:125,20:$VD,21:$VE,23:$VF},{11:126,14:[1,127]},o($V_,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,128]},o($V$,[2,34],{30:129,22:$VB}),o($VC,[2,35]),{45:130,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},o($V01,[2,45]),o($V01,[2,46]),o($V01,[2,47]),o($V11,[2,75],{74:131,63:[1,133],75:[1,132]}),{22:$V21,24:$V31,26:$V41,38:$V51,39:134,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o([47,61,62,63,75,86,90,100,101,104,106,107,117,118,119,120,121,122],[2,77]),o($VC,[2,36]),o($VC,[2,37]),o($VC,[2,38]),o($VC,[2,39]),o($VC,[2,40]),{22:$V21,24:$V31,26:$V41,38:$V51,39:158,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($Vl1,$V5,{17:159}),o($VG,[2,50],{47:$Vm1}),{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:161,97:[1,162],100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{90:[1,163],98:164,100:[1,165]},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,90:[1,166],92:167,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:168,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V_,[2,98],{22:[1,169],94:[1,170]}),o($V_,[2,102],{22:[1,171]}),o($V_,[2,106],{110:95,112:173,22:[1,172],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),o($V_,[2,108],{22:[1,174]}),o($Vn1,[2,149]),o($Vn1,[2,151]),o($Vn1,[2,152]),o($Vn1,[2,153]),o($Vn1,[2,154]),o($Vo1,[2,159]),o($Vo1,[2,160]),o($Vo1,[2,161]),o($Vo1,[2,162]),o($Vo1,[2,163]),o($Vo1,[2,164]),o($Vo1,[2,165]),o($Vo1,[2,166]),o($Vo1,[2,167]),o($Vo1,[2,168]),o($Vo1,[2,169]),o($Vo1,[2,170]),o($Vo1,[2,171]),{47:$Vb,49:175,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$V21,24:$V31,26:$V41,38:$V51,39:176,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:177,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:179,42:$V61,47:$VI,52:[1,178],61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:180,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:181,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:182,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{61:[1,183]},{22:$V21,24:$V31,26:$V41,38:$V51,39:184,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:185,42:$V61,47:$VI,61:$VJ,62:$VK,66:[1,186],68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:187,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:188,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:189,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VZ,[2,148]),o($Vp1,[2,3]),{8:190,15:$VA},{15:[2,7]},o($V4,[2,28]),o($V$,[2,33]),o($VG,[2,48],{30:191,22:$VB}),o($V11,[2,72],{22:[1,192]}),{22:[1,193]},{22:$V21,24:$V31,26:$V41,38:$V51,39:194,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,77:[1,195],78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($Vo1,[2,79]),o($Vo1,[2,81]),o($Vo1,[2,137]),o($Vo1,[2,138]),o($Vo1,[2,139]),o($Vo1,[2,140]),o($Vo1,[2,141]),o($Vo1,[2,142]),o($Vo1,[2,143]),o($Vo1,[2,144]),o($Vo1,[2,145]),o($Vo1,[2,146]),o($Vo1,[2,82]),o($Vo1,[2,83]),o($Vo1,[2,84]),o($Vo1,[2,85]),o($Vo1,[2,86]),o($Vo1,[2,87]),o($Vo1,[2,88]),o($Vo1,[2,89]),o($Vo1,[2,90]),o($Vo1,[2,91]),o($Vo1,[2,92]),{9:198,20:$VD,21:$VE,22:$V21,23:$VF,24:$V31,26:$V41,38:$V51,40:[1,197],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{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,199],43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$VB,30:200},{22:[1,201],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:173,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:[1,202]},{22:[1,203]},{22:[1,204],101:[1,205]},o($Vq1,[2,120]),{22:[1,206]},{22:[1,207],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:173,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:[1,208],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:173,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{79:[1,209]},o($V_,[2,100],{22:[1,210]}),{79:[1,211],96:[1,212]},{79:[1,213]},o($Vn1,[2,150]),{79:[1,214],96:[1,215]},o($VX,[2,54],{111:124,47:$Vb,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz}),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,216],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,51:[1,217],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:218,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,53:[1,219],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,55:[1,220],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,57:[1,221],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:[1,222],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{62:[1,223]},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,65:[1,224],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,67:[1,225],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:226,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,227],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,70:[1,228],72:[1,229],76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,70:[1,231],72:[1,230],76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{9:232,20:$VD,21:$VE,23:$VF},o($VG,[2,49],{47:$Vm1}),o($V11,[2,74]),o($V11,[2,73]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,63:[1,233],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V11,[2,76]),o($Vo1,[2,80]),{22:$V21,24:$V31,26:$V41,38:$V51,39:234,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($Vl1,$V5,{17:235}),o($VC,[2,43]),{46:236,47:$Vb,49:43,61:$Vc,62:$Vd,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:237,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:251,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:252,97:$Vv1,99:[1,253],100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:254,97:$Vv1,99:[1,255],100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{100:[1,256]},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:257,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:258,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:259,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V_,[2,99]),{79:[1,260]},o($V_,[2,103],{22:[1,261]}),o($V_,[2,104]),o($V_,[2,107]),o($V_,[2,109],{22:[1,262]}),o($V_,[2,110]),o($VY,[2,55]),o($VY,[2,56]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,53:[1,263],61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VY,[2,63]),o($VY,[2,58]),o($VY,[2,59]),o($VY,[2,60]),{61:[1,264]},o($VY,[2,62]),o($VY,[2,64]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,61:$VJ,62:$VK,67:[1,265],68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VY,[2,66]),o($VY,[2,67]),o($VY,[2,69]),o($VY,[2,68]),o($VY,[2,70]),o($Vp1,[2,4]),o([22,47,61,62,86,90,100,101,104,106,107,117,118,119,120,121,122],[2,78]),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,266],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{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,267],43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},o($VX,[2,53]),o($V_,[2,112],{101:$VC1}),o($VD1,[2,122],{103:269,22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,97:$Vv1,100:$Vw1,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1}),o($VE1,[2,124]),o($VE1,[2,126]),o($VE1,[2,127]),o($VE1,[2,128]),o($VE1,[2,129]),o($VE1,[2,130]),o($VE1,[2,131]),o($VE1,[2,132]),o($VE1,[2,133]),o($VE1,[2,134]),o($VE1,[2,135]),o($VE1,[2,136]),o($V_,[2,113],{101:$VC1}),o($V_,[2,114],{101:$VC1}),{22:[1,270]},o($V_,[2,115],{101:$VC1}),{22:[1,271]},o($Vq1,[2,121]),o($V_,[2,95],{101:$VC1}),o($V_,[2,96],{101:$VC1}),o($V_,[2,97],{110:95,112:173,26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),o($V_,[2,101]),{96:[1,272]},{96:[1,273]},{53:[1,274]},{63:[1,275]},{67:[1,276]},{9:277,20:$VD,21:$VE,23:$VF},o($VC,[2,42]),{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,97:$Vv1,100:$Vw1,102:278,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},o($VE1,[2,125]),{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:279,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,92:280,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,110:95,112:93,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($V_,[2,105]),o($V_,[2,111]),o($VY,[2,57]),{22:$V21,24:$V31,26:$V41,38:$V51,39:281,42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:135,79:$V91,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},o($VY,[2,65]),o($Vl1,$V5,{17:282}),o($VD1,[2,123],{103:269,22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,97:$Vv1,100:$Vw1,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1}),o($V_,[2,118],{110:95,112:173,22:[1,283],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),o($V_,[2,119],{110:95,112:173,22:[1,284],26:$VH,47:$VI,61:$VJ,62:$VK,86:$VL,100:$VM,101:$VN,104:$VO,106:$VP,107:$VQ,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW}),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,285],42:$V61,47:$VI,61:$VJ,62:$VK,68:$V71,76:$V81,78:196,80:146,81:$Va1,82:$Vb1,83:$Vc1,84:$Vd1,85:$Ve1,86:$Vf1,87:$Vg1,89:137,90:$Vh1,100:$VM,101:$VN,104:$Vi1,106:$VP,107:$VQ,108:$Vj1,109:$Vk1,110:143,117:$VR,118:$VS,119:$VT,120:$VU,121:$VV,122:$VW},{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,286],43:31,45:32,46:42,47:$Vb,49:43,61:$Vc,62:$Vd,81:$Ve,82:$Vf,83:$Vg,84:$Vh,85:$Vi,86:$Vj,90:$Vk,100:$Vl,101:$Vm,104:$Vn,106:$Vo,107:$Vp,111:44,113:$Vq,114:$Vr,115:$Vs,116:$Vt,117:$Vu,118:$Vv,119:$Vw,120:$Vx,121:$Vy,122:$Vz},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:287,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},{22:$Vr1,61:$Vs1,62:$Vt1,81:$Vu1,91:288,97:$Vv1,100:$Vw1,102:238,103:239,104:$Vx1,105:$Vy1,106:$Vz1,107:$VA1,108:$VB1},o($VY,[2,61]),o($VC,[2,41]),o($V_,[2,116],{101:$VC1}),o($V_,[2,117],{101:$VC1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],127:[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(\"string\");\nbreak;\ncase 8:this.popState();\nbreak;\ncase 9:return \"STR\";\nbreak;\ncase 10:return 81;\nbreak;\ncase 11:return 90;\nbreak;\ncase 12:return 82;\nbreak;\ncase 13:return 99;\nbreak;\ncase 14:return 83;\nbreak;\ncase 15:return 84;\nbreak;\ncase 16:this.begin(\"href\");\nbreak;\ncase 17:this.popState();\nbreak;\ncase 18:return 95;\nbreak;\ncase 19:this.begin(\"callbackname\");\nbreak;\ncase 20:this.popState();\nbreak;\ncase 21:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 22:return 93;\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:return 94;\nbreak;\ncase 25:this.begin(\"click\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 85;\nbreak;\ncase 28:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 29:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 30:return 38;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 96;\nbreak;\ncase 33:return 96;\nbreak;\ncase 34:return 96;\nbreak;\ncase 35:return 96;\nbreak;\ncase 36: this.popState(); return 25; \nbreak;\ncase 37: this.popState(); return 26; \nbreak;\ncase 38: this.popState(); return 26; \nbreak;\ncase 39: this.popState(); return 26; \nbreak;\ncase 40: this.popState(); return 26; \nbreak;\ncase 41: this.popState(); return 26; \nbreak;\ncase 42: this.popState(); return 26; \nbreak;\ncase 43: this.popState(); return 26; \nbreak;\ncase 44: this.popState(); return 26; \nbreak;\ncase 45: this.popState(); return 26; \nbreak;\ncase 46: this.popState(); return 26; \nbreak;\ncase 47:return 113;\nbreak;\ncase 48:return 114;\nbreak;\ncase 49:return 115;\nbreak;\ncase 50:return 116;\nbreak;\ncase 51: return 100;\nbreak;\ncase 52:return 106;\nbreak;\ncase 53:return 48;\nbreak;\ncase 54:return 62;\nbreak;\ncase 55:return 47;\nbreak;\ncase 56:return 20;\nbreak;\ncase 57:return 101;\nbreak;\ncase 58:return 121;\nbreak;\ncase 59:return 77;\nbreak;\ncase 60:return 77;\nbreak;\ncase 61:return 77;\nbreak;\ncase 62:return 76;\nbreak;\ncase 63:return 76;\nbreak;\ncase 64:return 76;\nbreak;\ncase 65:return 54;\nbreak;\ncase 66:return 55;\nbreak;\ncase 67:return 56;\nbreak;\ncase 68:return 57;\nbreak;\ncase 69:return 58;\nbreak;\ncase 70:return 59;\nbreak;\ncase 71:return 60;\nbreak;\ncase 72:return 64;\nbreak;\ncase 73:return 65;\nbreak;\ncase 74:return 50;\nbreak;\ncase 75:return 51;\nbreak;\ncase 76:return 104;\nbreak;\ncase 77:return 107;\nbreak;\ncase 78:return 122;\nbreak;\ncase 79:return 119;\nbreak;\ncase 80:return 108;\nbreak;\ncase 81:return 120;\nbreak;\ncase 82:return 120;\nbreak;\ncase 83:return 109;\nbreak;\ncase 84:return 68;\nbreak;\ncase 85:return 87;\nbreak;\ncase 86:return 'SEP';\nbreak;\ncase 87:return 86;\nbreak;\ncase 88:return 61;\nbreak;\ncase 89:return 70;\nbreak;\ncase 90:return 69;\nbreak;\ncase 91:return 72;\nbreak;\ncase 92:return 71;\nbreak;\ncase 93:return 117;\nbreak;\ncase 94:return 118;\nbreak;\ncase 95:return 63;\nbreak;\ncase 96:return 52;\nbreak;\ncase 97:return 53;\nbreak;\ncase 98:return 40;\nbreak;\ncase 99:return 41;\nbreak;\ncase 100:return 66\nbreak;\ncase 101:return 67\nbreak;\ncase 102:return 128;\nbreak;\ncase 103:return 21;\nbreak;\ncase 104:return 22;\nbreak;\ncase 105:return 23;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)[^\\n]*)/,/^(?:[^\\}]%%[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?: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\":[23,24],\"inclusive\":false},\"callbackname\":{\"rules\":[20,21,22],\"inclusive\":false},\"href\":{\"rules\":[17,18],\"inclusive\":false},\"click\":{\"rules\":[26,27],\"inclusive\":false},\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":false},\"string\":{\"rules\":[8,9],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,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,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],\"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,29,34],$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,25],$Vd=[1,27],$Ve=[1,30],$Vf=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,29,34];\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,\"section\":20,\"clickStatement\":21,\"taskTxt\":22,\"taskData\":23,\"openDirective\":24,\"typeDirective\":25,\"closeDirective\":26,\":\":27,\"argDirective\":28,\"click\":29,\"callbackname\":30,\"callbackargs\":31,\"href\":32,\"clickStatementDebug\":33,\"open_directive\":34,\"type_directive\":35,\"arg_directive\":36,\"close_directive\":37,\"$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:\"section\",22:\"taskTxt\",23:\"taskData\",27:\":\",29:\"click\",30:\"callbackname\",31:\"callbackargs\",32:\"href\",34:\"open_directive\",35:\"type_directive\",36:\"arg_directive\",37:\"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,1],[10,1],[10,2],[10,1],[4,4],[4,6],[21,2],[21,3],[21,3],[21,4],[21,3],[21,4],[21,2],[33,2],[33,3],[33,3],[33,4],[33,3],[33,4],[33,2],[24,1],[25,1],[28,1],[26,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:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 19:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 23:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 24:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 25:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 26:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 27:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 28:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 29:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 30: case 36:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 31: case 32: case 34:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 33: case 35:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 37:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 38:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 39:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 40:\n yy.parseDirective('}%%', 'close_directive', 'gantt'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,24:4,34:$V1},{1:[3]},{3:6,4:2,5:$V0,24:4,34:$V1},o($V2,[2,3],{6:7}),{25:8,35:[1,9]},{35:[2,37]},{1:[2,1]},{4:26,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,21:24,22:$Vc,24:4,29:$Vd,34:$V1},{26:28,27:[1,29],37:$Ve},o([27,37],[2,38]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:26,10:31,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:24,22:$Vc,24:4,29:$Vd,34:$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]),o($V2,[2,17]),o($V2,[2,18]),{23:[1,32]},o($V2,[2,20]),{30:[1,33],32:[1,34]},{11:[1,35]},{28:36,36:[1,37]},{11:[2,40]},o($V2,[2,5]),o($V2,[2,19]),o($V2,[2,23],{31:[1,38],32:[1,39]}),o($V2,[2,29],{30:[1,40]}),o($Vf,[2,21]),{26:41,37:$Ve},{37:[2,39]},o($V2,[2,24],{32:[1,42]}),o($V2,[2,25]),o($V2,[2,27],{31:[1,43]}),{11:[1,44]},o($V2,[2,26]),o($V2,[2,28]),o($Vf,[2,22])],\ndefaultActions: {5:[2,37],6:[2,1],30:[2,40],37:[2,39]},\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 34; \nbreak;\ncase 1: this.begin('type_directive'); return 35; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 27; \nbreak;\ncase 3: this.popState(); this.popState(); return 37; \nbreak;\ncase 4:return 36;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:/* do nothing */\nbreak;\ncase 8:return 11;\nbreak;\ncase 9:/* skip whitespace */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:/* skip comments */\nbreak;\ncase 12:this.begin(\"href\");\nbreak;\ncase 13:this.popState();\nbreak;\ncase 14:return 32;\nbreak;\ncase 15:this.begin(\"callbackname\");\nbreak;\ncase 16:this.popState();\nbreak;\ncase 17:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 18:return 30;\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:return 31;\nbreak;\ncase 21:this.begin(\"click\");\nbreak;\ncase 22:this.popState();\nbreak;\ncase 23:return 29;\nbreak;\ncase 24:return 5;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 14;\nbreak;\ncase 28:return 15;\nbreak;\ncase 29:return 17;\nbreak;\ncase 30:return 16;\nbreak;\ncase 31:return 18;\nbreak;\ncase 32:return 'date';\nbreak;\ncase 33:return 19;\nbreak;\ncase 34:return 20;\nbreak;\ncase 35:return 22;\nbreak;\ncase 36:return 23;\nbreak;\ncase 37:return 27;\nbreak;\ncase 38:return 7;\nbreak;\ncase 39:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/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,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\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\":[19,20],\"inclusive\":false},\"callbackname\":{\"rules\":[16,17,18],\"inclusive\":false},\"href\":{\"rules\":[13,14],\"inclusive\":false},\"click\":{\"rules\":[22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],\"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,18,20,21,22,37,41],$V8=[8,14,18,20,21,22],$V9=[8,13,14,18,20,21,22],$Va=[1,26],$Vb=[6,8,14,37,41],$Vc=[8,14,41],$Vd=[1,53],$Ve=[1,54],$Vf=[1,55],$Vg=[8,14,24,28,29,41];\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,\"BRANCH\":18,\"ID\":19,\"CHECKOUT\":20,\"MERGE\":21,\"COMMIT\":22,\"commit_arg\":23,\"COMMIT_TAG\":24,\"STR\":25,\"COMMIT_TYPE\":26,\"commitType\":27,\"COMMIT_ID\":28,\"COMMIT_MSG\":29,\"NORMAL\":30,\"REVERSE\":31,\"HIGHLIGHT\":32,\"openDirective\":33,\"typeDirective\":34,\"closeDirective\":35,\"argDirective\":36,\"open_directive\":37,\"type_directive\":38,\"arg_directive\":39,\"close_directive\":40,\";\":41,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"GG\",8:\"EOF\",9:\":\",10:\"DIR\",13:\"OPT\",14:\"NL\",18:\"BRANCH\",19:\"ID\",20:\"CHECKOUT\",21:\"MERGE\",22:\"COMMIT\",24:\"COMMIT_TAG\",25:\"STR\",26:\"COMMIT_TYPE\",28:\"COMMIT_ID\",29:\"COMMIT_MSG\",30:\"NORMAL\",31:\"REVERSE\",32:\"HIGHLIGHT\",37:\"open_directive\",38:\"type_directive\",39:\"arg_directive\",40:\"close_directive\",41:\";\"},\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,2],[16,2],[16,2],[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],[23,0],[23,1],[27,1],[27,1],[27,1],[5,3],[5,5],[33,1],[34,1],[36,1],[35,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 15:\nyy.branch($$[$0])\nbreak;\ncase 16:\nyy.checkout($$[$0])\nbreak;\ncase 17:\nyy.merge($$[$0])\nbreak;\ncase 18:\nyy.commit($$[$0])\nbreak;\ncase 19:\nyy.commit('','',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 20:\nyy.commit('','',$$[$0],'')\nbreak;\ncase 21:\nyy.commit('','',$$[$0],$$[$0-2])\nbreak;\ncase 22:\nyy.commit('','',$$[$0-2],$$[$0])\nbreak;\ncase 23:\nyy.commit('',$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 24:\nyy.commit('',$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 25:\nyy.commit('',$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 26:\nyy.commit('',$$[$0-2],$$[$0],'')\nbreak;\ncase 27:\nyy.commit('',$$[$0],$$[$0-2],'')\nbreak;\ncase 28:\nyy.commit('',$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 29:\nyy.commit('',$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 30:\nyy.commit('',$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 31:\nyy.commit('',$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 32:\nyy.commit('',$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 33:\nyy.commit('',$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 34:\nyy.commit($$[$0],'',yy.commitType.NORMAL,'')\nbreak;\ncase 35:\nyy.commit($$[$0],'',yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 36:\nyy.commit($$[$0-2],'',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 37:\nyy.commit($$[$0-2],'',$$[$0],'')\nbreak;\ncase 38:\nyy.commit($$[$0],'',$$[$0-2],'')\nbreak;\ncase 39:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,'')\nbreak;\ncase 40:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 41:\nyy.commit($$[$0-4],'',$$[$0-2],$$[$0])\nbreak;\ncase 42:\nyy.commit($$[$0-4],'',$$[$0],$$[$0-2])\nbreak;\ncase 43:\nyy.commit($$[$0-2],'',$$[$0-4],$$[$0])\nbreak;\ncase 44:\nyy.commit($$[$0],'',$$[$0-4],$$[$0-2])\nbreak;\ncase 45:\nyy.commit($$[$0],'',$$[$0-2],$$[$0-4])\nbreak;\ncase 46:\nyy.commit($$[$0-2],'',$$[$0],$$[$0-4])\nbreak;\ncase 47:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],'')\nbreak;\ncase 48:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],'')\nbreak;\ncase 49:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],'')\nbreak;\ncase 50:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],'')\nbreak;\ncase 51:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],'')\nbreak;\ncase 52:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],'')\nbreak;\ncase 53:\nyy.commit($$[$0-4],$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 54:\nyy.commit($$[$0-4],$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 55:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 56:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 57:\nyy.commit($$[$0],$$[$0-4],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 58:\nyy.commit($$[$0-2],$$[$0-4],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 59:\nyy.commit($$[$0-6],$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 60:\nyy.commit($$[$0-6],$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 61:\nyy.commit($$[$0-6],$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 62:\nyy.commit($$[$0-6],$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 63:\nyy.commit($$[$0-6],$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 64:\nyy.commit($$[$0-6],$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 65:\nyy.commit($$[$0-4],$$[$0-6],$$[$0-2],$$[$0])\nbreak;\ncase 66:\nyy.commit($$[$0-4],$$[$0-6],$$[$0],$$[$0-2])\nbreak;\ncase 67:\nyy.commit($$[$0-2],$$[$0-6],$$[$0-4],$$[$0])\nbreak;\ncase 68:\nyy.commit($$[$0],$$[$0-6],$$[$0-4],$$[$0-2])\nbreak;\ncase 69:\nyy.commit($$[$0-2],$$[$0-6],$$[$0],$$[$0-4])\nbreak;\ncase 70:\nyy.commit($$[$0],$$[$0-6],$$[$0-2],$$[$0-4])\nbreak;\ncase 71:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],$$[$0-6])\nbreak;\ncase 72:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],$$[$0-6])\nbreak;\ncase 73:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],$$[$0-6])\nbreak;\ncase 74:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],$$[$0-6])\nbreak;\ncase 75:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],$$[$0-6])\nbreak;\ncase 76:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],$$[$0-6])\nbreak;\ncase 77:\nyy.commit($$[$0-2],$$[$0-4],$$[$0-6],$$[$0])\nbreak;\ncase 78:\nyy.commit($$[$0],$$[$0-4],$$[$0-6],$$[$0-2])\nbreak;\ncase 79:\nyy.commit($$[$0-2],$$[$0],$$[$0-6],$$[$0-4])\nbreak;\ncase 80:\nyy.commit($$[$0],$$[$0-2],$$[$0-6],$$[$0-4])\nbreak;\ncase 81:\nyy.commit($$[$0-4],$$[$0-2],$$[$0-6],$$[$0])\nbreak;\ncase 82:\nyy.commit($$[$0-4],$$[$0],$$[$0-6],$$[$0-2])\nbreak;\ncase 83:\nthis.$ = \"\"\nbreak;\ncase 84:\nthis.$=$$[$0]\nbreak;\ncase 85:\n this.$=yy.commitType.NORMAL;\nbreak;\ncase 86:\n this.$=yy.commitType.REVERSE;\nbreak;\ncase 87:\n this.$=yy.commitType.HIGHLIGHT;\nbreak;\ncase 90:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 91:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 92:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 93:\n yy.parseDirective('}%%', 'close_directive', 'gitGraph'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{3:11,4:2,5:3,6:$V0,8:$V1,14:$V2,33:8,37:$V3,41:$V4},{7:12,8:$V5,9:[1,13],10:[1,14],11:15,14:$V6},o($V7,[2,94]),o($V7,[2,95]),o($V7,[2,96]),{34:17,38:[1,18]},{38:[2,90]},{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],35:24,40:$Va},o([9,40],[2,91]),{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:[1,33],20:[1,34],21:[1,35],22:[1,36]},o($V9,[2,8]),o($Vb,[2,88]),{36:37,39:[1,38]},o($Vb,[2,93]),{1:[2,4]},{8:[1,39]},o($V8,[2,11]),{4:40,8:$V1,14:$V2,41:$V4},o($V8,[2,13]),o($Vc,[2,14]),{19:[1,41]},{19:[1,42]},{19:[1,43]},o($Vc,[2,83],{23:44,24:[1,45],25:[1,49],26:[1,46],28:[1,47],29:[1,48]}),{35:50,40:$Va},{40:[2,92]},{1:[2,5]},o($V8,[2,12]),o($Vc,[2,15]),o($Vc,[2,16]),o($Vc,[2,17]),o($Vc,[2,18]),{25:[1,51]},{27:52,30:$Vd,31:$Ve,32:$Vf},{25:[1,56]},{25:[1,57]},o($Vc,[2,84]),o($Vb,[2,89]),o($Vc,[2,19],{26:[1,58],28:[1,59],29:[1,60]}),o($Vc,[2,20],{24:[1,61],28:[1,62],29:[1,63]}),o($Vg,[2,85]),o($Vg,[2,86]),o($Vg,[2,87]),o($Vc,[2,23],{24:[1,64],26:[1,65],29:[1,66]}),o($Vc,[2,34],{24:[1,67],26:[1,68],28:[1,69]}),{27:70,30:$Vd,31:$Ve,32:$Vf},{25:[1,71]},{25:[1,72]},{25:[1,73]},{25:[1,74]},{25:[1,75]},{25:[1,76]},{27:77,30:$Vd,31:$Ve,32:$Vf},{25:[1,78]},{25:[1,79]},{27:80,30:$Vd,31:$Ve,32:$Vf},{25:[1,81]},o($Vc,[2,21],{28:[1,82],29:[1,83]}),o($Vc,[2,25],{26:[1,84],29:[1,85]}),o($Vc,[2,35],{26:[1,86],28:[1,87]}),o($Vc,[2,22],{28:[1,88],29:[1,89]}),o($Vc,[2,27],{24:[1,90],29:[1,91]}),o($Vc,[2,38],{24:[1,92],28:[1,93]}),o($Vc,[2,24],{26:[1,94],29:[1,95]}),o($Vc,[2,26],{24:[1,96],29:[1,97]}),o($Vc,[2,39],{24:[1,99],26:[1,98]}),o($Vc,[2,36],{26:[1,100],28:[1,101]}),o($Vc,[2,37],{24:[1,102],28:[1,103]}),o($Vc,[2,40],{24:[1,105],26:[1,104]}),{25:[1,106]},{25:[1,107]},{27:108,30:$Vd,31:$Ve,32:$Vf},{25:[1,109]},{27:110,30:$Vd,31:$Ve,32:$Vf},{25:[1,111]},{25:[1,112]},{25:[1,113]},{25:[1,114]},{25:[1,115]},{25:[1,116]},{25:[1,117]},{27:118,30:$Vd,31:$Ve,32:$Vf},{25:[1,119]},{25:[1,120]},{25:[1,121]},{27:122,30:$Vd,31:$Ve,32:$Vf},{25:[1,123]},{27:124,30:$Vd,31:$Ve,32:$Vf},{25:[1,125]},{25:[1,126]},{25:[1,127]},{27:128,30:$Vd,31:$Ve,32:$Vf},{25:[1,129]},o($Vc,[2,32],{29:[1,130]}),o($Vc,[2,45],{28:[1,131]}),o($Vc,[2,33],{29:[1,132]}),o($Vc,[2,56],{26:[1,133]}),o($Vc,[2,46],{28:[1,134]}),o($Vc,[2,55],{26:[1,135]}),o($Vc,[2,31],{29:[1,136]}),o($Vc,[2,44],{28:[1,137]}),o($Vc,[2,30],{29:[1,138]}),o($Vc,[2,50],{24:[1,139]}),o($Vc,[2,43],{28:[1,140]}),o($Vc,[2,49],{24:[1,141]}),o($Vc,[2,29],{29:[1,142]}),o($Vc,[2,57],{26:[1,143]}),o($Vc,[2,28],{29:[1,144]}),o($Vc,[2,51],{24:[1,145]}),o($Vc,[2,52],{24:[1,146]}),o($Vc,[2,58],{26:[1,147]}),o($Vc,[2,42],{28:[1,148]}),o($Vc,[2,53],{26:[1,149]}),o($Vc,[2,41],{28:[1,150]}),o($Vc,[2,47],{24:[1,151]}),o($Vc,[2,48],{24:[1,152]}),o($Vc,[2,54],{26:[1,153]}),{25:[1,154]},{25:[1,155]},{25:[1,156]},{27:157,30:$Vd,31:$Ve,32:$Vf},{25:[1,158]},{27:159,30:$Vd,31:$Ve,32:$Vf},{25:[1,160]},{25:[1,161]},{25:[1,162]},{25:[1,163]},{25:[1,164]},{25:[1,165]},{25:[1,166]},{27:167,30:$Vd,31:$Ve,32:$Vf},{25:[1,168]},{25:[1,169]},{25:[1,170]},{27:171,30:$Vd,31:$Ve,32:$Vf},{25:[1,172]},{27:173,30:$Vd,31:$Ve,32:$Vf},{25:[1,174]},{25:[1,175]},{25:[1,176]},{27:177,30:$Vd,31:$Ve,32:$Vf},o($Vc,[2,73]),o($Vc,[2,74]),o($Vc,[2,71]),o($Vc,[2,72]),o($Vc,[2,76]),o($Vc,[2,75]),o($Vc,[2,80]),o($Vc,[2,79]),o($Vc,[2,78]),o($Vc,[2,77]),o($Vc,[2,82]),o($Vc,[2,81]),o($Vc,[2,70]),o($Vc,[2,69]),o($Vc,[2,68]),o($Vc,[2,67]),o($Vc,[2,65]),o($Vc,[2,66]),o($Vc,[2,64]),o($Vc,[2,63]),o($Vc,[2,62]),o($Vc,[2,61]),o($Vc,[2,59]),o($Vc,[2,60])],\ndefaultActions: {9:[2,90],10:[2,1],11:[2,2],19:[2,3],27:[2,4],38:[2,92],39:[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 37; \nbreak;\ncase 1: this.begin('type_directive'); return 38; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 9; \nbreak;\ncase 3: this.popState(); this.popState(); return 40; \nbreak;\ncase 4:return 39;\nbreak;\ncase 5:/*{console.log('New line');return 14;}*/ return 14;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 6;\nbreak;\ncase 10:return 22;\nbreak;\ncase 11:return 28;\nbreak;\ncase 12:return 26;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 30;\nbreak;\ncase 15:return 31;\nbreak;\ncase 16:return 32;\nbreak;\ncase 17:return 24;\nbreak;\ncase 18:return 18;\nbreak;\ncase 19:return 21;\nbreak;\ncase 20:return 20;\nbreak;\ncase 21:return 10;\nbreak;\ncase 22:return 10;\nbreak;\ncase 23:return 9;\nbreak;\ncase 24:return 'CARET'\nbreak;\ncase 25:this.begin(\"options\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 13;\nbreak;\ncase 28:this.begin(\"string\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 19;\nbreak;\ncase 32:return 8;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/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,/^(?:merge\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][-_\\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\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},\"options\":{\"rules\":[26,27],\"inclusive\":false},\"string\":{\"rules\":[29,30],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,28,31,32],\"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,22,23,24,25],$V6=[2,5],$V7=[1,6,11,13,15,22,23,24,25],$V8=[22,23,24],$V9=[2,8],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,25],$Ve=[6,22,23,24,25];\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,\"accDescription\":15,\"description_value\":16,\"openDirective\":17,\"typeDirective\":18,\"closeDirective\":19,\":\":20,\"argDirective\":21,\"NEWLINE\":22,\";\":23,\"EOF\":24,\"open_directive\":25,\"type_directive\":26,\"arg_directive\":27,\"close_directive\":28,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",8:\"showData\",11:\"txt\",12:\"value\",13:\"title\",14:\"title_value\",15:\"accDescription\",16:\"description_value\",20:\":\",22:\"NEWLINE\",23:\";\",24:\"EOF\",25:\"open_directive\",26:\"type_directive\",27:\"arg_directive\",28:\"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,1],[5,3],[5,5],[4,1],[4,1],[4,1],[17,1],[18,1],[21,1],[19,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.setTitle(this.$); \nbreak;\ncase 11:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \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', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},{3:11,4:2,5:3,6:$V0,17:8,22:$V1,23:$V2,24:$V3,25:$V4},o($V5,$V6,{7:12,8:[1,13]}),o($V7,[2,15]),o($V7,[2,16]),o($V7,[2,17]),{18:14,26:[1,15]},{26:[2,18]},{1:[2,1]},{1:[2,2]},o($V8,$V9,{17:8,9:16,10:17,5:21,1:[2,3],11:$Va,13:$Vb,15:$Vc,25:$V4}),o($V5,$V6,{7:22}),{19:23,20:[1,24],28:$Vd},o([20,28],[2,19]),o($V5,[2,6]),{4:26,22:$V1,23:$V2,24:$V3},{12:[1,27]},{14:[1,28]},{16:[1,29]},o($V8,[2,12]),o($V8,$V9,{17:8,9:16,10:17,5:21,1:[2,4],11:$Va,13:$Vb,15:$Vc,25:$V4}),o($Ve,[2,13]),{21:30,27:[1,31]},o($Ve,[2,21]),o($V5,[2,7]),o($V8,[2,9]),o($V8,[2,10]),o($V8,[2,11]),{19:32,28:$Vd},{28:[2,20]},o($Ve,[2,14])],\ndefaultActions: {9:[2,18],10:[2,1],11:[2,2],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\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 25; \nbreak;\ncase 1: this.begin('type_directive'); return 26; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 20; \nbreak;\ncase 3: this.popState(); this.popState(); return 28; \nbreak;\ncase 4:return 27;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 22;\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(\"accDescription\");return 15; \nbreak;\ncase 13: this.popState(); return \"description_value\"; \nbreak;\ncase 14: this.begin(\"string\"); \nbreak;\ncase 15: this.popState(); \nbreak;\ncase 16: return \"txt\"; \nbreak;\ncase 17:return 6;\nbreak;\ncase 18:return 8;\nbreak;\ncase 19:return \"value\";\nbreak;\ncase 20:return 24;\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,/^(?:accDescription\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:pie\\b)/i,/^(?:showData\\b)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\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},\"accDescription\":{\"rules\":[13],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[15,16],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,14,17,18,19,20],\"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,17],$V3=[2,10],$V4=[1,21],$V5=[1,22],$V6=[1,23],$V7=[1,24],$V8=[1,25],$V9=[1,26],$Va=[1,19],$Vb=[1,27],$Vc=[1,28],$Vd=[1,31],$Ve=[66,67],$Vf=[5,8,14,35,36,37,38,39,40,48,55,57,66,67],$Vg=[5,6,8,14,35,36,37,38,39,40,48,66,67],$Vh=[1,51],$Vi=[1,52],$Vj=[1,53],$Vk=[1,54],$Vl=[1,55],$Vm=[1,56],$Vn=[1,57],$Vo=[57,58],$Vp=[1,69],$Vq=[1,65],$Vr=[1,66],$Vs=[1,67],$Vt=[1,68],$Vu=[1,70],$Vv=[1,74],$Vw=[1,75],$Vx=[1,72],$Vy=[1,73],$Vz=[5,8,14,35,36,37,38,39,40,48,66,67];\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,\"open_directive\":14,\"type_directive\":15,\"arg_directive\":16,\"close_directive\":17,\"requirementDef\":18,\"elementDef\":19,\"relationshipDef\":20,\"requirementType\":21,\"requirementName\":22,\"STRUCT_START\":23,\"requirementBody\":24,\"ID\":25,\"COLONSEP\":26,\"id\":27,\"TEXT\":28,\"text\":29,\"RISK\":30,\"riskLevel\":31,\"VERIFYMTHD\":32,\"verifyType\":33,\"STRUCT_STOP\":34,\"REQUIREMENT\":35,\"FUNCTIONAL_REQUIREMENT\":36,\"INTERFACE_REQUIREMENT\":37,\"PERFORMANCE_REQUIREMENT\":38,\"PHYSICAL_REQUIREMENT\":39,\"DESIGN_CONSTRAINT\":40,\"LOW_RISK\":41,\"MED_RISK\":42,\"HIGH_RISK\":43,\"VERIFY_ANALYSIS\":44,\"VERIFY_DEMONSTRATION\":45,\"VERIFY_INSPECTION\":46,\"VERIFY_TEST\":47,\"ELEMENT\":48,\"elementName\":49,\"elementBody\":50,\"TYPE\":51,\"type\":52,\"DOCREF\":53,\"ref\":54,\"END_ARROW_L\":55,\"relationship\":56,\"LINE\":57,\"END_ARROW_R\":58,\"CONTAINS\":59,\"COPIES\":60,\"DERIVES\":61,\"SATISFIES\":62,\"VERIFIES\":63,\"REFINES\":64,\"TRACES\":65,\"unqString\":66,\"qString\":67,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",12:\":\",14:\"open_directive\",15:\"type_directive\",16:\"arg_directive\",17:\"close_directive\",23:\"STRUCT_START\",25:\"ID\",26:\"COLONSEP\",28:\"TEXT\",30:\"RISK\",32:\"VERIFYMTHD\",34:\"STRUCT_STOP\",35:\"REQUIREMENT\",36:\"FUNCTIONAL_REQUIREMENT\",37:\"INTERFACE_REQUIREMENT\",38:\"PERFORMANCE_REQUIREMENT\",39:\"PHYSICAL_REQUIREMENT\",40:\"DESIGN_CONSTRAINT\",41:\"LOW_RISK\",42:\"MED_RISK\",43:\"HIGH_RISK\",44:\"VERIFY_ANALYSIS\",45:\"VERIFY_DEMONSTRATION\",46:\"VERIFY_INSPECTION\",47:\"VERIFY_TEST\",48:\"ELEMENT\",51:\"TYPE\",53:\"DOCREF\",55:\"END_ARROW_L\",57:\"LINE\",58:\"END_ARROW_R\",59:\"CONTAINS\",60:\"COPIES\",61:\"DERIVES\",62:\"SATISFIES\",63:\"VERIFIES\",64:\"REFINES\",65:\"TRACES\",66:\"unqString\",67:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,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 yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 7:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 8:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 9:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\ncase 10:\n this.$ = [] \nbreak;\ncase 16:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 17:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 18:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 19:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 20:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 23:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 24:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 25:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 26:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 27:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 28:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 29:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 30:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 31:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 32:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 33:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 34:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 35:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 36:\n yy.addElement($$[$0-3]) \nbreak;\ncase 37:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 38:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 41:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 42:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 43:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 44:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 45:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 46:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 47:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 48:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 49:\n this.$=yy.Relationships.TRACES;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:4,14:$V1},{1:[3]},{3:7,4:2,5:[1,6],6:$V0,9:4,14:$V1},{5:[1,8]},{10:9,15:[1,10]},{15:[2,6]},{3:11,4:2,6:$V0,9:4,14:$V1},{1:[2,2]},{4:16,5:$V2,7:12,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{11:29,12:[1,30],17:$Vd},o([12,17],[2,7]),{1:[2,1]},{8:[1,32]},{4:16,5:$V2,7:33,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:34,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:35,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:36,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:37,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{22:38,66:[1,39],67:[1,40]},{49:41,66:[1,42],67:[1,43]},{55:[1,44],57:[1,45]},o($Ve,[2,23]),o($Ve,[2,24]),o($Ve,[2,25]),o($Ve,[2,26]),o($Ve,[2,27]),o($Ve,[2,28]),o($Vf,[2,52]),o($Vf,[2,53]),o($Vg,[2,4]),{13:46,16:[1,47]},o($Vg,[2,9]),{1:[2,3]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{23:[1,48]},{23:[2,50]},{23:[2,51]},{23:[1,49]},{23:[2,56]},{23:[2,57]},{56:50,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{56:58,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{11:59,17:$Vd},{17:[2,8]},{5:[1,60]},{5:[1,61]},{57:[1,62]},o($Vo,[2,43]),o($Vo,[2,44]),o($Vo,[2,45]),o($Vo,[2,46]),o($Vo,[2,47]),o($Vo,[2,48]),o($Vo,[2,49]),{58:[1,63]},o($Vg,[2,5]),{5:$Vp,24:64,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:71,51:$Vx,53:$Vy},{27:76,66:$Vb,67:$Vc},{27:77,66:$Vb,67:$Vc},o($Vz,[2,16]),{26:[1,78]},{26:[1,79]},{26:[1,80]},{26:[1,81]},{5:$Vp,24:82,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},o($Vz,[2,22]),o($Vz,[2,36]),{26:[1,83]},{26:[1,84]},{5:$Vv,34:$Vw,50:85,51:$Vx,53:$Vy},o($Vz,[2,40]),o($Vz,[2,41]),o($Vz,[2,42]),{27:86,66:$Vb,67:$Vc},{29:87,66:[1,88],67:[1,89]},{31:90,41:[1,91],42:[1,92],43:[1,93]},{33:94,44:[1,95],45:[1,96],46:[1,97],47:[1,98]},o($Vz,[2,21]),{52:99,66:[1,100],67:[1,101]},{54:102,66:[1,103],67:[1,104]},o($Vz,[2,39]),{5:[1,105]},{5:[1,106]},{5:[2,54]},{5:[2,55]},{5:[1,107]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[1,108]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[2,35]},{5:[1,109]},{5:[2,58]},{5:[2,59]},{5:[1,110]},{5:[2,60]},{5:[2,61]},{5:$Vp,24:111,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:112,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:113,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:114,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:115,51:$Vx,53:$Vy},{5:$Vv,34:$Vw,50:116,51:$Vx,53:$Vy},o($Vz,[2,17]),o($Vz,[2,18]),o($Vz,[2,19]),o($Vz,[2,20]),o($Vz,[2,37]),o($Vz,[2,38])],\ndefaultActions: {5:[2,6],7:[2,2],11:[2,1],32:[2,3],33:[2,11],34:[2,12],35:[2,13],36:[2,14],37:[2,15],39:[2,50],40:[2,51],42:[2,56],43:[2,57],47:[2,8],88:[2,54],89:[2,55],91:[2,29],92:[2,30],93:[2,31],95:[2,32],96:[2,33],97:[2,34],98:[2,35],100:[2,58],101:[2,59],103:[2,60],104:[2,61]},\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 14; \nbreak;\ncase 1: this.begin('type_directive'); return 15; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 12; \nbreak;\ncase 3: this.popState(); this.popState(); return 17; \nbreak;\ncase 4:return 16;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 8;\nbreak;\ncase 10:return 6;\nbreak;\ncase 11:return 23;\nbreak;\ncase 12:return 34;\nbreak;\ncase 13:return 26;\nbreak;\ncase 14:return 25;\nbreak;\ncase 15:return 28;\nbreak;\ncase 16:return 30;\nbreak;\ncase 17:return 32;\nbreak;\ncase 18:return 35;\nbreak;\ncase 19:return 36;\nbreak;\ncase 20:return 37;\nbreak;\ncase 21:return 38;\nbreak;\ncase 22:return 39;\nbreak;\ncase 23:return 40;\nbreak;\ncase 24:return 41;\nbreak;\ncase 25:return 42;\nbreak;\ncase 26:return 43;\nbreak;\ncase 27:return 44;\nbreak;\ncase 28:return 45;\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 47;\nbreak;\ncase 31:return 48;\nbreak;\ncase 32:return 59;\nbreak;\ncase 33:return 60;\nbreak;\ncase 34:return 61;\nbreak;\ncase 35:return 62;\nbreak;\ncase 36:return 63;\nbreak;\ncase 37:return 64;\nbreak;\ncase 38:return 65;\nbreak;\ncase 39:return 51;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 55;\nbreak;\ncase 42:return 58;\nbreak;\ncase 43:return 57;\nbreak;\ncase 44: this.begin(\"string\"); \nbreak;\ncase 45: this.popState(); \nbreak;\ncase 46: return \"qString\"; \nbreak;\ncase 47: yy_.yytext = yy_.yytext.trim(); return 66;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/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: {\"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\":[45,46],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,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,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,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,39],$Vl=[1,40],$Vm=[1,41],$Vn=[1,42],$Vo=[1,43],$Vp=[1,44],$Vq=[1,47],$Vr=[1,4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,42,43,48,49,50,51,59,69],$Vs=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,43,48,49,50,51,59,69],$Vt=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,42,43,48,49,50,51,59,69],$Vu=[4,5,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,43,48,49,50,51,59,69],$Vv=[57,58,59],$Vw=[1,104],$Vx=[1,4,5,7,16,20,22,23,24,30,31,32,33,34,35,36,37,39,41,42,43,48,49,50,51,59,69];\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,\"activate\":23,\"deactivate\":24,\"note_statement\":25,\"links_statement\":26,\"link_statement\":27,\"properties_statement\":28,\"details_statement\":29,\"title\":30,\"legacy_title\":31,\"accDescription\":32,\"loop\":33,\"end\":34,\"rect\":35,\"opt\":36,\"alt\":37,\"else_sections\":38,\"par\":39,\"par_sections\":40,\"and\":41,\"else\":42,\"note\":43,\"placement\":44,\"text2\":45,\"over\":46,\"actor_pair\":47,\"links\":48,\"link\":49,\"properties\":50,\"details\":51,\"spaceList\":52,\",\":53,\"left_of\":54,\"right_of\":55,\"signaltype\":56,\"+\":57,\"-\":58,\"ACTOR\":59,\"SOLID_OPEN_ARROW\":60,\"DOTTED_OPEN_ARROW\":61,\"SOLID_ARROW\":62,\"DOTTED_ARROW\":63,\"SOLID_CROSS\":64,\"DOTTED_CROSS\":65,\"SOLID_POINT\":66,\"DOTTED_POINT\":67,\"TXT\":68,\"open_directive\":69,\"type_directive\":70,\"arg_directive\":71,\"close_directive\":72,\"$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:\"activate\",24:\"deactivate\",30:\"title\",31:\"legacy_title\",32:\"accDescription\",33:\"loop\",34:\"end\",35:\"rect\",36:\"opt\",37:\"alt\",39:\"par\",41:\"and\",42:\"else\",43:\"note\",46:\"over\",48:\"links\",49:\"link\",50:\"properties\",51:\"details\",53:\",\",54:\"left_of\",55:\"right_of\",57:\"+\",58:\"-\",59:\"ACTOR\",60:\"SOLID_OPEN_ARROW\",61:\"DOTTED_OPEN_ARROW\",62:\"SOLID_ARROW\",63:\"DOTTED_ARROW\",64:\"SOLID_CROSS\",65:\"DOTTED_CROSS\",66:\"SOLID_POINT\",67:\"DOTTED_POINT\",68:\"TXT\",69:\"open_directive\",70:\"type_directive\",71:\"arg_directive\",72:\"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,1],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[40,1],[40,4],[38,1],[38,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[52,2],[52,1],[47,3],[47,1],[44,1],[44,1],[21,5],[21,5],[21,4],[17,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[45,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:\nyy.enableSequenceNumbers()\nbreak;\ncase 18:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 25:\nyy.setTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 26:\nyy.setTitle($$[$0].substring(7));this.$=$$[$0].substring(7);\nbreak;\ncase 27:\nyy.setAccDescription($$[$0].substring(15));this.$=$$[$0].substring(15);\nbreak;\ncase 28:\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 29:\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 30:\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 31:\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 32:\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 35:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 37:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 38:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 39:\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 40:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 41:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 42:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 43:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 46:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 47:\n this.$ = $$[$0]; \nbreak;\ncase 48:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 49:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 50:\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 51:\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 52:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 53:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 54:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 55:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 56:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 57:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 58:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 59:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 60:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 61:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 62:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 63:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 64:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 65:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 66:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,69:$V3},o([1,4,5,16,20,22,23,24,30,31,32,33,35,36,37,39,43,48,49,50,51,59,69],$V4,{8:11}),{12:12,70:[1,13]},{70:[2,63]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{13:45,14:[1,46],72:$Vq},o([14,72],[2,64]),o($Vr,[2,6]),{6:37,10:48,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},o($Vr,[2,8]),o($Vr,[2,9]),{17:49,59:$Vp},{17:50,59:$Vp},{5:[1,51]},o($Vr,[2,17]),{17:52,59:$Vp},{17:53,59:$Vp},{5:[1,54]},{5:[1,55]},{5:[1,56]},{5:[1,57]},{5:[1,58]},o($Vr,[2,25]),o($Vr,[2,26]),o($Vr,[2,27]),{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},o($Vr,[2,33]),{56:64,60:[1,65],61:[1,66],62:[1,67],63:[1,68],64:[1,69],65:[1,70],66:[1,71],67:[1,72]},{44:73,46:[1,74],54:[1,75],55:[1,76]},{17:77,59:$Vp},{17:78,59:$Vp},{17:79,59:$Vp},{17:80,59:$Vp},o([5,18,53,60,61,62,63,64,65,66,67,68],[2,53]),{5:[1,81]},{15:82,71:[1,83]},{5:[2,66]},o($Vr,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},o($Vr,[2,16]),{5:[1,88]},{5:[1,89]},o($Vr,[2,20]),o($Vr,[2,21]),o($Vr,[2,22]),o($Vr,[2,23]),o($Vr,[2,24]),o($Vs,$V4,{8:90}),o($Vs,$V4,{8:91}),o($Vs,$V4,{8:92}),o($Vt,$V4,{38:93,8:94}),o($Vu,$V4,{40:95,8:96}),{17:99,57:[1,97],58:[1,98],59:$Vp},o($Vv,[2,54]),o($Vv,[2,55]),o($Vv,[2,56]),o($Vv,[2,57]),o($Vv,[2,58]),o($Vv,[2,59]),o($Vv,[2,60]),o($Vv,[2,61]),{17:100,59:$Vp},{17:102,47:101,59:$Vp},{59:[2,48]},{59:[2,49]},{45:103,68:$Vw},{45:105,68:$Vw},{45:106,68:$Vw},{45:107,68:$Vw},o($Vx,[2,10]),{13:108,72:$Vq},{72:[2,65]},{19:[1,109]},o($Vr,[2,13]),{19:[1,110]},o($Vr,[2,15]),o($Vr,[2,18]),o($Vr,[2,19]),{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,111],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,112],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[1,113],35:$Vg,36:$Vh,37:$Vi,39:$Vj,43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{34:[1,114]},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[2,36],35:$Vg,36:$Vh,37:$Vi,39:$Vj,42:[1,115],43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{34:[1,116]},{4:$V5,5:$V6,6:37,9:14,10:16,11:6,16:$V7,17:38,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,31:$Vd,32:$Ve,33:$Vf,34:[2,34],35:$Vg,36:$Vh,37:$Vi,39:$Vj,41:[1,117],43:$Vk,48:$Vl,49:$Vm,50:$Vn,51:$Vo,59:$Vp,69:$V3},{17:118,59:$Vp},{17:119,59:$Vp},{45:120,68:$Vw},{45:121,68:$Vw},{45:122,68:$Vw},{53:[1,123],68:[2,47]},{5:[2,40]},{5:[2,62]},{5:[2,41]},{5:[2,42]},{5:[2,43]},{5:[1,124]},{5:[1,125]},{5:[1,126]},o($Vr,[2,28]),o($Vr,[2,29]),o($Vr,[2,30]),o($Vr,[2,31]),{19:[1,127]},o($Vr,[2,32]),{19:[1,128]},{45:129,68:$Vw},{45:130,68:$Vw},{5:[2,52]},{5:[2,38]},{5:[2,39]},{17:131,59:$Vp},o($Vx,[2,11]),o($Vr,[2,12]),o($Vr,[2,14]),o($Vt,$V4,{8:94,38:132}),o($Vu,$V4,{8:96,40:133}),{5:[2,50]},{5:[2,51]},{68:[2,46]},{34:[2,37]},{34:[2,35]}],\ndefaultActions: {7:[2,63],8:[2,1],9:[2,2],10:[2,3],47:[2,66],75:[2,48],76:[2,49],83:[2,65],103:[2,40],104:[2,62],105:[2,41],106:[2,42],107:[2,43],120:[2,52],121:[2,38],122:[2,39],129:[2,50],130:[2,51],131:[2,46],132:[2,37],133:[2,35]},\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 69; \nbreak;\ncase 1: this.begin('type_directive'); return 70; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 72; \nbreak;\ncase 4:return 71;\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: this.begin('ID'); return 16; \nbreak;\ncase 12: this.begin('ID'); return 20; \nbreak;\ncase 13: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 59; \nbreak;\ncase 14: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 15: this.popState(); this.popState(); return 5; \nbreak;\ncase 16: this.begin('LINE'); return 33; \nbreak;\ncase 17: this.begin('LINE'); return 35; \nbreak;\ncase 18: this.begin('LINE'); return 36; \nbreak;\ncase 19: this.begin('LINE'); return 37; \nbreak;\ncase 20: this.begin('LINE'); return 42; \nbreak;\ncase 21: this.begin('LINE'); return 39; \nbreak;\ncase 22: this.begin('LINE'); return 41; \nbreak;\ncase 23: this.popState(); return 19; \nbreak;\ncase 24:return 34;\nbreak;\ncase 25:return 54;\nbreak;\ncase 26:return 55;\nbreak;\ncase 27:return 48;\nbreak;\ncase 28:return 49;\nbreak;\ncase 29:return 50;\nbreak;\ncase 30:return 51;\nbreak;\ncase 31:return 46;\nbreak;\ncase 32:return 43;\nbreak;\ncase 33: this.begin('ID'); return 23; \nbreak;\ncase 34: this.begin('ID'); return 24; \nbreak;\ncase 35:return 30;\nbreak;\ncase 36:return 31;\nbreak;\ncase 37:return 32;\nbreak;\ncase 38:return 7;\nbreak;\ncase 39:return 22;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 5;\nbreak;\ncase 42: yy_.yytext = yy_.yytext.trim(); return 59; \nbreak;\ncase 43:return 62;\nbreak;\ncase 44:return 63;\nbreak;\ncase 45:return 60;\nbreak;\ncase 46:return 61;\nbreak;\ncase 47:return 64;\nbreak;\ncase 48:return 65;\nbreak;\ncase 49:return 66;\nbreak;\ncase 50:return 67;\nbreak;\ncase 51:return 68;\nbreak;\ncase 52:return 57;\nbreak;\ncase 53:return 58;\nbreak;\ncase 54:return 5;\nbreak;\ncase 55: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,/^(?: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,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\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: {\"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,13],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,14,15],\"inclusive\":false},\"LINE\":{\"rules\":[7,8,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,12,16,17,18,19,20,21,22,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,53,54,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,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,30],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,32],$Vi=[1,33],$Vj=[1,34],$Vk=[1,35],$Vl=[1,31],$Vm=[1,38],$Vn=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vo=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vp=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vq=[4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45];\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,\"openDirective\":31,\"typeDirective\":32,\"closeDirective\":33,\":\":34,\"argDirective\":35,\"direction_tb\":36,\"direction_bt\":37,\"direction_rl\":38,\"direction_lr\":39,\"eol\":40,\";\":41,\"EDGE_STATE\":42,\"left_of\":43,\"right_of\":44,\"open_directive\":45,\"type_directive\":46,\"arg_directive\":47,\"close_directive\":48,\"$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\",34:\":\",36:\"direction_tb\",37:\"direction_bt\",38:\"direction_rl\",39:\"direction_lr\",41:\";\",42:\"EDGE_STATE\",43:\"left_of\",44:\"right_of\",45:\"open_directive\",46:\"type_directive\",47:\"arg_directive\",48:\"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],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[40,1],[40,1],[11,1],[11,1],[28,1],[28,1],[31,1],[32,1],[35,1],[33,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 30:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 31:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 32:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 33:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 36: case 37:\nthis.$=$$[$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', 'state'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,27,36,37,38,39,42,45],$V4,{8:11}),{32:12,46:[1,13]},{46:[2,40]},{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:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},{33:36,34:[1,37],48:$Vm},o([34,48],[2,41]),o($Vn,[2,6]),{6:28,10:39,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:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,8]),o($Vn,[2,9]),o($Vn,[2,10],{12:[1,40],13:[1,41]}),o($Vn,[2,14]),{16:[1,42]},o($Vn,[2,16],{18:[1,43]}),{21:[1,44]},o($Vn,[2,20]),o($Vn,[2,21]),o($Vn,[2,22]),o($Vn,[2,23]),{28:45,29:[1,46],43:[1,47],44:[1,48]},o($Vn,[2,26]),o($Vn,[2,27]),o($Vo,[2,36]),o($Vo,[2,37]),o($Vn,[2,30]),o($Vn,[2,31]),o($Vn,[2,32]),o($Vn,[2,33]),o($Vp,[2,28]),{35:49,47:[1,50]},o($Vp,[2,43]),o($Vn,[2,7]),o($Vn,[2,11]),{11:51,22:$Vb,42:$Vl},o($Vn,[2,15]),o($Vq,$V4,{8:52}),{22:[1,53]},{22:[1,54]},{21:[1,55]},{22:[2,38]},{22:[2,39]},{33:56,48:$Vm},{48:[2,42]},o($Vn,[2,12],{12:[1,57]}),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,58],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,18],{18:[1,59]}),{29:[1,60]},{22:[1,61]},o($Vp,[2,29]),o($Vn,[2,13]),o($Vn,[2,17]),o($Vq,$V4,{8:62}),o($Vn,[2,24]),o($Vn,[2,25]),{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:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,19])],\ndefaultActions: {7:[2,40],8:[2,1],9:[2,2],10:[2,3],47:[2,38],48:[2,39],50:[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:return 36;\nbreak;\ncase 1:return 37;\nbreak;\ncase 2:return 38;\nbreak;\ncase 3:return 39;\nbreak;\ncase 4: this.begin('open_directive'); return 45; \nbreak;\ncase 5: this.begin('type_directive'); return 46; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 34; \nbreak;\ncase 7: this.popState(); this.popState(); return 48; \nbreak;\ncase 8:return 47;\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: /*console.log('Starting STATE zxzx'+yy.getDirection());*/this.pushState('STATE'); \nbreak;\ncase 20:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 21:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 22:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 23:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 24:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 25:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 26: return 36;\nbreak;\ncase 27: return 37;\nbreak;\ncase 28: return 38;\nbreak;\ncase 29: return 39;\nbreak;\ncase 30: /*console.log('Starting STATE_STRING zxzx');*/this.begin(\"STATE_STRING\");\nbreak;\ncase 31:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 32:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 33:this.popState();\nbreak;\ncase 34: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 35:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;\nbreak;\ncase 36:this.popState();\nbreak;\ncase 37:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;\nbreak;\ncase 38: /*console.log('Ending struct');*/ this.popState(); return 19;\nbreak;\ncase 39:/* nothing */\nbreak;\ncase 40: this.begin('NOTE'); return 27; \nbreak;\ncase 41: this.popState();this.pushState('NOTE_ID');return 43;\nbreak;\ncase 42: this.popState();this.pushState('NOTE_ID');return 44;\nbreak;\ncase 43: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 44:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 45:/**/\nbreak;\ncase 46: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 47:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 48: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;\nbreak;\ncase 49: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 29;\nbreak;\ncase 50: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 29;\nbreak;\ncase 51: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 52: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 53: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; \nbreak;\ncase 54: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 42;\nbreak;\ncase 55: /*console.log('=>ID=',yy_.yytext);*/ return 22;\nbreak;\ncase 56: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; \nbreak;\ncase 57:return 13;\nbreak;\ncase 58:return 26;\nbreak;\ncase 59:return 5;\nbreak;\ncase 60: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,/^(?: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,19,26,27,28,29,38,39,40,54,55,56,57,58],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[47],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[44,45,46],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[49,50],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[48],\"inclusive\":false},\"NOTE\":{\"rules\":[41,42,43],\"inclusive\":false},\"SCALE\":{\"rules\":[17,18],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[32],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[33,34],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[13,14,20,21,22,23,24,25,30,31,35,36,37],\"inclusive\":false},\"ID\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,14,15,16,19,37,40,51,52,53,54,55,56,57,59,60],\"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,19,21],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,21],$V7=[4,6,9,11,17,18,19,21];\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,\"section\":18,\"taskName\":19,\"taskData\":20,\"open_directive\":21,\"type_directive\":22,\"arg_directive\":23,\"close_directive\":24,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",17:\"title\",18:\"section\",19:\"taskName\",20:\"taskData\",21:\"open_directive\",22:\"type_directive\",23:\"arg_directive\",24:\"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,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:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 13:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\ncase 15:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 16:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 17:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 18:\n yy.parseDirective('}%%', 'close_directive', 'journey'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,21:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,21:$V1},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,19:$V5,21:$V1},{1:[2,2]},{14:19,15:[1,20],24:$V6},o([15,24],[2,16]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:18,10:22,12:4,17:$V3,18:$V4,19:$V5,21:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,12]),{20:[1,23]},o($V2,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},o($V2,[2,5]),o($V2,[2,13]),o($V7,[2,9]),{14:27,24:$V6},{24:[2,17]},{11:[1,28]},o($V7,[2,10])],\ndefaultActions: {5:[2,15],7:[2,2],21:[2,18],26:[2,17]},\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 21; \nbreak;\ncase 1: this.begin('type_directive'); return 22; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 24; \nbreak;\ncase 4:return 23;\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:return 18;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 20;\nbreak;\ncase 15:return 15;\nbreak;\ncase 16:return 6;\nbreak;\ncase 17: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,/^(?: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},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17],\"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.replace(/script>/gi, '#');\n decodedText = decodedText.replace(/javascript:/gi, '#');\n decodedText = decodedText.replace(/javascript&colon/gi, '#');\n decodedText = decodedText.replace(/onerror=/gi, 'onerror:');\n decodedText = decodedText.replace(/`;\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 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 try {\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 } catch (e) {\n log.warn('Syntax Error rendering');\n log.warn(e);\n if (this.parseError) {\n this.parseError(e);\n }\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(/