{"version":3,"file":"index.cjs","sources":["../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/timeoutManager.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/utils.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/environmentManager.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/thenable.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/retryer.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/removable.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/query.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/mutation.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../../../node_modules/.pnpm/@tanstack+query-core@5.96.1/node_modules/@tanstack/query-core/build/modern/queryClient.js","../src/platform/dataset-store.ts","../src/platform/staged-store.ts","../src/platform/bind-runtime.ts","../src/platform/tracked-channel.ts","../src/platform/func-runtime.ts","../../../../../node_modules/.pnpm/@fortawesome+fontawesome-svg-core@7.2.0/node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../../../../../node_modules/.pnpm/@fortawesome+react-fontawesome@3.3.0_@fortawesome+fontawesome-svg-core@7.2.0_react@19.2.4/node_modules/@fortawesome/react-fontawesome/dist/index.js","../../../../../node_modules/.pnpm/@fortawesome+free-solid-svg-icons@7.2.0/node_modules/@fortawesome/free-solid-svg-icons/index.mjs","../src/platform/record-runtime.ts","../src/platform/e3-config.tsx","../src/platform/dataset-hooks.tsx","../src/diff/walker.ts","../src/diff/format.ts","../src/diff/manual.ts","../src/diff/index.tsx","../../../../../node_modules/.pnpm/classcat@5.0.5/node_modules/classcat/index.js","../../../../../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespaces.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespace.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/creator.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selector.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/select.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/array.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selectorAll.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectAll.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/matcher.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChild.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChildren.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/filter.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sparse.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/enter.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/constant.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/exit.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/join.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/merge.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/order.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/call.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/nodes.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/empty.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/attr.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/window.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/style.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/property.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/classed.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/text.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/html.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/raise.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/lower.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/append.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/insert.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/remove.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/clone.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/datum.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/on.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/dispatch.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/iterator.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/index.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/select.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/sourceEvent.js","../../../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/pointer.js","../../../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/noevent.js","../../../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/nodrag.js","../../../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/constant.js","../../../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/event.js","../../../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/drag.js","../../../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/define.js","../../../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/color.js","../../../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/math.js","../../../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/lab.js","../../../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/cubehelix.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/constant.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/color.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/rgb.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/numberArray.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/array.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/date.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/number.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/object.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/string.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/value.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/round.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/decompose.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/parse.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/index.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/zoom.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/hsl.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/lab.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/hcl.js","../../../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/cubehelix.js","../../../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timer.js","../../../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timeout.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/interrupt.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/interrupt.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/tween.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attr.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attrTween.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/easeVarying.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/merge.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/on.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/remove.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selection.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/style.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/styleTween.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/text.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/textTween.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/transition.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/end.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/index.js","../../../../../node_modules/.pnpm/d3-ease@3.0.1/node_modules/d3-ease/src/cubic.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js","../../../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/index.js","../../../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/constant.js","../../../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/event.js","../../../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/transform.js","../../../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/noevent.js","../../../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/zoom.js","../../../../../node_modules/.pnpm/@xyflow+system@0.0.76/node_modules/@xyflow/system/dist/esm/index.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.4/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.4/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.4/node_modules/use-sync-external-store/shim/index.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.4/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.4/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.4/node_modules/use-sync-external-store/shim/with-selector.js","../../../../../node_modules/.pnpm/zustand@4.5.7_@types+react@19.2.14_immer@11.1.4_react@19.2.4/node_modules/zustand/esm/vanilla.mjs","../../../../../node_modules/.pnpm/zustand@4.5.7_@types+react@19.2.14_immer@11.1.4_react@19.2.4/node_modules/zustand/esm/traditional.mjs","../../../../../node_modules/.pnpm/zustand@4.5.7_@types+react@19.2.14_immer@11.1.4_react@19.2.4/node_modules/zustand/esm/shallow.mjs","../../../../../node_modules/.pnpm/@xyflow+react@12.10.2_@types+react@19.2.14_immer@11.1.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@xyflow/react/dist/esm/index.js","../../../../../node_modules/.pnpm/@emotion+sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Enum.js","../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Utility.js","../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Tokenizer.js","../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Parser.js","../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Serializer.js","../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Middleware.js","../../../../../node_modules/.pnpm/@emotion+memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../../../../node_modules/.pnpm/@emotion+cache@11.14.0/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","../../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js","../../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js","../../../../../node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../../../node_modules/.pnpm/@emotion+utils@1.4.2/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../../../../../node_modules/.pnpm/@emotion+hash@0.9.2/node_modules/@emotion/hash/dist/emotion-hash.esm.js","../../../../../node_modules/.pnpm/@emotion+unitless@0.10.0/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../../../../node_modules/.pnpm/@emotion+serialize@1.3.3/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../../../../../node_modules/.pnpm/@emotion+use-insertion-effect-with-fallbacks@1.2.0_react@19.2.4/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../../../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@19.2.14_react@19.2.4/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js","../../../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@19.2.14_react@19.2.4/node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../../../../../node_modules/.pnpm/react-icons@5.6.0_react@19.2.4/node_modules/react-icons/lib/iconContext.mjs","../../../../../node_modules/.pnpm/react-icons@5.6.0_react@19.2.4/node_modules/react-icons/lib/iconBase.mjs","../../../../../node_modules/.pnpm/react-icons@5.6.0_react@19.2.4/node_modules/react-icons/fi/index.mjs","../src/ontology/accents.ts","../src/ontology/OntologyNode.tsx","../src/ontology/OntologyEdge.tsx","../src/ontology/types.ts","../src/ontology/NodePropertiesDrawer.tsx","../src/ontology/projection.ts","../src/ontology/OntologyTable.tsx","../../../../../node_modules/.pnpm/cytoscape@3.33.4/node_modules/cytoscape/dist/cytoscape.esm.mjs","../../../../../node_modules/.pnpm/layout-base@1.0.2/node_modules/layout-base/layout-base.js","../../../../../node_modules/.pnpm/cose-base@1.0.3/node_modules/cose-base/cose-base.js","../../../../../node_modules/.pnpm/cytoscape-cose-bilkent@4.1.0_cytoscape@3.33.4/node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js","../src/ontology/layout.ts","../src/ontology/flow-state.ts","../src/ontology/bind-runtime.ts","../src/ontology/index.tsx","../src/experiment/bind-runtime.ts","../src/experiment/run-runtime.ts","../../../../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/has.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/checkPropTypes.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithTypeCheckers.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithThrowingShims.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js","../../../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../../../../../node_modules/.pnpm/@visx+group@3.12.0_react@19.2.4/node_modules/@visx/group/esm/Group.js","../../../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ascending.js","../../../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/descending.js","../../../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisector.js","../../../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/number.js","../../../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisect.js","../../../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/ticks.js","../../../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/init.js","../../../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/constant.js","../../../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/number.js","../../../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/continuous.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/formatDecimal.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/exponent.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/formatGroup.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/formatNumerals.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/formatSpecifier.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/formatTrim.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/formatPrefixAuto.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/formatRounded.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/formatTypes.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/identity.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/locale.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/defaultLocale.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/precisionFixed.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/precisionPrefix.js","../../../../../node_modules/.pnpm/d3-format@3.1.2/node_modules/d3-format/src/precisionRound.js","../../../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/tickFormat.js","../../../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/linear.js","../../../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/interval.js","../../../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/duration.js","../../../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/second.js","../../../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/minute.js","../../../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/hour.js","../../../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/day.js","../../../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/week.js","../../../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/month.js","../../../../../node_modules/.pnpm/d3-time@3.1.0/node_modules/d3-time/src/year.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/domain.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/range.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/align.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/base.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/clamp.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/constant.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/exponent.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/utils/createColorInterpolator.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/interpolate.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/utils/isUtcScale.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/nice.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/padding.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/reverse.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/round.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/unknown.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/zero.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/operators/scaleOperator.js","../../../../../node_modules/.pnpm/@visx+scale@3.12.0/node_modules/@visx/scale/esm/scales/linear.js","../../../../../node_modules/.pnpm/d3-path@1.0.9/node_modules/d3-path/src/path.js","../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/constant.js","../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/curve/linear.js","../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/point.js","../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/line.js","../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/area.js","../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/curve/monotone.js","../../../../../node_modules/.pnpm/@visx+shape@3.12.0_react@19.2.4/node_modules/@visx/shape/esm/util/setNumberOrNumberAccessor.js","../../../../../node_modules/.pnpm/@visx+shape@3.12.0_react@19.2.4/node_modules/@visx/shape/esm/util/D3ShapeFactories.js","../../../../../node_modules/.pnpm/@visx+shape@3.12.0_react@19.2.4/node_modules/@visx/shape/esm/shapes/Line.js","../../../../../node_modules/.pnpm/@visx+shape@3.12.0_react@19.2.4/node_modules/@visx/shape/esm/shapes/LinePath.js","../../../../../node_modules/.pnpm/@visx+shape@3.12.0_react@19.2.4/node_modules/@visx/shape/esm/shapes/Area.js","../../../../../node_modules/.pnpm/@visx+shape@3.12.0_react@19.2.4/node_modules/@visx/shape/esm/shapes/Circle.js","../src/experiment/help.ts","../src/experiment/help-ui.tsx","../src/experiment/charts.tsx","../src/experiment/derive.ts","../src/experiment/index.tsx","../src/decision/handle-runtime.ts","../src/decision/constraint-format.ts","../src/decision/lever-editor.tsx","../src/decision/facets.tsx","../src/decision/types.ts","../src/decision/queue.tsx","../src/decision/journal.tsx","../src/errors.ts","../src/hooks/repos.ts","../src/hooks/packages.ts","../src/hooks/workspaces.ts","../src/hooks/datasets.ts","../src/hooks/tasks.ts","../src/hooks/executions.ts","../src/hooks/useDatasetStatus.ts","../src/hooks/useDatasetValue.ts","../src/hooks/useTaskDetails.ts","../src/components/StatusDisplay.tsx","../src/components/ErrorBoundary.tsx","../src/components/EastValueViewer.tsx","../src/components/DatasetPreview.tsx","../src/components/InputPreview.tsx","../src/components/UITaskPreview.tsx","../src/components/VirtualizedLogViewer.tsx","../src/hooks/useTaskLogsHook.ts","../src/components/TaskLogs.tsx","../src/components/DataTaskPreview.tsx","../src/components/TaskPreview.tsx"],"sourcesContent":["// src/subscribable.ts\nvar Subscribable = class {\n  constructor() {\n    this.listeners = /* @__PURE__ */ new Set();\n    this.subscribe = this.subscribe.bind(this);\n  }\n  subscribe(listener) {\n    this.listeners.add(listener);\n    this.onSubscribe();\n    return () => {\n      this.listeners.delete(listener);\n      this.onUnsubscribe();\n    };\n  }\n  hasListeners() {\n    return this.listeners.size > 0;\n  }\n  onSubscribe() {\n  }\n  onUnsubscribe() {\n  }\n};\nexport {\n  Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nvar FocusManager = class extends Subscribable {\n  #focused;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onFocus) => {\n      if (typeof window !== \"undefined\" && window.addEventListener) {\n        const listener = () => onFocus();\n        window.addEventListener(\"visibilitychange\", listener, false);\n        return () => {\n          window.removeEventListener(\"visibilitychange\", listener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup((focused) => {\n      if (typeof focused === \"boolean\") {\n        this.setFocused(focused);\n      } else {\n        this.onFocus();\n      }\n    });\n  }\n  setFocused(focused) {\n    const changed = this.#focused !== focused;\n    if (changed) {\n      this.#focused = focused;\n      this.onFocus();\n    }\n  }\n  onFocus() {\n    const isFocused = this.isFocused();\n    this.listeners.forEach((listener) => {\n      listener(isFocused);\n    });\n  }\n  isFocused() {\n    if (typeof this.#focused === \"boolean\") {\n      return this.#focused;\n    }\n    return globalThis.document?.visibilityState !== \"hidden\";\n  }\n};\nvar focusManager = new FocusManager();\nexport {\n  FocusManager,\n  focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/timeoutManager.ts\nvar defaultTimeoutProvider = {\n  // We need the wrapper function syntax below instead of direct references to\n  // global setTimeout etc.\n  //\n  // BAD: `setTimeout: setTimeout`\n  // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`\n  //\n  // If we use direct references here, then anything that wants to spy on or\n  // replace the global setTimeout (like tests) won't work since we'll already\n  // have a hard reference to the original implementation at the time when this\n  // file was imported.\n  setTimeout: (callback, delay) => setTimeout(callback, delay),\n  clearTimeout: (timeoutId) => clearTimeout(timeoutId),\n  setInterval: (callback, delay) => setInterval(callback, delay),\n  clearInterval: (intervalId) => clearInterval(intervalId)\n};\nvar TimeoutManager = class {\n  // We cannot have TimeoutManager<T> as we must instantiate it with a concrete\n  // type at app boot; and if we leave that type, then any new timer provider\n  // would need to support the default provider's concrete timer ID, which is\n  // infeasible across environments.\n  //\n  // We settle for type safety for the TimeoutProvider type, and accept that\n  // this class is unsafe internally to allow for extension.\n  #provider = defaultTimeoutProvider;\n  #providerCalled = false;\n  setTimeoutProvider(provider) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (this.#providerCalled && provider !== this.#provider) {\n        console.error(\n          `[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`,\n          { previous: this.#provider, provider }\n        );\n      }\n    }\n    this.#provider = provider;\n    if (process.env.NODE_ENV !== \"production\") {\n      this.#providerCalled = false;\n    }\n  }\n  setTimeout(callback, delay) {\n    if (process.env.NODE_ENV !== \"production\") {\n      this.#providerCalled = true;\n    }\n    return this.#provider.setTimeout(callback, delay);\n  }\n  clearTimeout(timeoutId) {\n    this.#provider.clearTimeout(timeoutId);\n  }\n  setInterval(callback, delay) {\n    if (process.env.NODE_ENV !== \"production\") {\n      this.#providerCalled = true;\n    }\n    return this.#provider.setInterval(callback, delay);\n  }\n  clearInterval(intervalId) {\n    this.#provider.clearInterval(intervalId);\n  }\n};\nvar timeoutManager = new TimeoutManager();\nfunction systemSetTimeoutZero(callback) {\n  setTimeout(callback, 0);\n}\nexport {\n  TimeoutManager,\n  defaultTimeoutProvider,\n  systemSetTimeoutZero,\n  timeoutManager\n};\n//# sourceMappingURL=timeoutManager.js.map","// src/utils.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n}\nfunction functionalUpdate(updater, input) {\n  return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n  return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n  return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n  return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveEnabled(enabled, query) {\n  return typeof enabled === \"function\" ? enabled(query) : enabled;\n}\nfunction matchQuery(filters, query) {\n  const {\n    type = \"all\",\n    exact,\n    fetchStatus,\n    predicate,\n    queryKey,\n    stale\n  } = filters;\n  if (queryKey) {\n    if (exact) {\n      if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n        return false;\n      }\n    } else if (!partialMatchKey(query.queryKey, queryKey)) {\n      return false;\n    }\n  }\n  if (type !== \"all\") {\n    const isActive = query.isActive();\n    if (type === \"active\" && !isActive) {\n      return false;\n    }\n    if (type === \"inactive\" && isActive) {\n      return false;\n    }\n  }\n  if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n    return false;\n  }\n  if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n    return false;\n  }\n  if (predicate && !predicate(query)) {\n    return false;\n  }\n  return true;\n}\nfunction matchMutation(filters, mutation) {\n  const { exact, status, predicate, mutationKey } = filters;\n  if (mutationKey) {\n    if (!mutation.options.mutationKey) {\n      return false;\n    }\n    if (exact) {\n      if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n        return false;\n      }\n    } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n      return false;\n    }\n  }\n  if (status && mutation.state.status !== status) {\n    return false;\n  }\n  if (predicate && !predicate(mutation)) {\n    return false;\n  }\n  return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n  const hashFn = options?.queryKeyHashFn || hashKey;\n  return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n  return JSON.stringify(\n    queryKey,\n    (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n      result[key] = val[key];\n      return result;\n    }, {}) : val\n  );\n}\nfunction partialMatchKey(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n    return Object.keys(b).every((key) => partialMatchKey(a[key], b[key]));\n  }\n  return false;\n}\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction replaceEqualDeep(a, b, depth = 0) {\n  if (a === b) {\n    return a;\n  }\n  if (depth > 500) return b;\n  const array = isPlainArray(a) && isPlainArray(b);\n  if (!array && !(isPlainObject(a) && isPlainObject(b))) return b;\n  const aItems = array ? a : Object.keys(a);\n  const aSize = aItems.length;\n  const bItems = array ? b : Object.keys(b);\n  const bSize = bItems.length;\n  const copy = array ? new Array(bSize) : {};\n  let equalItems = 0;\n  for (let i = 0; i < bSize; i++) {\n    const key = array ? i : bItems[i];\n    const aItem = a[key];\n    const bItem = b[key];\n    if (aItem === bItem) {\n      copy[key] = aItem;\n      if (array ? i < aSize : hasOwn.call(a, key)) equalItems++;\n      continue;\n    }\n    if (aItem === null || bItem === null || typeof aItem !== \"object\" || typeof bItem !== \"object\") {\n      copy[key] = bItem;\n      continue;\n    }\n    const v = replaceEqualDeep(aItem, bItem, depth + 1);\n    copy[key] = v;\n    if (v === aItem) equalItems++;\n  }\n  return aSize === bSize && equalItems === aSize ? a : copy;\n}\nfunction shallowEqualObjects(a, b) {\n  if (!b || Object.keys(a).length !== Object.keys(b).length) {\n    return false;\n  }\n  for (const key in a) {\n    if (a[key] !== b[key]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction isPlainArray(value) {\n  return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n  if (!hasObjectPrototype(o)) {\n    return false;\n  }\n  const ctor = o.constructor;\n  if (ctor === void 0) {\n    return true;\n  }\n  const prot = ctor.prototype;\n  if (!hasObjectPrototype(prot)) {\n    return false;\n  }\n  if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n    return false;\n  }\n  if (Object.getPrototypeOf(o) !== Object.prototype) {\n    return false;\n  }\n  return true;\n}\nfunction hasObjectPrototype(o) {\n  return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n  return new Promise((resolve) => {\n    timeoutManager.setTimeout(resolve, timeout);\n  });\n}\nfunction replaceData(prevData, data, options) {\n  if (typeof options.structuralSharing === \"function\") {\n    return options.structuralSharing(prevData, data);\n  } else if (options.structuralSharing !== false) {\n    if (process.env.NODE_ENV !== \"production\") {\n      try {\n        return replaceEqualDeep(prevData, data);\n      } catch (error) {\n        console.error(\n          `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n        );\n        throw error;\n      }\n    }\n    return replaceEqualDeep(prevData, data);\n  }\n  return data;\n}\nfunction keepPreviousData(previousData) {\n  return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n  const newItems = [...items, item];\n  return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n  const newItems = [item, ...items];\n  return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = /* @__PURE__ */ Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (options.queryFn === skipToken) {\n      console.error(\n        `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n      );\n    }\n  }\n  if (!options.queryFn && fetchOptions?.initialPromise) {\n    return () => fetchOptions.initialPromise;\n  }\n  if (!options.queryFn || options.queryFn === skipToken) {\n    return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n  }\n  return options.queryFn;\n}\nfunction shouldThrowError(throwOnError, params) {\n  if (typeof throwOnError === \"function\") {\n    return throwOnError(...params);\n  }\n  return !!throwOnError;\n}\nfunction addConsumeAwareSignal(object, getSignal, onCancelled) {\n  let consumed = false;\n  let signal;\n  Object.defineProperty(object, \"signal\", {\n    enumerable: true,\n    get: () => {\n      signal ??= getSignal();\n      if (consumed) {\n        return signal;\n      }\n      consumed = true;\n      if (signal.aborted) {\n        onCancelled();\n      } else {\n        signal.addEventListener(\"abort\", onCancelled, { once: true });\n      }\n      return signal;\n    }\n  });\n  return object;\n}\nexport {\n  addConsumeAwareSignal,\n  addToEnd,\n  addToStart,\n  ensureQueryFn,\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  isPlainArray,\n  isPlainObject,\n  isServer,\n  isValidTimeout,\n  keepPreviousData,\n  matchMutation,\n  matchQuery,\n  noop,\n  partialMatchKey,\n  replaceData,\n  replaceEqualDeep,\n  resolveEnabled,\n  resolveStaleTime,\n  shallowEqualObjects,\n  shouldThrowError,\n  skipToken,\n  sleep,\n  timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/environmentManager.ts\nimport { isServer } from \"./utils.js\";\nvar environmentManager = /* @__PURE__ */ (() => {\n  let isServerFn = () => isServer;\n  return {\n    /**\n     * Returns whether the current runtime should be treated as a server environment.\n     */\n    isServer() {\n      return isServerFn();\n    },\n    /**\n     * Overrides the server check globally.\n     */\n    setIsServer(isServerValue) {\n      isServerFn = isServerValue;\n    }\n  };\n})();\nexport {\n  environmentManager\n};\n//# sourceMappingURL=environmentManager.js.map","// src/thenable.ts\nimport { noop } from \"./utils.js\";\nfunction pendingThenable() {\n  let resolve;\n  let reject;\n  const thenable = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n  thenable.status = \"pending\";\n  thenable.catch(() => {\n  });\n  function finalize(data) {\n    Object.assign(thenable, data);\n    delete thenable.resolve;\n    delete thenable.reject;\n  }\n  thenable.resolve = (value) => {\n    finalize({\n      status: \"fulfilled\",\n      value\n    });\n    resolve(value);\n  };\n  thenable.reject = (reason) => {\n    finalize({\n      status: \"rejected\",\n      reason\n    });\n    reject(reason);\n  };\n  return thenable;\n}\nfunction tryResolveSync(promise) {\n  let data;\n  promise.then((result) => {\n    data = result;\n    return result;\n  }, noop)?.catch(noop);\n  if (data !== void 0) {\n    return { data };\n  }\n  return void 0;\n}\nexport {\n  pendingThenable,\n  tryResolveSync\n};\n//# sourceMappingURL=thenable.js.map","// src/notifyManager.ts\nimport { systemSetTimeoutZero } from \"./timeoutManager.js\";\nvar defaultScheduler = systemSetTimeoutZero;\nfunction createNotifyManager() {\n  let queue = [];\n  let transactions = 0;\n  let notifyFn = (callback) => {\n    callback();\n  };\n  let batchNotifyFn = (callback) => {\n    callback();\n  };\n  let scheduleFn = defaultScheduler;\n  const schedule = (callback) => {\n    if (transactions) {\n      queue.push(callback);\n    } else {\n      scheduleFn(() => {\n        notifyFn(callback);\n      });\n    }\n  };\n  const flush = () => {\n    const originalQueue = queue;\n    queue = [];\n    if (originalQueue.length) {\n      scheduleFn(() => {\n        batchNotifyFn(() => {\n          originalQueue.forEach((callback) => {\n            notifyFn(callback);\n          });\n        });\n      });\n    }\n  };\n  return {\n    batch: (callback) => {\n      let result;\n      transactions++;\n      try {\n        result = callback();\n      } finally {\n        transactions--;\n        if (!transactions) {\n          flush();\n        }\n      }\n      return result;\n    },\n    /**\n     * All calls to the wrapped function will be batched.\n     */\n    batchCalls: (callback) => {\n      return (...args) => {\n        schedule(() => {\n          callback(...args);\n        });\n      };\n    },\n    schedule,\n    /**\n     * Use this method to set a custom notify function.\n     * This can be used to for example wrap notifications with `React.act` while running tests.\n     */\n    setNotifyFunction: (fn) => {\n      notifyFn = fn;\n    },\n    /**\n     * Use this method to set a custom function to batch notifications together into a single tick.\n     * By default React Query will use the batch function provided by ReactDOM or React Native.\n     */\n    setBatchNotifyFunction: (fn) => {\n      batchNotifyFn = fn;\n    },\n    setScheduler: (fn) => {\n      scheduleFn = fn;\n    }\n  };\n}\nvar notifyManager = createNotifyManager();\nexport {\n  createNotifyManager,\n  defaultScheduler,\n  notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nvar OnlineManager = class extends Subscribable {\n  #online = true;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onOnline) => {\n      if (typeof window !== \"undefined\" && window.addEventListener) {\n        const onlineListener = () => onOnline(true);\n        const offlineListener = () => onOnline(false);\n        window.addEventListener(\"online\", onlineListener, false);\n        window.addEventListener(\"offline\", offlineListener, false);\n        return () => {\n          window.removeEventListener(\"online\", onlineListener);\n          window.removeEventListener(\"offline\", offlineListener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup(this.setOnline.bind(this));\n  }\n  setOnline(online) {\n    const changed = this.#online !== online;\n    if (changed) {\n      this.#online = online;\n      this.listeners.forEach((listener) => {\n        listener(online);\n      });\n    }\n  }\n  isOnline() {\n    return this.#online;\n  }\n};\nvar onlineManager = new OnlineManager();\nexport {\n  OnlineManager,\n  onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n  return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n  return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n  constructor(options) {\n    super(\"CancelledError\");\n    this.revert = options?.revert;\n    this.silent = options?.silent;\n  }\n};\nfunction isCancelledError(value) {\n  return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n  let isRetryCancelled = false;\n  let failureCount = 0;\n  let continueFn;\n  const thenable = pendingThenable();\n  const isResolved = () => thenable.status !== \"pending\";\n  const cancel = (cancelOptions) => {\n    if (!isResolved()) {\n      const error = new CancelledError(cancelOptions);\n      reject(error);\n      config.onCancel?.(error);\n    }\n  };\n  const cancelRetry = () => {\n    isRetryCancelled = true;\n  };\n  const continueRetry = () => {\n    isRetryCancelled = false;\n  };\n  const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n  const canStart = () => canFetch(config.networkMode) && config.canRun();\n  const resolve = (value) => {\n    if (!isResolved()) {\n      continueFn?.();\n      thenable.resolve(value);\n    }\n  };\n  const reject = (value) => {\n    if (!isResolved()) {\n      continueFn?.();\n      thenable.reject(value);\n    }\n  };\n  const pause = () => {\n    return new Promise((continueResolve) => {\n      continueFn = (value) => {\n        if (isResolved() || canContinue()) {\n          continueResolve(value);\n        }\n      };\n      config.onPause?.();\n    }).then(() => {\n      continueFn = void 0;\n      if (!isResolved()) {\n        config.onContinue?.();\n      }\n    });\n  };\n  const run = () => {\n    if (isResolved()) {\n      return;\n    }\n    let promiseOrValue;\n    const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n    try {\n      promiseOrValue = initialPromise ?? config.fn();\n    } catch (error) {\n      promiseOrValue = Promise.reject(error);\n    }\n    Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n      if (isResolved()) {\n        return;\n      }\n      const retry = config.retry ?? (environmentManager.isServer() ? 0 : 3);\n      const retryDelay = config.retryDelay ?? defaultRetryDelay;\n      const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n      const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n      if (isRetryCancelled || !shouldRetry) {\n        reject(error);\n        return;\n      }\n      failureCount++;\n      config.onFail?.(failureCount, error);\n      sleep(delay).then(() => {\n        return canContinue() ? void 0 : pause();\n      }).then(() => {\n        if (isRetryCancelled) {\n          reject(error);\n        } else {\n          run();\n        }\n      });\n    });\n  };\n  return {\n    promise: thenable,\n    status: () => thenable.status,\n    cancel,\n    continue: () => {\n      continueFn?.();\n      return thenable;\n    },\n    cancelRetry,\n    continueRetry,\n    canStart,\n    start: () => {\n      if (canStart()) {\n        run();\n      } else {\n        pause().then(run);\n      }\n      return thenable;\n    }\n  };\n}\nexport {\n  CancelledError,\n  canFetch,\n  createRetryer,\n  isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/removable.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n  #gcTimeout;\n  destroy() {\n    this.clearGcTimeout();\n  }\n  scheduleGc() {\n    this.clearGcTimeout();\n    if (isValidTimeout(this.gcTime)) {\n      this.#gcTimeout = timeoutManager.setTimeout(() => {\n        this.optionalRemove();\n      }, this.gcTime);\n    }\n  }\n  updateGcTime(newGcTime) {\n    this.gcTime = Math.max(\n      this.gcTime || 0,\n      newGcTime ?? (environmentManager.isServer() ? Infinity : 5 * 60 * 1e3)\n    );\n  }\n  clearGcTimeout() {\n    if (this.#gcTimeout) {\n      timeoutManager.clearTimeout(this.#gcTimeout);\n      this.#gcTimeout = void 0;\n    }\n  }\n};\nexport {\n  Removable\n};\n//# sourceMappingURL=removable.js.map","// src/query.ts\nimport {\n  ensureQueryFn,\n  noop,\n  replaceData,\n  resolveEnabled,\n  resolveStaleTime,\n  skipToken,\n  timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { CancelledError, canFetch, createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n  #initialState;\n  #revertState;\n  #cache;\n  #client;\n  #retryer;\n  #defaultOptions;\n  #abortSignalConsumed;\n  constructor(config) {\n    super();\n    this.#abortSignalConsumed = false;\n    this.#defaultOptions = config.defaultOptions;\n    this.setOptions(config.options);\n    this.observers = [];\n    this.#client = config.client;\n    this.#cache = this.#client.getQueryCache();\n    this.queryKey = config.queryKey;\n    this.queryHash = config.queryHash;\n    this.#initialState = getDefaultState(this.options);\n    this.state = config.state ?? this.#initialState;\n    this.scheduleGc();\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  get promise() {\n    return this.#retryer?.promise;\n  }\n  setOptions(options) {\n    this.options = { ...this.#defaultOptions, ...options };\n    this.updateGcTime(this.options.gcTime);\n    if (this.state && this.state.data === void 0) {\n      const defaultState = getDefaultState(this.options);\n      if (defaultState.data !== void 0) {\n        this.setState(\n          successState(defaultState.data, defaultState.dataUpdatedAt)\n        );\n        this.#initialState = defaultState;\n      }\n    }\n  }\n  optionalRemove() {\n    if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n      this.#cache.remove(this);\n    }\n  }\n  setData(newData, options) {\n    const data = replaceData(this.state.data, newData, this.options);\n    this.#dispatch({\n      data,\n      type: \"success\",\n      dataUpdatedAt: options?.updatedAt,\n      manual: options?.manual\n    });\n    return data;\n  }\n  setState(state, setStateOptions) {\n    this.#dispatch({ type: \"setState\", state, setStateOptions });\n  }\n  cancel(options) {\n    const promise = this.#retryer?.promise;\n    this.#retryer?.cancel(options);\n    return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n  }\n  destroy() {\n    super.destroy();\n    this.cancel({ silent: true });\n  }\n  get resetState() {\n    return this.#initialState;\n  }\n  reset() {\n    this.destroy();\n    this.setState(this.resetState);\n  }\n  isActive() {\n    return this.observers.some(\n      (observer) => resolveEnabled(observer.options.enabled, this) !== false\n    );\n  }\n  isDisabled() {\n    if (this.getObserversCount() > 0) {\n      return !this.isActive();\n    }\n    return this.options.queryFn === skipToken || !this.isFetched();\n  }\n  isFetched() {\n    return this.state.dataUpdateCount + this.state.errorUpdateCount > 0;\n  }\n  isStatic() {\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => resolveStaleTime(observer.options.staleTime, this) === \"static\"\n      );\n    }\n    return false;\n  }\n  isStale() {\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => observer.getCurrentResult().isStale\n      );\n    }\n    return this.state.data === void 0 || this.state.isInvalidated;\n  }\n  isStaleByTime(staleTime = 0) {\n    if (this.state.data === void 0) {\n      return true;\n    }\n    if (staleTime === \"static\") {\n      return false;\n    }\n    if (this.state.isInvalidated) {\n      return true;\n    }\n    return !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n  }\n  onFocus() {\n    const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  onOnline() {\n    const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  addObserver(observer) {\n    if (!this.observers.includes(observer)) {\n      this.observers.push(observer);\n      this.clearGcTimeout();\n      this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n    }\n  }\n  removeObserver(observer) {\n    if (this.observers.includes(observer)) {\n      this.observers = this.observers.filter((x) => x !== observer);\n      if (!this.observers.length) {\n        if (this.#retryer) {\n          if (this.#abortSignalConsumed || this.#isInitialPausedFetch()) {\n            this.#retryer.cancel({ revert: true });\n          } else {\n            this.#retryer.cancelRetry();\n          }\n        }\n        this.scheduleGc();\n      }\n      this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n    }\n  }\n  getObserversCount() {\n    return this.observers.length;\n  }\n  #isInitialPausedFetch() {\n    return this.state.fetchStatus === \"paused\" && this.state.status === \"pending\";\n  }\n  invalidate() {\n    if (!this.state.isInvalidated) {\n      this.#dispatch({ type: \"invalidate\" });\n    }\n  }\n  async fetch(options, fetchOptions) {\n    if (this.state.fetchStatus !== \"idle\" && // If the promise in the retryer is already rejected, we have to definitely\n    // re-start the fetch; there is a chance that the query is still in a\n    // pending state when that happens\n    this.#retryer?.status() !== \"rejected\") {\n      if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n        this.cancel({ silent: true });\n      } else if (this.#retryer) {\n        this.#retryer.continueRetry();\n        return this.#retryer.promise;\n      }\n    }\n    if (options) {\n      this.setOptions(options);\n    }\n    if (!this.options.queryFn) {\n      const observer = this.observers.find((x) => x.options.queryFn);\n      if (observer) {\n        this.setOptions(observer.options);\n      }\n    }\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!Array.isArray(this.options.queryKey)) {\n        console.error(\n          `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n        );\n      }\n    }\n    const abortController = new AbortController();\n    const addSignalProperty = (object) => {\n      Object.defineProperty(object, \"signal\", {\n        enumerable: true,\n        get: () => {\n          this.#abortSignalConsumed = true;\n          return abortController.signal;\n        }\n      });\n    };\n    const fetchFn = () => {\n      const queryFn = ensureQueryFn(this.options, fetchOptions);\n      const createQueryFnContext = () => {\n        const queryFnContext2 = {\n          client: this.#client,\n          queryKey: this.queryKey,\n          meta: this.meta\n        };\n        addSignalProperty(queryFnContext2);\n        return queryFnContext2;\n      };\n      const queryFnContext = createQueryFnContext();\n      this.#abortSignalConsumed = false;\n      if (this.options.persister) {\n        return this.options.persister(\n          queryFn,\n          queryFnContext,\n          this\n        );\n      }\n      return queryFn(queryFnContext);\n    };\n    const createFetchContext = () => {\n      const context2 = {\n        fetchOptions,\n        options: this.options,\n        queryKey: this.queryKey,\n        client: this.#client,\n        state: this.state,\n        fetchFn\n      };\n      addSignalProperty(context2);\n      return context2;\n    };\n    const context = createFetchContext();\n    this.options.behavior?.onFetch(context, this);\n    this.#revertState = this.state;\n    if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n      this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n    }\n    this.#retryer = createRetryer({\n      initialPromise: fetchOptions?.initialPromise,\n      fn: context.fetchFn,\n      onCancel: (error) => {\n        if (error instanceof CancelledError && error.revert) {\n          this.setState({\n            ...this.#revertState,\n            fetchStatus: \"idle\"\n          });\n        }\n        abortController.abort();\n      },\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue: () => {\n        this.#dispatch({ type: \"continue\" });\n      },\n      retry: context.options.retry,\n      retryDelay: context.options.retryDelay,\n      networkMode: context.options.networkMode,\n      canRun: () => true\n    });\n    try {\n      const data = await this.#retryer.start();\n      if (data === void 0) {\n        if (process.env.NODE_ENV !== \"production\") {\n          console.error(\n            `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n          );\n        }\n        throw new Error(`${this.queryHash} data is undefined`);\n      }\n      this.setData(data);\n      this.#cache.config.onSuccess?.(data, this);\n      this.#cache.config.onSettled?.(\n        data,\n        this.state.error,\n        this\n      );\n      return data;\n    } catch (error) {\n      if (error instanceof CancelledError) {\n        if (error.silent) {\n          return this.#retryer.promise;\n        } else if (error.revert) {\n          if (this.state.data === void 0) {\n            throw error;\n          }\n          return this.state.data;\n        }\n      }\n      this.#dispatch({\n        type: \"error\",\n        error\n      });\n      this.#cache.config.onError?.(\n        error,\n        this\n      );\n      this.#cache.config.onSettled?.(\n        this.state.data,\n        error,\n        this\n      );\n      throw error;\n    } finally {\n      this.scheduleGc();\n    }\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            fetchFailureCount: action.failureCount,\n            fetchFailureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            fetchStatus: \"paused\"\n          };\n        case \"continue\":\n          return {\n            ...state,\n            fetchStatus: \"fetching\"\n          };\n        case \"fetch\":\n          return {\n            ...state,\n            ...fetchState(state.data, this.options),\n            fetchMeta: action.meta ?? null\n          };\n        case \"success\":\n          const newState = {\n            ...state,\n            ...successState(action.data, action.dataUpdatedAt),\n            dataUpdateCount: state.dataUpdateCount + 1,\n            ...!action.manual && {\n              fetchStatus: \"idle\",\n              fetchFailureCount: 0,\n              fetchFailureReason: null\n            }\n          };\n          this.#revertState = action.manual ? newState : void 0;\n          return newState;\n        case \"error\":\n          const error = action.error;\n          return {\n            ...state,\n            error,\n            errorUpdateCount: state.errorUpdateCount + 1,\n            errorUpdatedAt: Date.now(),\n            fetchFailureCount: state.fetchFailureCount + 1,\n            fetchFailureReason: error,\n            fetchStatus: \"idle\",\n            status: \"error\",\n            // flag existing data as invalidated if we get a background error\n            // note that \"no data\" always means stale so we can set unconditionally here\n            isInvalidated: true\n          };\n        case \"invalidate\":\n          return {\n            ...state,\n            isInvalidated: true\n          };\n        case \"setState\":\n          return {\n            ...state,\n            ...action.state\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.observers.forEach((observer) => {\n        observer.onQueryUpdate();\n      });\n      this.#cache.notify({ query: this, type: \"updated\", action });\n    });\n  }\n};\nfunction fetchState(data, options) {\n  return {\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n    ...data === void 0 && {\n      error: null,\n      status: \"pending\"\n    }\n  };\n}\nfunction successState(data, dataUpdatedAt) {\n  return {\n    data,\n    dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n    error: null,\n    isInvalidated: false,\n    status: \"success\"\n  };\n}\nfunction getDefaultState(options) {\n  const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n  const hasData = data !== void 0;\n  const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n  return {\n    data,\n    dataUpdateCount: 0,\n    dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n    error: null,\n    errorUpdateCount: 0,\n    errorUpdatedAt: 0,\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchMeta: null,\n    isInvalidated: false,\n    status: hasData ? \"success\" : \"pending\",\n    fetchStatus: \"idle\"\n  };\n}\nexport {\n  Query,\n  fetchState\n};\n//# sourceMappingURL=query.js.map","// src/infiniteQueryBehavior.ts\nimport {\n  addConsumeAwareSignal,\n  addToEnd,\n  addToStart,\n  ensureQueryFn\n} from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n  return {\n    onFetch: (context, query) => {\n      const options = context.options;\n      const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n      const oldPages = context.state.data?.pages || [];\n      const oldPageParams = context.state.data?.pageParams || [];\n      let result = { pages: [], pageParams: [] };\n      let currentPage = 0;\n      const fetchFn = async () => {\n        let cancelled = false;\n        const addSignalProperty = (object) => {\n          addConsumeAwareSignal(\n            object,\n            () => context.signal,\n            () => cancelled = true\n          );\n        };\n        const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n        const fetchPage = async (data, param, previous) => {\n          if (cancelled) {\n            return Promise.reject();\n          }\n          if (param == null && data.pages.length) {\n            return Promise.resolve(data);\n          }\n          const createQueryFnContext = () => {\n            const queryFnContext2 = {\n              client: context.client,\n              queryKey: context.queryKey,\n              pageParam: param,\n              direction: previous ? \"backward\" : \"forward\",\n              meta: context.options.meta\n            };\n            addSignalProperty(queryFnContext2);\n            return queryFnContext2;\n          };\n          const queryFnContext = createQueryFnContext();\n          const page = await queryFn(queryFnContext);\n          const { maxPages } = context.options;\n          const addTo = previous ? addToStart : addToEnd;\n          return {\n            pages: addTo(data.pages, page, maxPages),\n            pageParams: addTo(data.pageParams, param, maxPages)\n          };\n        };\n        if (direction && oldPages.length) {\n          const previous = direction === \"backward\";\n          const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n          const oldData = {\n            pages: oldPages,\n            pageParams: oldPageParams\n          };\n          const param = pageParamFn(options, oldData);\n          result = await fetchPage(oldData, param, previous);\n        } else {\n          const remainingPages = pages ?? oldPages.length;\n          do {\n            const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n            if (currentPage > 0 && param == null) {\n              break;\n            }\n            result = await fetchPage(result, param);\n            currentPage++;\n          } while (currentPage < remainingPages);\n        }\n        return result;\n      };\n      if (context.options.persister) {\n        context.fetchFn = () => {\n          return context.options.persister?.(\n            fetchFn,\n            {\n              client: context.client,\n              queryKey: context.queryKey,\n              meta: context.options.meta,\n              signal: context.signal\n            },\n            query\n          );\n        };\n      } else {\n        context.fetchFn = fetchFn;\n      }\n    }\n  };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n  const lastIndex = pages.length - 1;\n  return pages.length > 0 ? options.getNextPageParam(\n    pages[lastIndex],\n    pages,\n    pageParams[lastIndex],\n    pageParams\n  ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n  return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n  if (!data) return false;\n  return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n  if (!data || !options.getPreviousPageParam) return false;\n  return getPreviousPageParam(options, data) != null;\n}\nexport {\n  hasNextPage,\n  hasPreviousPage,\n  infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n  #client;\n  #observers;\n  #mutationCache;\n  #retryer;\n  constructor(config) {\n    super();\n    this.#client = config.client;\n    this.mutationId = config.mutationId;\n    this.#mutationCache = config.mutationCache;\n    this.#observers = [];\n    this.state = config.state || getDefaultState();\n    this.setOptions(config.options);\n    this.scheduleGc();\n  }\n  setOptions(options) {\n    this.options = options;\n    this.updateGcTime(this.options.gcTime);\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  addObserver(observer) {\n    if (!this.#observers.includes(observer)) {\n      this.#observers.push(observer);\n      this.clearGcTimeout();\n      this.#mutationCache.notify({\n        type: \"observerAdded\",\n        mutation: this,\n        observer\n      });\n    }\n  }\n  removeObserver(observer) {\n    this.#observers = this.#observers.filter((x) => x !== observer);\n    this.scheduleGc();\n    this.#mutationCache.notify({\n      type: \"observerRemoved\",\n      mutation: this,\n      observer\n    });\n  }\n  optionalRemove() {\n    if (!this.#observers.length) {\n      if (this.state.status === \"pending\") {\n        this.scheduleGc();\n      } else {\n        this.#mutationCache.remove(this);\n      }\n    }\n  }\n  continue() {\n    return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n    this.execute(this.state.variables);\n  }\n  async execute(variables) {\n    const onContinue = () => {\n      this.#dispatch({ type: \"continue\" });\n    };\n    const mutationFnContext = {\n      client: this.#client,\n      meta: this.options.meta,\n      mutationKey: this.options.mutationKey\n    };\n    this.#retryer = createRetryer({\n      fn: () => {\n        if (!this.options.mutationFn) {\n          return Promise.reject(new Error(\"No mutationFn found\"));\n        }\n        return this.options.mutationFn(variables, mutationFnContext);\n      },\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue,\n      retry: this.options.retry ?? 0,\n      retryDelay: this.options.retryDelay,\n      networkMode: this.options.networkMode,\n      canRun: () => this.#mutationCache.canRun(this)\n    });\n    const restored = this.state.status === \"pending\";\n    const isPaused = !this.#retryer.canStart();\n    try {\n      if (restored) {\n        onContinue();\n      } else {\n        this.#dispatch({ type: \"pending\", variables, isPaused });\n        if (this.#mutationCache.config.onMutate) {\n          await this.#mutationCache.config.onMutate(\n            variables,\n            this,\n            mutationFnContext\n          );\n        }\n        const context = await this.options.onMutate?.(\n          variables,\n          mutationFnContext\n        );\n        if (context !== this.state.context) {\n          this.#dispatch({\n            type: \"pending\",\n            context,\n            variables,\n            isPaused\n          });\n        }\n      }\n      const data = await this.#retryer.start();\n      await this.#mutationCache.config.onSuccess?.(\n        data,\n        variables,\n        this.state.context,\n        this,\n        mutationFnContext\n      );\n      await this.options.onSuccess?.(\n        data,\n        variables,\n        this.state.context,\n        mutationFnContext\n      );\n      await this.#mutationCache.config.onSettled?.(\n        data,\n        null,\n        this.state.variables,\n        this.state.context,\n        this,\n        mutationFnContext\n      );\n      await this.options.onSettled?.(\n        data,\n        null,\n        variables,\n        this.state.context,\n        mutationFnContext\n      );\n      this.#dispatch({ type: \"success\", data });\n      return data;\n    } catch (error) {\n      try {\n        await this.#mutationCache.config.onError?.(\n          error,\n          variables,\n          this.state.context,\n          this,\n          mutationFnContext\n        );\n      } catch (e) {\n        void Promise.reject(e);\n      }\n      try {\n        await this.options.onError?.(\n          error,\n          variables,\n          this.state.context,\n          mutationFnContext\n        );\n      } catch (e) {\n        void Promise.reject(e);\n      }\n      try {\n        await this.#mutationCache.config.onSettled?.(\n          void 0,\n          error,\n          this.state.variables,\n          this.state.context,\n          this,\n          mutationFnContext\n        );\n      } catch (e) {\n        void Promise.reject(e);\n      }\n      try {\n        await this.options.onSettled?.(\n          void 0,\n          error,\n          variables,\n          this.state.context,\n          mutationFnContext\n        );\n      } catch (e) {\n        void Promise.reject(e);\n      }\n      this.#dispatch({ type: \"error\", error });\n      throw error;\n    } finally {\n      this.#mutationCache.runNext(this);\n    }\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            failureCount: action.failureCount,\n            failureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            isPaused: true\n          };\n        case \"continue\":\n          return {\n            ...state,\n            isPaused: false\n          };\n        case \"pending\":\n          return {\n            ...state,\n            context: action.context,\n            data: void 0,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            isPaused: action.isPaused,\n            status: \"pending\",\n            variables: action.variables,\n            submittedAt: Date.now()\n          };\n        case \"success\":\n          return {\n            ...state,\n            data: action.data,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            status: \"success\",\n            isPaused: false\n          };\n        case \"error\":\n          return {\n            ...state,\n            data: void 0,\n            error: action.error,\n            failureCount: state.failureCount + 1,\n            failureReason: action.error,\n            isPaused: false,\n            status: \"error\"\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.#observers.forEach((observer) => {\n        observer.onMutationUpdate(action);\n      });\n      this.#mutationCache.notify({\n        mutation: this,\n        type: \"updated\",\n        action\n      });\n    });\n  }\n};\nfunction getDefaultState() {\n  return {\n    context: void 0,\n    data: void 0,\n    error: null,\n    failureCount: 0,\n    failureReason: null,\n    isPaused: false,\n    status: \"idle\",\n    variables: void 0,\n    submittedAt: 0\n  };\n}\nexport {\n  Mutation,\n  getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    this.config = config;\n    this.#mutations = /* @__PURE__ */ new Set();\n    this.#scopes = /* @__PURE__ */ new Map();\n    this.#mutationId = 0;\n  }\n  #mutations;\n  #scopes;\n  #mutationId;\n  build(client, options, state) {\n    const mutation = new Mutation({\n      client,\n      mutationCache: this,\n      mutationId: ++this.#mutationId,\n      options: client.defaultMutationOptions(options),\n      state\n    });\n    this.add(mutation);\n    return mutation;\n  }\n  add(mutation) {\n    this.#mutations.add(mutation);\n    const scope = scopeFor(mutation);\n    if (typeof scope === \"string\") {\n      const scopedMutations = this.#scopes.get(scope);\n      if (scopedMutations) {\n        scopedMutations.push(mutation);\n      } else {\n        this.#scopes.set(scope, [mutation]);\n      }\n    }\n    this.notify({ type: \"added\", mutation });\n  }\n  remove(mutation) {\n    if (this.#mutations.delete(mutation)) {\n      const scope = scopeFor(mutation);\n      if (typeof scope === \"string\") {\n        const scopedMutations = this.#scopes.get(scope);\n        if (scopedMutations) {\n          if (scopedMutations.length > 1) {\n            const index = scopedMutations.indexOf(mutation);\n            if (index !== -1) {\n              scopedMutations.splice(index, 1);\n            }\n          } else if (scopedMutations[0] === mutation) {\n            this.#scopes.delete(scope);\n          }\n        }\n      }\n    }\n    this.notify({ type: \"removed\", mutation });\n  }\n  canRun(mutation) {\n    const scope = scopeFor(mutation);\n    if (typeof scope === \"string\") {\n      const mutationsWithSameScope = this.#scopes.get(scope);\n      const firstPendingMutation = mutationsWithSameScope?.find(\n        (m) => m.state.status === \"pending\"\n      );\n      return !firstPendingMutation || firstPendingMutation === mutation;\n    } else {\n      return true;\n    }\n  }\n  runNext(mutation) {\n    const scope = scopeFor(mutation);\n    if (typeof scope === \"string\") {\n      const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n      return foundMutation?.continue() ?? Promise.resolve();\n    } else {\n      return Promise.resolve();\n    }\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.#mutations.forEach((mutation) => {\n        this.notify({ type: \"removed\", mutation });\n      });\n      this.#mutations.clear();\n      this.#scopes.clear();\n    });\n  }\n  getAll() {\n    return Array.from(this.#mutations);\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (mutation) => matchMutation(defaultedFilters, mutation)\n    );\n  }\n  findAll(filters = {}) {\n    return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  resumePausedMutations() {\n    const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n    return notifyManager.batch(\n      () => Promise.all(\n        pausedMutations.map((mutation) => mutation.continue().catch(noop))\n      )\n    );\n  }\n};\nfunction scopeFor(mutation) {\n  return mutation.options.scope?.id;\n}\nexport {\n  MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    this.config = config;\n    this.#queries = /* @__PURE__ */ new Map();\n  }\n  #queries;\n  build(client, options, state) {\n    const queryKey = options.queryKey;\n    const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n    let query = this.get(queryHash);\n    if (!query) {\n      query = new Query({\n        client,\n        queryKey,\n        queryHash,\n        options: client.defaultQueryOptions(options),\n        state,\n        defaultOptions: client.getQueryDefaults(queryKey)\n      });\n      this.add(query);\n    }\n    return query;\n  }\n  add(query) {\n    if (!this.#queries.has(query.queryHash)) {\n      this.#queries.set(query.queryHash, query);\n      this.notify({\n        type: \"added\",\n        query\n      });\n    }\n  }\n  remove(query) {\n    const queryInMap = this.#queries.get(query.queryHash);\n    if (queryInMap) {\n      query.destroy();\n      if (queryInMap === query) {\n        this.#queries.delete(query.queryHash);\n      }\n      this.notify({ type: \"removed\", query });\n    }\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        this.remove(query);\n      });\n    });\n  }\n  get(queryHash) {\n    return this.#queries.get(queryHash);\n  }\n  getAll() {\n    return [...this.#queries.values()];\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (query) => matchQuery(defaultedFilters, query)\n    );\n  }\n  findAll(filters = {}) {\n    const queries = this.getAll();\n    return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  onFocus() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onFocus();\n      });\n    });\n  }\n  onOnline() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onOnline();\n      });\n    });\n  }\n};\nexport {\n  QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/queryClient.ts\nimport {\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  noop,\n  partialMatchKey,\n  resolveStaleTime,\n  skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n  #queryCache;\n  #mutationCache;\n  #defaultOptions;\n  #queryDefaults;\n  #mutationDefaults;\n  #mountCount;\n  #unsubscribeFocus;\n  #unsubscribeOnline;\n  constructor(config = {}) {\n    this.#queryCache = config.queryCache || new QueryCache();\n    this.#mutationCache = config.mutationCache || new MutationCache();\n    this.#defaultOptions = config.defaultOptions || {};\n    this.#queryDefaults = /* @__PURE__ */ new Map();\n    this.#mutationDefaults = /* @__PURE__ */ new Map();\n    this.#mountCount = 0;\n  }\n  mount() {\n    this.#mountCount++;\n    if (this.#mountCount !== 1) return;\n    this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n      if (focused) {\n        await this.resumePausedMutations();\n        this.#queryCache.onFocus();\n      }\n    });\n    this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n      if (online) {\n        await this.resumePausedMutations();\n        this.#queryCache.onOnline();\n      }\n    });\n  }\n  unmount() {\n    this.#mountCount--;\n    if (this.#mountCount !== 0) return;\n    this.#unsubscribeFocus?.();\n    this.#unsubscribeFocus = void 0;\n    this.#unsubscribeOnline?.();\n    this.#unsubscribeOnline = void 0;\n  }\n  isFetching(filters) {\n    return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n  }\n  isMutating(filters) {\n    return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n  }\n  /**\n   * Imperative (non-reactive) way to retrieve data for a QueryKey.\n   * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n   *\n   * Hint: Do not use this function inside a component, because it won't receive updates.\n   * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n   */\n  getQueryData(queryKey) {\n    const options = this.defaultQueryOptions({ queryKey });\n    return this.#queryCache.get(options.queryHash)?.state.data;\n  }\n  ensureQueryData(options) {\n    const defaultedOptions = this.defaultQueryOptions(options);\n    const query = this.#queryCache.build(this, defaultedOptions);\n    const cachedData = query.state.data;\n    if (cachedData === void 0) {\n      return this.fetchQuery(options);\n    }\n    if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n      void this.prefetchQuery(defaultedOptions);\n    }\n    return Promise.resolve(cachedData);\n  }\n  getQueriesData(filters) {\n    return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n      const data = state.data;\n      return [queryKey, data];\n    });\n  }\n  setQueryData(queryKey, updater, options) {\n    const defaultedOptions = this.defaultQueryOptions({ queryKey });\n    const query = this.#queryCache.get(\n      defaultedOptions.queryHash\n    );\n    const prevData = query?.state.data;\n    const data = functionalUpdate(updater, prevData);\n    if (data === void 0) {\n      return void 0;\n    }\n    return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n  }\n  setQueriesData(filters, updater, options) {\n    return notifyManager.batch(\n      () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n        queryKey,\n        this.setQueryData(queryKey, updater, options)\n      ])\n    );\n  }\n  getQueryState(queryKey) {\n    const options = this.defaultQueryOptions({ queryKey });\n    return this.#queryCache.get(\n      options.queryHash\n    )?.state;\n  }\n  removeQueries(filters) {\n    const queryCache = this.#queryCache;\n    notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        queryCache.remove(query);\n      });\n    });\n  }\n  resetQueries(filters, options) {\n    const queryCache = this.#queryCache;\n    return notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        query.reset();\n      });\n      return this.refetchQueries(\n        {\n          type: \"active\",\n          ...filters\n        },\n        options\n      );\n    });\n  }\n  cancelQueries(filters, cancelOptions = {}) {\n    const defaultedCancelOptions = { revert: true, ...cancelOptions };\n    const promises = notifyManager.batch(\n      () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n    );\n    return Promise.all(promises).then(noop).catch(noop);\n  }\n  invalidateQueries(filters, options = {}) {\n    return notifyManager.batch(() => {\n      this.#queryCache.findAll(filters).forEach((query) => {\n        query.invalidate();\n      });\n      if (filters?.refetchType === \"none\") {\n        return Promise.resolve();\n      }\n      return this.refetchQueries(\n        {\n          ...filters,\n          type: filters?.refetchType ?? filters?.type ?? \"active\"\n        },\n        options\n      );\n    });\n  }\n  refetchQueries(filters, options = {}) {\n    const fetchOptions = {\n      ...options,\n      cancelRefetch: options.cancelRefetch ?? true\n    };\n    const promises = notifyManager.batch(\n      () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n        let promise = query.fetch(void 0, fetchOptions);\n        if (!fetchOptions.throwOnError) {\n          promise = promise.catch(noop);\n        }\n        return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n      })\n    );\n    return Promise.all(promises).then(noop);\n  }\n  fetchQuery(options) {\n    const defaultedOptions = this.defaultQueryOptions(options);\n    if (defaultedOptions.retry === void 0) {\n      defaultedOptions.retry = false;\n    }\n    const query = this.#queryCache.build(this, defaultedOptions);\n    return query.isStaleByTime(\n      resolveStaleTime(defaultedOptions.staleTime, query)\n    ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n  }\n  prefetchQuery(options) {\n    return this.fetchQuery(options).then(noop).catch(noop);\n  }\n  fetchInfiniteQuery(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.fetchQuery(options);\n  }\n  prefetchInfiniteQuery(options) {\n    return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n  }\n  ensureInfiniteQueryData(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.ensureQueryData(options);\n  }\n  resumePausedMutations() {\n    if (onlineManager.isOnline()) {\n      return this.#mutationCache.resumePausedMutations();\n    }\n    return Promise.resolve();\n  }\n  getQueryCache() {\n    return this.#queryCache;\n  }\n  getMutationCache() {\n    return this.#mutationCache;\n  }\n  getDefaultOptions() {\n    return this.#defaultOptions;\n  }\n  setDefaultOptions(options) {\n    this.#defaultOptions = options;\n  }\n  setQueryDefaults(queryKey, options) {\n    this.#queryDefaults.set(hashKey(queryKey), {\n      queryKey,\n      defaultOptions: options\n    });\n  }\n  getQueryDefaults(queryKey) {\n    const defaults = [...this.#queryDefaults.values()];\n    const result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n        Object.assign(result, queryDefault.defaultOptions);\n      }\n    });\n    return result;\n  }\n  setMutationDefaults(mutationKey, options) {\n    this.#mutationDefaults.set(hashKey(mutationKey), {\n      mutationKey,\n      defaultOptions: options\n    });\n  }\n  getMutationDefaults(mutationKey) {\n    const defaults = [...this.#mutationDefaults.values()];\n    const result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n        Object.assign(result, queryDefault.defaultOptions);\n      }\n    });\n    return result;\n  }\n  defaultQueryOptions(options) {\n    if (options._defaulted) {\n      return options;\n    }\n    const defaultedOptions = {\n      ...this.#defaultOptions.queries,\n      ...this.getQueryDefaults(options.queryKey),\n      ...options,\n      _defaulted: true\n    };\n    if (!defaultedOptions.queryHash) {\n      defaultedOptions.queryHash = hashQueryKeyByOptions(\n        defaultedOptions.queryKey,\n        defaultedOptions\n      );\n    }\n    if (defaultedOptions.refetchOnReconnect === void 0) {\n      defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n    }\n    if (defaultedOptions.throwOnError === void 0) {\n      defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n    }\n    if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n      defaultedOptions.networkMode = \"offlineFirst\";\n    }\n    if (defaultedOptions.queryFn === skipToken) {\n      defaultedOptions.enabled = false;\n    }\n    return defaultedOptions;\n  }\n  defaultMutationOptions(options) {\n    if (options?._defaulted) {\n      return options;\n    }\n    return {\n      ...this.#defaultOptions.mutations,\n      ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n      ...options,\n      _defaulted: true\n    };\n  }\n  clear() {\n    this.#queryCache.clear();\n    this.#mutationCache.clear();\n  }\n};\nexport {\n  QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * ReactiveDatasetCache for managing e3 dataset caching and reactivity.\n *\n * @remarks\n * Built on `@tanstack/query-core`: a {@link QueryClient} owns the content\n * bytes (one query per `(workspace, path)`, structured keys, in-flight\n * dedup + cancellation), while a thin subscription shim maintains the\n * string-keyed `subscribe` / `getKeyVersion` contract the platform\n * runtimes (`bind-runtime`, reactive trackers, Diff) consume, with an\n * optional `setScheduler` hook to defer notification flushes out of React\n * render.\n *\n * Server-side change detection is hash-based polling against\n * `workspaceStatus`: only when a dataset's hash moves do we issue a full\n * content fetch. Writes are optimistic and **serialized per key** —\n * concurrent writes to one dataset apply their bytes synchronously\n * (latest wins) but hit the server in order, and a failure only rolls\n * back to the last server-confirmed baseline when no later write has\n * taken ownership of the key. A write also cancels any in-flight content\n * fetch for its key so a stale fetch can never clobber the optimistic\n * bytes, and poll-driven fetch results are discarded when a write\n * supersedes them mid-flight (write-epoch guard).\n *\n * Independent from `@tanstack/react-query`. Other hooks in this package\n * (status / repos) use TanStack's React layer on their own keys; this\n * cache shares only the framework-agnostic core.\n *\n * @packageDocumentation\n */\n\nimport { CancelledError, QueryClient } from \"@tanstack/query-core\";\nimport { variant } from \"@elaraai/east\";\nimport {\n    datasetGet,\n    datasetSet,\n    dataflowExecuteLaunch,\n    datasetList as e3DatasetList,\n    datasetListAt,\n    workspaceStatus,\n    ApiError,\n    type DatasetStatusInfo,\n} from \"@elaraai/e3-api-client\";\nimport type { TreePath, DatasetStatus as PlatformDatasetStatus } from \"@elaraai/e3-types\";\n\n/**\n * Timer abstraction the cache uses for periodic polling. Exists so\n * tests can drive the poll loop deterministically with a fake clock\n * instead of `setInterval` real-time.\n */\nexport interface Clock {\n    /** Schedule `fn` to run every `ms` milliseconds. Returns a handle\n     *  whose `clear()` cancels future invocations. */\n    setInterval(fn: () => void, ms: number): { clear(): void };\n}\n\n/** Default {@link Clock} backed by `globalThis.setInterval`. */\nexport const realClock: Clock = {\n    setInterval(fn, ms) {\n        const id = setInterval(fn, ms);\n        return { clear: () => clearInterval(id) };\n    },\n};\n\n/**\n * Adapter the cache uses for every server round-trip. Exists so tests\n * (and any non-e3 host) can inject a synthetic implementation; the\n * default wraps the `@elaraai/e3-api-client` module-level functions.\n *\n * The cache passes its own `apiUrl` / `repo` / `token` config to the\n * adapter only via the {@link createDefaultDatasetApi} factory — the\n * adapter itself doesn't see those values, so tests don't need to\n * scaffold dummy URLs.\n */\nexport interface DatasetApi {\n    /** Fetch a dataset's content. `hash` is the server's content hash\n     *  when it exposes one (`null` otherwise) — the cache records it so\n     *  the next status poll doesn't refetch content it already has. */\n    get(workspace: string, path: TreePath): Promise<{ data: Uint8Array; hash: string | null }>;\n    set(workspace: string, path: TreePath, value: Uint8Array): Promise<void>;\n    launchDataflow(workspace: string): Promise<void>;\n    listRoot(workspace: string): Promise<string[]>;\n    listAt(workspace: string, path: TreePath): Promise<string[]>;\n    workspaceStatus(workspace: string): Promise<{ datasets: DatasetStatusInfo[] }>;\n}\n\n/**\n * Build the default {@link DatasetApi} that talks to a real e3 server\n * via `@elaraai/e3-api-client`. Tests typically construct a\n * hand-rolled adapter instead.\n */\nexport function createDefaultDatasetApi(\n    apiUrl: string,\n    repo: string,\n    getToken: () => string | null,\n): DatasetApi {\n    const opts = (): { token: string | null } => ({ token: getToken() });\n    return {\n        async get(workspace, path) {\n            const result = await datasetGet(apiUrl, repo, workspace, path, opts());\n            return { data: result.data, hash: result.hash ?? null };\n        },\n        async set(workspace, path, value) {\n            await datasetSet(apiUrl, repo, workspace, path, value, opts());\n        },\n        async launchDataflow(workspace) {\n            await dataflowExecuteLaunch(apiUrl, repo, workspace, {}, opts());\n        },\n        async listRoot(workspace) {\n            return e3DatasetList(apiUrl, repo, workspace, opts());\n        },\n        async listAt(workspace, path) {\n            return datasetListAt(apiUrl, repo, workspace, path, opts());\n        },\n        async workspaceStatus(workspace) {\n            return workspaceStatus(apiUrl, repo, workspace, opts());\n        },\n    };\n}\n\n/**\n * Configuration for the {@link ReactiveDatasetCache}.\n *\n * Strictly cache-internal — credentials and server identity (apiUrl,\n * repo, token) live in the {@link E3Config} context exposed by\n * `<E3Provider>`. The cache talks to the server only via the injected\n * {@link DatasetApi} adapter, so it has no opinion on transport.\n *\n * @property workspace - The workspace this cache instance renders\n *  against. Used by `Data.bind` to scope cache keys; consumed by\n *  bind-runtime + the Diff renderer via `getConfig().workspace`.\n */\nexport interface ReactiveDatasetCacheConfig {\n    workspace?: string;\n}\n\n/**\n * Interface for the ReactiveDatasetCache.\n */\nexport interface ReactiveDatasetCacheInterface {\n    /** Read a cached dataset value synchronously */\n    read(workspace: string, path: TreePath): Uint8Array | undefined;\n    /** Check if a dataset is cached */\n    has(workspace: string, path: TreePath): boolean;\n    /**\n     * Get the platform status of a dataset — `unset` | `stale` | `up-to-date`.\n     * Returns `unset` if we don't know yet (status hasn't been polled).\n     * `write()` flips the local entry to `stale` immediately (optimistic).\n     * The next poll updates from the server's authoritative status.\n     */\n    getStatus(workspace: string, path: TreePath): PlatformDatasetStatus;\n    /** Write a dataset value (async - mutates remotely) */\n    write(workspace: string, path: TreePath, value: Uint8Array): Promise<void>;\n    /**\n     * Write a dataset value AND launch a dataflow execution to propagate the\n     * change to downstream tasks. Use when a single user action both mutates\n     * input data and should trigger downstream recomputation (e.g. a Slider's\n     * `onChangeEnd`). Use plain `write` for high-frequency optimistic updates\n     * that you don't want to drive the dataflow on every tick.\n     */\n    writeAndStart(workspace: string, path: TreePath, value: Uint8Array): Promise<void>;\n    /**\n     * Launch a workspace dataflow run WITHOUT writing anything first, so\n     * downstream tasks recompute against the current dataset state. This is the\n     * standalone half of {@link writeAndStart} — use it after an out-of-band\n     * mutation (e.g. a record commit) or to drive an explicit \"Run\" affordance.\n     * Fire-and-await: resolves once the server accepts the request, not when\n     * the dataflow finishes.\n     */\n    launchDataflow(workspace: string): Promise<void>;\n    /** Preload a dataset into cache */\n    preload(workspace: string, path: TreePath): Promise<void>;\n    /** List fields at a path */\n    list(workspace: string, path: TreePath): Promise<string[]>;\n    /** Set polling interval for a dataset */\n    setRefetchInterval(workspace: string, path: TreePath, intervalMs: number): void;\n    /**\n     * Stop polling a dataset previously registered with\n     * {@link setRefetchInterval}. The workspace's shared poller stops\n     * entirely once its last path is cleared — without this, a long-lived\n     * session accumulates watched paths (and network traffic) forever.\n     */\n    clearRefetchInterval(workspace: string, path: TreePath): void;\n    /**\n     * Force one immediate workspace-status poll, reconciling every watched\n     * path's content against the server (hash-gated; only changed datasets\n     * refetch). Use after an out-of-band server mutation (e.g. a record\n     * mutation commit) so a watched dataset picks up the new bytes without\n     * waiting for the standing poll interval. No-op if the workspace has no\n     * active poller. Fire-and-forget; resolves when the poll settles.\n     */\n    refresh(workspace: string): Promise<void>;\n    /** Subscribe to changes on a specific key */\n    subscribe(key: string, callback: () => void): () => void;\n    /** Subscribe to all changes */\n    subscribe(callback: () => void): () => void;\n    /** Get global snapshot version */\n    getSnapshot(): number;\n    /** Get version for a specific key */\n    getKeyVersion(key: string): number;\n    /** Set notification scheduler */\n    setScheduler(scheduler: ((notify: () => void) => void) | undefined): void;\n    /** Batch multiple operations */\n    batch<T>(fn: () => T): T;\n    /** Get the configuration */\n    getConfig(): ReactiveDatasetCacheConfig;\n    /** Clean up resources */\n    destroy(): void;\n}\n\n/**\n * Convert a dataset path to a string key for caching.\n *\n * @remarks\n * Dot-joined to match the server's own path encoding (workspaceStatus\n * reports `.a.b` paths) — field names containing `.` are ambiguous at\n * the e3 wire level itself, so the cache doesn't try to out-encode it.\n */\nexport function datasetPathToString(path: TreePath): string {\n    return path.map(p => p.value).join(\".\");\n}\n\n/**\n * Create a cache key from workspace and path.\n */\nexport function datasetCacheKey(workspace: string, path: TreePath): string {\n    const pathStr = datasetPathToString(path);\n    return pathStr ? `${workspace}.${pathStr}` : workspace;\n}\n\n/** The last server-confirmed state of a key, captured when its write\n *  pipeline goes idle → busy; failures roll back to this. */\ninterface WriteBaseline {\n    value: Uint8Array | undefined;\n    /** `undefined` = hash unknown (entry absent); `null` = known-absent. */\n    hash: string | null | undefined;\n    status: PlatformDatasetStatus | undefined;\n}\n\n/**\n * ReactiveDatasetCache manages dataset caching and reactivity.\n *\n * @remarks\n * Content bytes live in a `@tanstack/query-core` {@link QueryClient}\n * (structured query keys, fetch dedup + cancellation); statuses, content\n * hashes, write pipelines, the workspace-status poll loop, and the\n * string-keyed subscription shim are cache-owned. See the module remarks\n * for the write/poll race rules.\n *\n * This differs from raw `@elaraai/e3-api-client` dataset functions which\n * are for direct API calls without reactive binding or caching.\n */\nexport class ReactiveDatasetCache implements ReactiveDatasetCacheInterface {\n    private destroyed = false;\n    private api: DatasetApi;\n    private config: {\n        workspace: string | undefined;\n    };\n\n    // Content store — one query per (workspace, path). `staleTime` and\n    // `gcTime` are Infinity: content only changes when the hash-poll says\n    // so (we invalidate explicitly), and the platform closures need\n    // synchronous reads of everything ever loaded (no observer-based GC).\n    private readonly client: QueryClient;\n\n    // Hash tracking for efficient change detection.\n    // Maps cache key -> last known e3 content hash (`null` = known-absent).\n    private knownHashes: Map<string, string | null> = new Map();\n\n    // Per-key platform status (unset | stale | up-to-date). Defaults to\n    // unset until either a poll returns a server status or a local write\n    // optimistically marks it stale.\n    private statuses: Map<string, PlatformDatasetStatus> = new Map();\n\n    // Write pipeline (per key): writes apply optimistically + synchronously\n    // (latest wins) but reach the server serialized, and only the newest\n    // failed write rolls back — to the last server-confirmed baseline.\n    // The epoch also discards poll-driven fetch results that a write\n    // superseded mid-flight.\n    private writeEpochs: Map<string, number> = new Map();\n    private writeChains: Map<string, Promise<void>> = new Map();\n    private writeBaselines: Map<string, WriteBaseline> = new Map();\n    private pendingWriteCounts: Map<string, number> = new Map();\n\n    // Subscription management\n    private keySubscribers: Map<string, Set<() => void>> = new Map();\n    private globalSubscribers: Set<() => void> = new Set();\n\n    // Version tracking for useSyncExternalStore\n    private version: number = 0;\n    private keyVersions: Map<string, number> = new Map();\n\n    // Workspace status polling — groups subscriptions by workspace for\n    // efficiency. Each entry holds the active interval handle from the\n    // injected {@link Clock} so tests can drive ticking deterministically.\n    private workspacePollers: Map<string, {\n        intervalMs: number;\n        paths: Set<string>;\n        handle: { clear(): void } | null;\n    }> = new Map();\n    private readonly clock: Clock;\n\n    // In-flight poll dedup — concurrent callers (interval tick + a\n    // post-write trigger) share a single round-trip rather than racing.\n    private inFlightPolls: Map<string, Promise<void>> = new Map();\n\n    // Batching\n    private batchDepth: number = 0;\n    private changedKeys: Set<string> = new Set();\n\n    // Scheduler for deferred notifications\n    private scheduler: ((notify: () => void) => void) | undefined;\n    private flushScheduled = false;\n\n    constructor(config: ReactiveDatasetCacheConfig, api: DatasetApi, clock: Clock = realClock) {\n        this.config = { workspace: config.workspace };\n        this.api = api;\n        this.clock = clock;\n        this.client = new QueryClient({\n            defaultOptions: {\n                queries: { retry: false, staleTime: Infinity, gcTime: Infinity },\n            },\n        });\n        this.client.mount();\n    }\n\n    /** Structured query key for a dataset's content. */\n    private contentKey(workspace: string, path: TreePath): readonly unknown[] {\n        return [\"dataset\", workspace, ...path.map(p => p.value)];\n    }\n\n    /**\n     * Read the cache's own configuration. Server identity (apiUrl,\n     * repo, token) is NOT here — read it from `<E3Provider>` via\n     * `useE3Config()` instead.\n     */\n    getConfig(): ReactiveDatasetCacheConfig {\n        return this.config.workspace !== undefined\n            ? { workspace: this.config.workspace }\n            : {};\n    }\n\n    /**\n     * Read a dataset value synchronously from cache.\n     */\n    read(workspace: string, path: TreePath): Uint8Array | undefined {\n        return this.client.getQueryData<Uint8Array>(this.contentKey(workspace, path));\n    }\n\n    /**\n     * Check if a dataset is cached.\n     */\n    has(workspace: string, path: TreePath): boolean {\n        return this.read(workspace, path) !== undefined;\n    }\n\n    /**\n     * Get the platform status of a dataset. Defaults to `unset` until the\n     * first poll returns a server status.\n     */\n    getStatus(workspace: string, path: TreePath): PlatformDatasetStatus {\n        const key = datasetCacheKey(workspace, path);\n        return this.statuses.get(key) ?? variant('unset', null);\n    }\n\n    /**\n     * Write a dataset value (async - mutates remotely).\n     *\n     * @remarks\n     * Optimistic and synchronous: the bytes are readable via {@link read}\n     * before this method's first await. Concurrent writes to the same key\n     * are serialized server-side (issue order preserved); on failure, only\n     * the newest write rolls the key back — to the last server-confirmed\n     * baseline, not to a possibly-superseded optimistic intermediate.\n     */\n    write(workspace: string, path: TreePath, value: Uint8Array): Promise<void> {\n        if (this.destroyed) return Promise.resolve();\n        const key = datasetCacheKey(workspace, path);\n        const queryKey = this.contentKey(workspace, path);\n\n        // Abort any in-flight content fetch for this key NOW — a stale\n        // fetch result must never apply over the optimistic bytes. (The\n        // returned promise only awaits teardown; the abort is immediate.)\n        void this.client.cancelQueries({ queryKey, exact: true });\n\n        // Baseline = last server-confirmed state, captured when this key's\n        // write pipeline goes idle → busy.\n        const pendingCount = this.pendingWriteCounts.get(key) ?? 0;\n        if (pendingCount === 0) {\n            this.writeBaselines.set(key, {\n                value: this.client.getQueryData<Uint8Array>(queryKey),\n                hash: this.knownHashes.has(key) ? this.knownHashes.get(key) : undefined,\n                status: this.statuses.get(key),\n            });\n        }\n        this.pendingWriteCounts.set(key, pendingCount + 1);\n        const myEpoch = (this.writeEpochs.get(key) ?? 0) + 1;\n        this.writeEpochs.set(key, myEpoch);\n\n        // Optimistic update — bytes go into the cache synchronously,\n        // status flips to `stale` until the server confirms.\n        this.client.setQueryData(queryKey, value);\n        this.knownHashes.delete(key);\n        this.statuses.set(key, variant('stale', null));\n        this.notifyChange(key);\n\n        // Server set, serialized after any earlier writes to this key.\n        const prevTail = this.writeChains.get(key) ?? Promise.resolve();\n        const run = prevTail.then(async () => {\n            try {\n                await this.api.set(workspace, path, value);\n                if (this.destroyed) return;\n\n                // Confirmed — this value is the new rollback baseline for\n                // any still-pending later writes.\n                this.writeBaselines.set(key, {\n                    value,\n                    hash: undefined,\n                    status: variant('stale', null),\n                });\n\n                // Trigger a poll to refresh the hash + authoritative status.\n                if (this.workspacePollers.has(workspace)) {\n                    void this.pollWorkspaceStatus(workspace);\n                }\n            } catch (error) {\n                // Roll back only if no later write owns the key's state.\n                if (!this.destroyed && this.writeEpochs.get(key) === myEpoch) {\n                    const baseline = this.writeBaselines.get(key);\n                    if (baseline?.value !== undefined) {\n                        this.client.setQueryData(queryKey, baseline.value);\n                    } else {\n                        this.client.removeQueries({ queryKey, exact: true });\n                    }\n                    if (baseline?.hash !== undefined) {\n                        this.knownHashes.set(key, baseline.hash);\n                    } else {\n                        this.knownHashes.delete(key);\n                    }\n                    if (baseline?.status !== undefined) {\n                        this.statuses.set(key, baseline.status);\n                    } else {\n                        this.statuses.delete(key);\n                    }\n                    this.notifyChange(key);\n                }\n                throw error;\n            } finally {\n                const remaining = (this.pendingWriteCounts.get(key) ?? 1) - 1;\n                if (remaining <= 0) {\n                    this.pendingWriteCounts.delete(key);\n                    this.writeBaselines.delete(key);\n                } else {\n                    this.pendingWriteCounts.set(key, remaining);\n                }\n            }\n        });\n        // The chain tail must never reject (later writes chain onto it).\n        this.writeChains.set(key, run.then(() => undefined, () => undefined));\n        return run;\n    }\n\n    /**\n     * Write a dataset value AND launch a workspace dataflow run so downstream\n     * tasks pick up the change. The launch is fire-and-await: it returns once\n     * the server has accepted the request (not when the dataflow finishes).\n     * Polling continues to surface live status as tasks complete.\n     */\n    async writeAndStart(workspace: string, path: TreePath, value: Uint8Array): Promise<void> {\n        await this.write(workspace, path, value);\n        if (this.destroyed) return;\n        await this.api.launchDataflow(workspace);\n    }\n\n    /**\n     * Launch a workspace dataflow run without writing first. The standalone\n     * half of {@link writeAndStart}; see the interface doc for semantics.\n     */\n    async launchDataflow(workspace: string): Promise<void> {\n        if (this.destroyed) return;\n        await this.api.launchDataflow(workspace);\n    }\n\n    /**\n     * Preload a dataset into cache. Concurrent preloads of the same key\n     * share one fetch (query-core dedup); a write racing the fetch cancels\n     * it, so a preload can never clobber optimistic bytes.\n     */\n    async preload(workspace: string, path: TreePath): Promise<void> {\n        if (this.destroyed) return;\n        const key = datasetCacheKey(workspace, path);\n        const queryKey = this.contentKey(workspace, path);\n\n        // Already cached (including optimistically) — nothing to do.\n        if (this.client.getQueryData(queryKey) !== undefined) return;\n\n        let fetchedHash: string | null = null;\n        try {\n            await this.client.fetchQuery({\n                queryKey,\n                queryFn: async () => {\n                    const result = await this.api.get(workspace, path);\n                    fetchedHash = result.hash;\n                    return result.data;\n                },\n            });\n        } catch (error) {\n            // A write cancelled the fetch — its optimistic bytes win.\n            if (isCancelledError(error)) return;\n            // An unassigned dataset is the `unset` status, not a failure: leave it\n            // uncached so getStatus()→unset and has()→false, and the surface renders\n            // its own loading/empty branch (Data.bind(...).status()/.has()) instead of\n            // the whole tree crashing. A later status poll flips it once the producing\n            // task computes it. (Matches BoundValue's {unset, stale, up-to-date}.)\n            if (isDatasetUnassignedError(error)) {\n                this.statuses.set(key, variant(\"unset\", null));\n                this.notifyChange(key);\n                return;\n            }\n            throw error;\n        }\n        if (this.destroyed) {\n            this.client.removeQueries({ queryKey, exact: true });\n            return;\n        }\n        // Record the content hash so the next status poll doesn't refetch\n        // bytes we already hold.\n        this.knownHashes.set(key, fetchedHash);\n        this.notifyChange(key);\n    }\n\n    /**\n     * List fields at a path. Empty path lists workspace root.\n     */\n    list(workspace: string, path: TreePath): Promise<string[]> {\n        return path.length === 0\n            ? this.api.listRoot(workspace)\n            : this.api.listAt(workspace, path);\n    }\n\n    /**\n     * Set refetch interval for a dataset (polling).\n     *\n     * @remarks\n     * Uses hash-based change detection for efficiency:\n     * 1. Polls workspaceStatus to get dataset hashes (lightweight)\n     * 2. Compares hashes to detect changes\n     * 3. Only fetches full content when hash changes\n     *\n     * Multiple subscriptions to the same workspace share a single poller.\n     * Pair with {@link clearRefetchInterval} on unmount so the poller can\n     * stop when nothing is watching.\n     */\n    setRefetchInterval(workspace: string, path: TreePath, intervalMs: number): void {\n        const pathStr = datasetPathToString(path);\n        let poller = this.workspacePollers.get(workspace);\n\n        if (poller) {\n            poller.paths.add(pathStr);\n            // If the new interval is shorter, restart with shorter interval.\n            if (intervalMs < poller.intervalMs) {\n                poller.handle?.clear();\n                poller.intervalMs = intervalMs;\n                poller.handle = this.clock.setInterval(\n                    () => this.pollWorkspaceStatus(workspace),\n                    intervalMs,\n                );\n            }\n        } else {\n            poller = {\n                intervalMs,\n                paths: new Set([pathStr]),\n                handle: this.clock.setInterval(\n                    () => this.pollWorkspaceStatus(workspace),\n                    intervalMs,\n                ),\n            };\n            this.workspacePollers.set(workspace, poller);\n            // Do an immediate poll. Promise is intentionally floated —\n            // the dedup map handles concurrency, errors are logged.\n            void this.pollWorkspaceStatus(workspace);\n        }\n    }\n\n    /**\n     * Stop polling a dataset; the workspace poller is torn down when its\n     * last watched path is cleared.\n     */\n    clearRefetchInterval(workspace: string, path: TreePath): void {\n        const poller = this.workspacePollers.get(workspace);\n        if (!poller) return;\n        poller.paths.delete(datasetPathToString(path));\n        if (poller.paths.size === 0) {\n            poller.handle?.clear();\n            this.workspacePollers.delete(workspace);\n        }\n    }\n\n    refresh(workspace: string): Promise<void> {\n        // One immediate hash-gated poll, reusing the standing workspace poller\n        // the same way write() nudges after a confirmed set. No-op when nothing\n        // watches the workspace; pollWorkspaceStatus dedupes an in-flight poll.\n        if (this.destroyed) return Promise.resolve();\n        if (!this.workspacePollers.has(workspace)) return Promise.resolve();\n        return this.pollWorkspaceStatus(workspace);\n    }\n\n    /**\n     * Poll workspace status and reconcile the cache with the server.\n     * Concurrent calls for the same workspace dedupe to a single fetch.\n     */\n    private pollWorkspaceStatus(workspace: string): Promise<void> {\n        const existing = this.inFlightPolls.get(workspace);\n        if (existing) return existing;\n        const promise = this.doPollWorkspaceStatus(workspace).finally(() => {\n            this.inFlightPolls.delete(workspace);\n        });\n        this.inFlightPolls.set(workspace, promise);\n        return promise;\n    }\n\n    private async doPollWorkspaceStatus(workspace: string): Promise<void> {\n        if (this.destroyed) return;\n        const poller = this.workspacePollers.get(workspace);\n        if (!poller || poller.paths.size === 0) return;\n\n        // Capture each watched key's write epoch BEFORE the status fetch:\n        // any write that lands after this point owns its key's state, and\n        // this poll's (potentially pre-write) content must not apply.\n        const epochsAtStart = new Map<string, number>();\n        for (const pathStr of poller.paths) {\n            const key = pathStr ? `${workspace}.${pathStr}` : workspace;\n            epochsAtStart.set(key, this.writeEpochs.get(key) ?? 0);\n        }\n\n        let status;\n        try {\n            status = await this.api.workspaceStatus(workspace);\n        } catch (error) {\n            console.error(`Failed to poll workspace status for ${workspace}:`, error);\n            return;\n        }\n        if (this.destroyed) return;\n\n        // Index once — the path loop below must not rescan the dataset\n        // list per watched path.\n        const infoByPath = new Map<string, DatasetStatusInfo>();\n        for (const info of status.datasets) infoByPath.set(info.path, info);\n\n        // First pass — apply status updates synchronously, collect paths\n        // that need a content fetch. Doing these in two passes lets us\n        // batch the hash/status notifications under one `flush()` and\n        // run the fetches in parallel.\n        type PendingFetch =\n            | { kind: \"fetch\"; key: string; path: TreePath; pathStr: string; newHash: string }\n            | { kind: \"clear\"; key: string; path: TreePath };\n        const pending: PendingFetch[] = [];\n\n        this.batch(() => {\n            for (const pathStr of poller.paths) {\n                const e3Path = pathStr ? `.${pathStr}` : \"\";\n                const info = infoByPath.get(e3Path);\n                const key = pathStr ? `${workspace}.${pathStr}` : workspace;\n                const path = this.stringToPath(pathStr);\n                const currentHash = info?.hash?.type === \"some\" ? info.hash.value : null;\n                const knownHash = this.knownHashes.get(key);\n\n                if (info?.status) {\n                    const previous = this.statuses.get(key);\n                    this.statuses.set(key, info.status);\n                    if (!previous || previous.type !== info.status.type) {\n                        this.notifyChange(key);\n                    }\n                }\n\n                // Skip content reconciliation for keys with writes in\n                // flight — the write pipeline owns them.\n                if ((this.writeEpochs.get(key) ?? 0) !== epochsAtStart.get(key)\n                    || (this.pendingWriteCounts.get(key) ?? 0) > 0) {\n                    continue;\n                }\n\n                if (currentHash !== knownHash || !this.has(workspace, path)) {\n                    if (currentHash !== null) {\n                        pending.push({ kind: \"fetch\", key, pathStr, path, newHash: currentHash });\n                    } else if (this.has(workspace, path)) {\n                        pending.push({ kind: \"clear\", key, path });\n                    }\n                }\n            }\n        });\n\n        if (pending.length === 0) return;\n\n        // Run all fetches in parallel; per-path errors are isolated. The\n        // results apply under the write-epoch guard: a key written while\n        // the fetch was in flight keeps its optimistic bytes.\n        const fetched = await Promise.allSettled(\n            pending.map(p => p.kind === \"fetch\"\n                ? this.api.get(workspace, p.path).then(result => ({ p, result }))\n                : Promise.resolve({ p, result: null as { data: Uint8Array; hash: string | null } | null }),\n            ),\n        );\n        if (this.destroyed) return;\n\n        this.batch(() => {\n            for (let i = 0; i < pending.length; i++) {\n                const p = pending[i]!;\n                const result = fetched[i]!;\n                if (result.status === \"rejected\") {\n                    console.error(`Failed to fetch dataset ${p.key}:`, result.reason);\n                    continue;\n                }\n                if ((this.writeEpochs.get(p.key) ?? 0) !== epochsAtStart.get(p.key)) {\n                    continue; // superseded by a write mid-flight\n                }\n                const queryKey = this.contentKey(workspace, p.path);\n                if (p.kind === \"fetch\") {\n                    this.client.setQueryData(queryKey, result.value.result!.data);\n                    this.knownHashes.set(p.key, result.value.result!.hash ?? p.newHash);\n                    this.notifyChange(p.key);\n                } else {\n                    this.client.removeQueries({ queryKey, exact: true });\n                    this.knownHashes.set(p.key, null);\n                    this.notifyChange(p.key);\n                }\n            }\n        });\n    }\n\n    /**\n     * Convert a path string back to TreePath.\n     */\n    private stringToPath(pathStr: string): TreePath {\n        if (!pathStr) return [];\n        return pathStr.split(\".\").map(field => variant(\"field\", field));\n    }\n\n    // =========================================================================\n    // Subscription API (mirrors UIStore for compatibility)\n    // =========================================================================\n\n    /**\n     * Subscribe to changes on a specific key or all changes.\n     */\n    subscribe(callback: () => void): () => void;\n    subscribe(key: string, callback: () => void): () => void;\n    subscribe(keyOrCallback: string | (() => void), maybeCallback?: () => void): () => void {\n        if (typeof keyOrCallback === \"function\") {\n            // Global subscription\n            this.globalSubscribers.add(keyOrCallback);\n            return () => { this.globalSubscribers.delete(keyOrCallback); };\n        } else {\n            // Key-specific subscription\n            const key = keyOrCallback;\n            const callback = maybeCallback!;\n            let subs = this.keySubscribers.get(key);\n            if (!subs) {\n                subs = new Set();\n                this.keySubscribers.set(key, subs);\n            }\n            subs.add(callback);\n            return () => {\n                subs.delete(callback);\n                // Only drop the key's registration if it still points at\n                // OUR set — a stale disposer called twice must not tear\n                // down a newer subscriber set under the same key.\n                if (subs.size === 0 && this.keySubscribers.get(key) === subs) {\n                    this.keySubscribers.delete(key);\n                }\n            };\n        }\n    }\n\n    /**\n     * Get global version for useSyncExternalStore.\n     */\n    getSnapshot(): number {\n        return this.version;\n    }\n\n    /**\n     * Get version for a specific key.\n     */\n    getKeyVersion(key: string): number {\n        return this.keyVersions.get(key) ?? 0;\n    }\n\n    /**\n     * Set scheduler for deferred notifications.\n     */\n    setScheduler(scheduler: ((notify: () => void) => void) | undefined): void {\n        this.scheduler = scheduler;\n    }\n\n    /**\n     * Batch multiple operations.\n     */\n    batch<T>(fn: () => T): T {\n        this.batchDepth++;\n        try {\n            return fn();\n        } finally {\n            this.batchDepth--;\n            if (this.batchDepth === 0) {\n                this.flush();\n            }\n        }\n    }\n\n    /**\n     * Notify subscribers of a change.\n     */\n    private notifyChange(key: string): void {\n        // Increment key version\n        const currentVersion = this.keyVersions.get(key) ?? 0;\n        this.keyVersions.set(key, currentVersion + 1);\n\n        this.changedKeys.add(key);\n\n        if (this.batchDepth === 0) {\n            this.flush();\n        }\n    }\n\n    /**\n     * Flush pending notifications.\n     */\n    private flush(): void {\n        if (this.changedKeys.size === 0) return;\n\n        if (this.scheduler) {\n            // Defer notifications to avoid \"setState during render\" errors\n            if (!this.flushScheduled) {\n                this.flushScheduled = true;\n                this.scheduler(() => this.doFlush());\n            }\n        } else {\n            // Synchronous flush (no scheduler provided)\n            this.doFlush();\n        }\n    }\n\n    private doFlush(): void {\n        this.flushScheduled = false;\n        if (this.changedKeys.size === 0) return;\n\n        // Snapshot + clear BEFORE notifying. Without this, a subscriber\n        // that mutates the cache during its callback would add new keys\n        // to `changedKeys`, which we'd then `clear()` at the end —\n        // silently dropping the new notifications. Snapshot-first lets\n        // the recursive flush (or the next batch) handle them.\n        const keys = [...this.changedKeys];\n        const globals = [...this.globalSubscribers];\n        this.changedKeys.clear();\n\n        this.version++;\n\n        for (const key of keys) {\n            const subs = this.keySubscribers.get(key);\n            if (subs) for (const cb of subs) cb();\n        }\n        for (const cb of globals) cb();\n    }\n\n    /**\n     * Cleanup resources. After `destroy()` returns, in-flight fetches,\n     * polls, and writes that are still mid-await won't write to the cache —\n     * `this.destroyed` short-circuits their post-await branches, and the\n     * query client's in-flight fetches are torn down with it.\n     */\n    destroy(): void {\n        this.destroyed = true;\n        for (const poller of this.workspacePollers.values()) {\n            poller.handle?.clear();\n        }\n        this.workspacePollers.clear();\n        this.inFlightPolls.clear();\n        this.keySubscribers.clear();\n        this.globalSubscribers.clear();\n        this.knownHashes.clear();\n        this.statuses.clear();\n        this.keyVersions.clear();\n        this.changedKeys.clear();\n        this.writeEpochs.clear();\n        this.writeChains.clear();\n        this.writeBaselines.clear();\n        this.pendingWriteCounts.clear();\n        this.client.clear();\n        this.client.unmount();\n    }\n}\n\n/** True when `error` is query-core's cancellation rejection (a racing\n *  write aborted the fetch). */\nfunction isCancelledError(error: unknown): boolean {\n    return error instanceof CancelledError;\n}\n\n/** True when `error` is the server's `dataset_unassigned` response — a dataset\n *  with no value yet (a pending task output, or a UI-only input that no task\n *  computes). This is the `unset` status, NOT a failure: callers treat it as\n *  \"no value\" so a surface renders its own loading/empty state rather than\n *  crashing the whole tree. */\nfunction isDatasetUnassignedError(error: unknown): boolean {\n    return error instanceof ApiError && error.code === \"dataset_unassigned\";\n}\n\n/**\n * Create a new {@link ReactiveDatasetCache}. The caller is responsible\n * for constructing a {@link DatasetApi} adapter; in a React tree the\n * `<ReactiveDatasetProvider>` builds one from the surrounding\n * `<E3Provider>`. Tests inject a fake `clock` to drive polling\n * deterministically.\n */\nexport function createReactiveDatasetCache(\n    config: ReactiveDatasetCacheConfig,\n    api: DatasetApi,\n    clock?: Clock,\n): ReactiveDatasetCache {\n    return new ReactiveDatasetCache(config, api, clock);\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * StagedStore — local transactional buffer for staged `Data.bind` writes.\n *\n * @remarks\n * Edits made through staged-mode bindings accumulate here as a per-path\n * entry of `{ snapshot, buffered }`, where:\n *   - `snapshot` is the server value at first-write time (pinned),\n *   - `buffered` is the user's current locally-edited value.\n *\n * The runtime value type for each path lives in the\n * {@link bindingRegistry} maintained by `bind-runtime.ts` — this store\n * holds bytes only and intentionally has no opinion about how to decode\n * them. Decoders look up `getBindingTypes(workspace, path).sourceType`.\n *\n * Persistence is via IndexedDB so values can be MB-scale (well past the\n * ~5–10MB localStorage cap). The store maintains a synchronous in-memory\n * cache mirrored from IndexedDB on hydrate, so reactive reads\n * (`hasPending` / `getBuffered`) stay synchronous. Writes update the\n * in-memory cache synchronously and persist to IndexedDB write-through.\n *\n * Subscribers are notified per-key on writes / discards / hydrate.\n *\n * Hydration is async (one IndexedDB load on first construction). Until\n * `await store.ready()` resolves, the in-memory cache is empty and reads\n * return undefined. Reactive subscribers fire after hydrate completes, so\n * UI components written against the standard `Reactive.Root` machinery\n * pick up hydrated entries automatically without explicit awaiting.\n *\n * @packageDocumentation\n */\n\nimport type { TreePath } from \"@elaraai/e3-types\";\nimport { datasetCacheKey } from \"./dataset-store.js\";\n\n// ============================================================================\n// Public types\n// ============================================================================\n\n/** A staged entry as held in the in-memory cache. */\nexport interface StagedEntry {\n    /** Server value at the moment staging began. Pinned across writes;\n     *  used as the snapshot side of the eventual 3-way merge at commit. */\n    snapshot: Uint8Array;\n    /** Current locally-edited value. Updates on every `write`. */\n    buffered: Uint8Array;\n}\n\n/** Persisted form. Identical to {@link StagedEntry} — kept distinct so\n *  future persistence-layer fields (e.g. compression metadata) don't\n *  leak into the in-memory shape. */\nexport interface PersistedStagedEntry {\n    snapshot: Uint8Array;\n    buffered: Uint8Array;\n}\n\n/** Pluggable persistence adapter. Production uses IndexedDB; tests / SSR\n *  use the in-memory adapter. */\nexport interface StagedPersistenceAdapter {\n    /** Load every persisted entry. Called once when the store is constructed. */\n    loadAll(): Promise<Map<string, PersistedStagedEntry>>;\n    /** Persist (or replace) an entry by key. */\n    save(key: string, entry: PersistedStagedEntry): Promise<void>;\n    /** Remove a single persisted entry by key. */\n    remove(key: string): Promise<void>;\n    /** Remove all persisted entries. */\n    clear(): Promise<void>;\n}\n\nexport interface StagedStoreInterface {\n    /** Resolves when the initial hydrate from persistence has completed.\n     *  Reactive subscribers are notified per-key as entries hydrate. */\n    ready(): Promise<void>;\n\n    /** Resolves when every in-flight persistence write has completed.\n     *  Used by tests and by host code that needs to ensure durability\n     *  before a navigation / unload event. */\n    flushPending(): Promise<void>;\n\n    /** True iff this path has a pending staged change. */\n    hasPending(workspace: string, path: TreePath): boolean;\n    /** Get the buffered (locally-edited) value, or undefined if not staged. */\n    getBuffered(workspace: string, path: TreePath): Uint8Array | undefined;\n    /** Get the pinned snapshot value, or undefined if not staged. */\n    getSnapshot(workspace: string, path: TreePath): Uint8Array | undefined;\n    /** Get the full staged entry, or undefined if not staged. */\n    getEntry(workspace: string, path: TreePath): StagedEntry | undefined;\n\n    /** Write a buffered value. Snapshot is pinned on the first call for a\n     *  given path; subsequent writes update only the buffered value. */\n    write(\n        workspace: string,\n        path: TreePath,\n        snapshotIfNew: Uint8Array,\n        buffered: Uint8Array,\n    ): void;\n\n    /** Drop the staged entry for a path. Returns true if there was one. */\n    discard(workspace: string, path: TreePath): boolean;\n\n    /** All currently-staged keys (workspace+path combinations). */\n    listKeys(): string[];\n\n    // Reactive tracker integration\n    subscribe(key: string, callback: () => void): () => void;\n    getKeyVersion(key: string): number;\n\n    /** Register a listener for durable-persistence failures (save / remove /\n     *  hydrate), keyed by the affected `datasetCacheKey` (empty string for a\n     *  whole-store hydrate failure). Returns an unsubscribe. With no listener,\n     *  failures fall back to a console warning. Lets a host surface a\n     *  'not durably saved' state, mirroring `BindRuntime.onWriteError`. */\n    onPersistError(cb: (key: string, err: unknown) => void): () => void;\n}\n\n// ============================================================================\n// IndexedDB adapter\n// ============================================================================\n\nconst IDB_DB_NAME = \"elaraai-e3-ui\";\nconst IDB_STORE_NAME = \"staged\";\nconst IDB_VERSION = 1;\n\n/**\n * IndexedDB-backed persistence adapter. Stores entries as native\n * structured-clone shapes; no base64 encoding — `Uint8Array` fields\n * survive structured clone losslessly.\n */\nexport class IndexedDBStagedAdapter implements StagedPersistenceAdapter {\n    private dbPromise: Promise<IDBDatabase> | null = null;\n\n    private getDB(): Promise<IDBDatabase> {\n        if (!this.dbPromise) {\n            this.dbPromise = new Promise<IDBDatabase>((resolve, reject) => {\n                const req = indexedDB.open(IDB_DB_NAME, IDB_VERSION);\n                req.onupgradeneeded = () => {\n                    const db = req.result;\n                    if (!db.objectStoreNames.contains(IDB_STORE_NAME)) {\n                        db.createObjectStore(IDB_STORE_NAME);\n                    }\n                };\n                req.onsuccess = () => resolve(req.result);\n                req.onerror  = () => reject(req.error);\n                req.onblocked = () => reject(new Error(\"IndexedDB open blocked\"));\n            });\n            // A transient open failure must not be cached forever — drop the\n            // rejected promise so the next operation retries the open rather\n            // than returning the same rejection for the rest of the session.\n            void this.dbPromise.catch(() => { this.dbPromise = null; });\n        }\n        return this.dbPromise;\n    }\n\n    async loadAll(): Promise<Map<string, PersistedStagedEntry>> {\n        const db = await this.getDB();\n        return new Promise((resolve, reject) => {\n            const tx = db.transaction(IDB_STORE_NAME, \"readonly\");\n            const store = tx.objectStore(IDB_STORE_NAME);\n            const valuesReq = store.getAll();\n            const keysReq = store.getAllKeys();\n            tx.oncomplete = () => {\n                const out = new Map<string, PersistedStagedEntry>();\n                const values = valuesReq.result as PersistedStagedEntry[];\n                const keys = keysReq.result as IDBValidKey[];\n                for (let i = 0; i < keys.length; i++) {\n                    out.set(String(keys[i]), values[i]!);\n                }\n                resolve(out);\n            };\n            tx.onerror = () => reject(tx.error);\n        });\n    }\n\n    async save(key: string, entry: PersistedStagedEntry): Promise<void> {\n        const db = await this.getDB();\n        return new Promise((resolve, reject) => {\n            const tx = db.transaction(IDB_STORE_NAME, \"readwrite\");\n            tx.objectStore(IDB_STORE_NAME).put(entry, key);\n            tx.oncomplete = () => resolve();\n            tx.onerror = () => reject(tx.error);\n        });\n    }\n\n    async remove(key: string): Promise<void> {\n        const db = await this.getDB();\n        return new Promise((resolve, reject) => {\n            const tx = db.transaction(IDB_STORE_NAME, \"readwrite\");\n            tx.objectStore(IDB_STORE_NAME).delete(key);\n            tx.oncomplete = () => resolve();\n            tx.onerror = () => reject(tx.error);\n        });\n    }\n\n    async clear(): Promise<void> {\n        const db = await this.getDB();\n        return new Promise((resolve, reject) => {\n            const tx = db.transaction(IDB_STORE_NAME, \"readwrite\");\n            tx.objectStore(IDB_STORE_NAME).clear();\n            tx.oncomplete = () => resolve();\n            tx.onerror = () => reject(tx.error);\n        });\n    }\n}\n\n// ============================================================================\n// In-memory adapter (tests / SSR / fallback when no IndexedDB available)\n// ============================================================================\n\n/**\n * Trivial in-memory implementation. Used by tests directly and as the\n * fallback when IndexedDB isn't available (e.g. SSR, very locked-down\n * iframes). The \"persistence\" is process-lifetime only.\n */\nexport class MemoryStagedAdapter implements StagedPersistenceAdapter {\n    private map = new Map<string, PersistedStagedEntry>();\n\n    async loadAll(): Promise<Map<string, PersistedStagedEntry>> {\n        // Return a copy so callers mutating their map don't affect ours.\n        return new Map(this.map);\n    }\n\n    async save(key: string, entry: PersistedStagedEntry): Promise<void> {\n        this.map.set(key, entry);\n    }\n\n    async remove(key: string): Promise<void> {\n        this.map.delete(key);\n    }\n\n    async clear(): Promise<void> {\n        this.map.clear();\n    }\n}\n\n// ============================================================================\n// StagedStore — adapter-driven, sync in-memory cache, async write-through.\n// ============================================================================\n\nexport class StagedStore implements StagedStoreInterface {\n    private entries: Map<string, StagedEntry> = new Map();\n    private subscribers: Map<string, Set<() => void>> = new Map();\n    private versions: Map<string, number> = new Map();\n    private adapter: StagedPersistenceAdapter;\n    private hydrated: Promise<void>;\n    private inFlight: Set<Promise<void>> = new Set();\n    // Per-key persistence chain — serializes save/remove for a key so they\n    // land in IndexedDB in call order (last write wins) instead of racing.\n    private saveChains: Map<string, Promise<void>> = new Map();\n    // Listeners notified when a persistence op fails durably.\n    private errorListeners: Set<(key: string, err: unknown) => void> = new Set();\n\n    constructor(adapter: StagedPersistenceAdapter) {\n        this.adapter = adapter;\n        this.hydrated = this.hydrate();\n    }\n\n    // ----- public API ------------------------------------------------------\n\n    ready(): Promise<void> {\n        return this.hydrated;\n    }\n\n    async flushPending(): Promise<void> {\n        // Snapshot the in-flight set; new writes during await are tolerated\n        // by re-checking until idle.\n        while (this.inFlight.size > 0) {\n            await Promise.all([...this.inFlight]);\n        }\n    }\n\n    hasPending(workspace: string, path: TreePath): boolean {\n        return this.entries.has(datasetCacheKey(workspace, path));\n    }\n\n    getBuffered(workspace: string, path: TreePath): Uint8Array | undefined {\n        return this.entries.get(datasetCacheKey(workspace, path))?.buffered;\n    }\n\n    getSnapshot(workspace: string, path: TreePath): Uint8Array | undefined {\n        return this.entries.get(datasetCacheKey(workspace, path))?.snapshot;\n    }\n\n    getEntry(workspace: string, path: TreePath): StagedEntry | undefined {\n        return this.entries.get(datasetCacheKey(workspace, path));\n    }\n\n    write(\n        workspace: string,\n        path: TreePath,\n        snapshotIfNew: Uint8Array,\n        buffered: Uint8Array,\n    ): void {\n        const key = datasetCacheKey(workspace, path);\n        const existing = this.entries.get(key);\n        const next: StagedEntry = existing\n            ? { snapshot: existing.snapshot, buffered }\n            : { snapshot: snapshotIfNew, buffered };\n        this.entries.set(key, next);\n        this.notify(key);\n\n        const persisted: PersistedStagedEntry = {\n            snapshot: next.snapshot,\n            buffered: next.buffered,\n        };\n        this.persist(key, () => this.adapter.save(key, persisted));\n    }\n\n    discard(workspace: string, path: TreePath): boolean {\n        const key = datasetCacheKey(workspace, path);\n        if (!this.entries.has(key)) return false;\n        this.entries.delete(key);\n        this.notify(key);\n        this.persist(key, () => this.adapter.remove(key));\n        return true;\n    }\n\n    listKeys(): string[] {\n        return [...this.entries.keys()];\n    }\n\n    subscribe(key: string, callback: () => void): () => void {\n        let set = this.subscribers.get(key);\n        if (!set) {\n            set = new Set();\n            this.subscribers.set(key, set);\n        }\n        set.add(callback);\n        return () => {\n            set!.delete(callback);\n            if (set!.size === 0) this.subscribers.delete(key);\n        };\n    }\n\n    getKeyVersion(key: string): number {\n        return this.versions.get(key) ?? 0;\n    }\n\n    onPersistError(cb: (key: string, err: unknown) => void): () => void {\n        this.errorListeners.add(cb);\n        return () => { this.errorListeners.delete(cb); };\n    }\n\n    /** Test-only: clear in-memory + persisted state. */\n    async clear(): Promise<void> {\n        const keys = [...this.entries.keys()];\n        this.entries.clear();\n        for (const key of keys) this.notify(key);\n        // Drain in-flight saves/removes before wiping persistence, so a save\n        // that lands after the wipe can't resurrect a discarded entry.\n        await this.flushPending();\n        await this.adapter.clear();\n    }\n\n    // ----- internals -------------------------------------------------------\n\n    private notify(key: string): void {\n        this.versions.set(key, (this.versions.get(key) ?? 0) + 1);\n        const subs = this.subscribers.get(key);\n        if (subs) for (const cb of subs) cb();\n    }\n\n    /**\n     * Serialize a persistence op behind any prior op for the same key, so they\n     * land in IndexedDB in call order (last write wins) rather than racing.\n     * Tracks the op for {@link flushPending} and routes failures to\n     * {@link onPersistError} listeners (falling back to a console warning).\n     */\n    private persist(key: string, op: () => Promise<void>): void {\n        const prev = this.saveChains.get(key) ?? Promise.resolve();\n        // Run op once prev settles (regardless of prev's outcome, so a prior\n        // failure doesn't stall later ops). `settled` never rejects — failures\n        // are routed, not propagated.\n        const settled: Promise<void> = prev.then(op, op).then(\n            () => undefined,\n            (err: unknown) => { this.emitPersistError(key, err); },\n        ).then(() => {\n            if (this.saveChains.get(key) === settled) this.saveChains.delete(key);\n            this.inFlight.delete(settled);\n        });\n        this.saveChains.set(key, settled);\n        this.inFlight.add(settled);\n    }\n\n    private emitPersistError(key: string, err: unknown): void {\n        if (this.errorListeners.size === 0) {\n            console.warn(\"[StagedStore] persistence operation failed:\", err);\n            return;\n        }\n        for (const cb of [...this.errorListeners]) {\n            try {\n                cb(key, err);\n            } catch (listenerErr) {\n                console.warn(\"[StagedStore] persist-error listener threw:\", listenerErr);\n            }\n        }\n    }\n\n    private async hydrate(): Promise<void> {\n        let persisted: Map<string, PersistedStagedEntry>;\n        try {\n            persisted = await this.adapter.loadAll();\n        } catch (err) {\n            this.emitPersistError(\"\", err);\n            return;\n        }\n        for (const [key, p] of persisted) {\n            this.entries.set(key, {\n                snapshot: p.snapshot,\n                buffered: p.buffered,\n            });\n            this.notify(key);\n        }\n    }\n}\n\n// ============================================================================\n// Default singleton + adapter detection\n// ============================================================================\n\nfunction detectDefaultAdapter(): StagedPersistenceAdapter {\n    try {\n        if (typeof globalThis !== \"undefined\" && typeof (globalThis as { indexedDB?: unknown }).indexedDB !== \"undefined\") {\n            return new IndexedDBStagedAdapter();\n        }\n    } catch {\n        // fall through\n    }\n    return new MemoryStagedAdapter();\n}\n\nlet _stagedStore: StagedStoreInterface | null = null;\n\nexport function getStagedStore(): StagedStoreInterface {\n    if (!_stagedStore) {\n        _stagedStore = new StagedStore(detectDefaultAdapter());\n    }\n    return _stagedStore;\n}\n\nexport function initializeStagedStore(store: StagedStoreInterface): void {\n    _stagedStore = store;\n}\n\nexport function clearStagedStoreSingleton(): void {\n    _stagedStore = null;\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Runtime implementation for the unified `Data.bind` platform function.\n *\n * Replaces three older runtimes (direct / staged / overlay) with one\n * mode-dispatched implementation. The (mode, patch?) combination resolved\n * at call time selects which closures to install for `read` / `write` /\n * `commit` / `discard`.\n *\n * State (queue, registry, cache singleton, tracking context) is\n * encapsulated in the {@link BindRuntime} class. A process-global\n * {@link defaultBindRuntime} powers the `BindPlatform` export and the\n * free-function helpers; tests construct their own `BindRuntime` for\n * isolation.\n *\n * @packageDocumentation\n */\n\nimport {\n    type EastTypeValue,\n    encodeBeast2For,\n    decodeBeast2For,\n    EastError,\n    ConflictError,\n    diffFor,\n    applyFor,\n    PatchType,\n    BlobType,\n    toEastTypeValue,\n    variant,\n    compareFor,\n    equalFor,\n    SortedMap,\n    type ValueTypeOf,\n    OptionType,\n} from \"@elaraai/east\";\nimport { type PlatformFunction, EastTypeType } from \"@elaraai/east/internal\";\nimport {\n    bindPlatformFn,\n    type DataManifest,\n    type DataBindModeLiteral,\n    DataBindModeType,\n} from \"@elaraai/e3-ui/internal\";\nimport {\n    registerReactiveTracker,\n    registerPlatformImplementation,\n} from \"@elaraai/east-ui-components/platform\";\nimport type { TreePath } from \"@elaraai/e3-types\";\n\nimport {\n    type ReactiveDatasetCacheInterface,\n    datasetCacheKey,\n    datasetPathToString,\n} from \"./dataset-store.js\";\nimport {\n    getStagedStore,\n    type StagedStoreInterface,\n} from \"./staged-store.js\";\n\n// =============================================================================\n// Module-level constants — these never depend on a specific runtime\n// instance, so they live at module scope.\n// =============================================================================\n\n/** Reusable `unchanged` variant for patch datasets. */\nconst UNCHANGED_VARIANT = variant(\"unchanged\", null);\n\n/** Bytewise equality for the cache's encoded BLOB representation. Used\n *  to detect concurrent writes during a commit's network round-trip so\n *  the post-commit `discard()` doesn't drop in-flight edits. */\nconst blobEqual = equalFor(BlobType) as (a: Uint8Array, b: Uint8Array) => boolean;\n\n/** Structural equality for East types — used to detect that two\n *  bindings against the same source path agree on the value type.\n *  Mismatch means one binding's decoder will misread the other's bytes. */\nconst eastTypeEqual = equalFor(EastTypeType) as (a: EastTypeValue, b: EastTypeValue) => boolean;\n\n// =============================================================================\n// Per-binding helpers cache.\n//\n// The platform impl runs on every reactive re-render of every binding;\n// for a Table with N row-cell bindings that's 6×N type-derived\n// closures per render — so we memoize them by sourceType.\n//\n// Keyed by *structural* equality (via `compareFor(EastTypeType)`):\n// each `Data.bind([T], ...)` evaluation builds a fresh `EastTypeValue`\n// from the IR, so a WeakMap-by-identity cache would miss every render.\n// Module-level (not per-runtime) because it's a pure function-of-type;\n// no semantic state belongs to a particular runtime instance.\n// =============================================================================\n\ninterface BindingHelpers {\n    readonly patchType:   EastTypeValue;\n    readonly decodeT:     (bytes: Uint8Array) => unknown;\n    readonly encodeT:     (value: unknown) => Uint8Array;\n    readonly decodePatch: (bytes: Uint8Array) => unknown;\n    readonly encodePatch: (value: unknown) => Uint8Array;\n    readonly apply:       (base: unknown, patch: unknown) => unknown;\n    readonly diff:        (before: unknown, after: unknown) => unknown;\n}\n\nconst helpersCache = new SortedMap<EastTypeValue, BindingHelpers>(\n    undefined,\n    compareFor(EastTypeType),\n);\n\nfunction getBindingHelpers(sourceType: EastTypeValue): BindingHelpers {\n    let cached = helpersCache.get(sourceType);\n    if (!cached) {\n        const patchType = toEastTypeValue(PatchType(sourceType));\n        cached = {\n            patchType,\n            decodeT:     decodeBeast2For(sourceType) as (b: Uint8Array) => unknown,\n            encodeT:     encodeBeast2For(sourceType) as (v: unknown) => Uint8Array,\n            decodePatch: decodeBeast2For(patchType)  as (b: Uint8Array) => unknown,\n            encodePatch: encodeBeast2For(patchType)  as (v: unknown) => Uint8Array,\n            apply:       applyFor(sourceType) as (b: unknown, p: unknown) => unknown,\n            diff:        diffFor(sourceType)  as (b: unknown, a: unknown) => unknown,\n        };\n        helpersCache.set(sourceType, cached);\n    }\n    return cached;\n}\n\n// =============================================================================\n// Public types\n// =============================================================================\n\n/**\n * Per-binding metadata the Diff renderer needs to materialize a\n * binding's tree. Keyed by `datasetCacheKey(workspace, sourcePath)`.\n */\nexport interface BindingTypes {\n    readonly workspace:  string;\n    readonly sourceType: EastTypeValue;\n    readonly patchType:  EastTypeValue;\n    readonly mode:       DataBindModeLiteral;\n    readonly hasPatchDataset: boolean;\n}\n\n/** The struct returned by `Data.bind` — an East-side handle on a\n *  dataset binding. JS-side test callers use the same shape. */\nexport interface BindHandle {\n    read:          () => unknown;\n    write:         (value: unknown) => null;\n    writeAndStart: (value: unknown) => null;\n    start:         () => null;\n    source:        () => unknown;\n    pending:       () => boolean;\n    commit:        () => null;\n    discard:       () => null;\n    has:           () => boolean;\n    status:        () => unknown;\n    binding:       {\n        source: TreePath;\n        patch:  ValueTypeOf<OptionType<TreePath>>;\n        mode:   ValueTypeOf<DataBindModeType>;\n    };\n}\n\n// =============================================================================\n// BindRuntime\n// =============================================================================\n\n/**\n * A `BindRuntime` owns one set of bind-runtime state: pending writes\n * queue, error listeners, cache singleton, tracking context, and\n * binding-types registry. Exists as an instantiable class so tests can\n * construct an isolated runtime per `describe` rather than wrestling\n * with shared module state. The default process-global runtime is\n * {@link defaultBindRuntime}; production callers continue to use the\n * free-function exports.\n */\nexport class BindRuntime {\n    private cache: ReactiveDatasetCacheInterface | null = null;\n    private readonly staged: StagedStoreInterface;\n\n    // Pending-writes queue.\n    private readonly pendingWrites: Array<() => Promise<void>> = [];\n    private isProcessingWrites = false;\n    private drainPromise: Promise<void> | null = null;\n    private resolveDrain: (() => void) | null = null;\n    private readonly writeErrorListeners = new Set<(error: unknown) => void>();\n\n    // Reactive tracking — single combined tracker for both dataset\n    // reads and staged-buffer reads. The renderer's reactive context\n    // picks up keys from either source uniformly.\n    private trackingContext: Set<string> | null = null;\n\n    // Binding types registry — populated on every `Data.bind` call so\n    // the Diff renderer can decode source/patch bytes and pick the\n    // right commit code path for each binding.\n    private readonly bindingRegistry = new Map<string, BindingTypes>();\n\n    // Suppress-set for the stale-patch fallback warning. Module\n    // closures rebuild on every East-side `Data.bind` evaluation\n    // (i.e., every `Reactive.Root` re-render), so a closure-local\n    // \"logged once\" flag would reset every render and the warning\n    // would spam the console.\n    private readonly fallbackWarningEmitted = new Set<string>();\n\n    // List cache helpers.\n    private readonly listCache = new Map<string, string[]>();\n\n    /**\n     * @param staged - The staged store this runtime uses for\n     *  staged-mode buffers. Defaults to the package singleton.\n     */\n    constructor(staged: StagedStoreInterface = getStagedStore()) {\n        this.staged = staged;\n        // Surface staged-buffer persistence failures (IndexedDB save/remove)\n        // through the same channel as dataset write failures, so a host that\n        // registers onWriteError sees 'edit not durably saved' too. Runtime\n        // and staged store share a lifetime, so the subscription is never torn\n        // down.\n        this.staged.onPersistError((_key, err) => this.emitWriteError(err));\n    }\n\n    // ----- cache singleton ------------------------------------------------\n\n    /** Read the active cache. Throws if none has been initialized. */\n    requireCache(): ReactiveDatasetCacheInterface {\n        if (!this.cache) {\n            throw new Error(\n                \"ReactiveDatasetCache not initialized. \" +\n                \"Use ReactiveDatasetProvider in React or call initializeCache() directly.\",\n            );\n        }\n        return this.cache;\n    }\n\n    /** Read the active cache, returning null if not yet initialized. */\n    getCache(): ReactiveDatasetCacheInterface | null {\n        return this.cache;\n    }\n\n    /** Set the active cache. When the reference changes, drops any\n     *  leftover queued writes that captured the old cache. Same-cache\n     *  re-init (Strict Mode double-invoke; HMR) preserves the queue. */\n    initializeCache(cache: ReactiveDatasetCacheInterface): void {\n        if (this.cache !== cache) {\n            this.clearPendingWrites();\n        }\n        this.cache = cache;\n    }\n\n    /** Clear the active cache and drop any queued writes. */\n    clearCache(): void {\n        this.cache = null;\n        this.clearPendingWrites();\n    }\n\n    // ----- pending writes queue -------------------------------------------\n\n    /** Subscribe to write-queue errors. Returns an unsubscribe fn. */\n    onWriteError(cb: (error: unknown) => void): () => void {\n        this.writeErrorListeners.add(cb);\n        return () => { this.writeErrorListeners.delete(cb); };\n    }\n\n    /** Fan a write/persistence error out to every registered listener. */\n    private emitWriteError(error: unknown): void {\n        for (const cb of this.writeErrorListeners) {\n            try { cb(error); } catch (cbErr) {\n                console.error(\"Data.bind write-error listener threw:\", cbErr);\n            }\n        }\n    }\n\n    /** Resolve once every currently-queued write has finished\n     *  (success or failure). Errors are NOT thrown — subscribe via\n     *  {@link onWriteError} for those. */\n    awaitPendingWrites(): Promise<void> {\n        if (!this.isProcessingWrites && this.pendingWrites.length === 0) {\n            return Promise.resolve();\n        }\n        if (!this.drainPromise) {\n            this.drainPromise = new Promise(res => { this.resolveDrain = res; });\n        }\n        return this.drainPromise;\n    }\n\n    /** Drop every queued write without running it. */\n    clearPendingWrites(): void {\n        this.pendingWrites.length = 0;\n        if (this.resolveDrain) {\n            this.resolveDrain();\n            this.drainPromise = null;\n            this.resolveDrain = null;\n        }\n    }\n\n    /** Queue a write — internal API used by the bind-handle closures. */\n    private queueWrite(writeFn: () => Promise<void>): void {\n        this.pendingWrites.push(writeFn);\n        void this.processWriteQueue();\n    }\n\n    private async processWriteQueue(): Promise<void> {\n        if (this.isProcessingWrites) return;\n        this.isProcessingWrites = true;\n        while (this.pendingWrites.length > 0) {\n            const writeFn = this.pendingWrites.shift()!;\n            try {\n                await writeFn();\n            } catch (error) {\n                console.error(\"Data.bind write failed:\", error);\n                this.emitWriteError(error);\n            }\n        }\n        this.isProcessingWrites = false;\n        if (this.resolveDrain) {\n            this.resolveDrain();\n            this.drainPromise = null;\n            this.resolveDrain = null;\n        }\n    }\n\n    // ----- reactive tracking ---------------------------------------------\n\n    enableTracking(): Set<string> {\n        this.trackingContext = new Set();\n        return this.trackingContext;\n    }\n\n    disableTracking(): string[] {\n        const keys = this.trackingContext ? [...this.trackingContext] : [];\n        this.trackingContext = null;\n        return keys;\n    }\n\n    isTracking(): boolean {\n        return this.trackingContext !== null;\n    }\n\n    trackPath(workspace: string, path: TreePath): void {\n        if (this.trackingContext) {\n            this.trackingContext.add(datasetCacheKey(workspace, path));\n        }\n    }\n\n    // ----- binding registry ----------------------------------------------\n\n    getBindingTypes(workspace: string, sourcePath: TreePath): BindingTypes | undefined {\n        return this.bindingRegistry.get(datasetCacheKey(workspace, sourcePath));\n    }\n\n    /** Clear binding-registry entries. Pass a workspace to clear only\n     *  that workspace's entries. Match is by stored field, not key\n     *  prefix — workspace names that share a textual prefix never\n     *  collide. */\n    clearBindingRegistry(workspace?: string): void {\n        if (workspace === undefined) {\n            this.bindingRegistry.clear();\n            this.fallbackWarningEmitted.clear();\n            return;\n        }\n        for (const [key, info] of [...this.bindingRegistry.entries()]) {\n            if (info.workspace === workspace) {\n                this.bindingRegistry.delete(key);\n                this.fallbackWarningEmitted.delete(key);\n            }\n        }\n    }\n\n    private registerBindingTypes(workspace: string, sourcePath: TreePath, info: BindingTypes): void {\n        const key = datasetCacheKey(workspace, sourcePath);\n        const existing = this.bindingRegistry.get(key);\n        if (existing) {\n            // Hot path — runs once per binding per `Reactive.Root`\n            // re-render. Identity-equal mode/patch/sourceType means\n            // there's nothing to update OR warn about, so bail before\n            // the structural type-equality check, which can be O(type\n            // tree size) for nested struct/variant trees.\n            if (existing.mode === info.mode\n                && existing.hasPatchDataset === info.hasPatchDataset\n                && existing.sourceType === info.sourceType) {\n                return;\n            }\n            const shapeChanged = existing.mode !== info.mode\n                || existing.hasPatchDataset !== info.hasPatchDataset;\n            const typeChanged = !eastTypeEqual(existing.sourceType, info.sourceType);\n            if (!shapeChanged && !typeChanged) {\n                this.bindingRegistry.set(key, info);\n                return;\n            }\n            console.warn(\n                `[Data.bind] source path \"${key}\" bound twice with different `\n                + `${typeChanged ? \"value types\" : \"(mode, patch) shapes\"}: `\n                + `existing { mode: \"${existing.mode}\", hasPatch: ${existing.hasPatchDataset} } vs `\n                + `new { mode: \"${info.mode}\", hasPatch: ${info.hasPatchDataset} }. `\n                + `Diff renderer uses the most-recent metadata; one of the two bindings may render incorrectly.`,\n            );\n        }\n        this.bindingRegistry.set(key, info);\n    }\n\n    // ----- bind-handle construction --------------------------------------\n\n    /**\n     * Build a bind handle for a single `(sourcePath, mode, patch?)`\n     * triple. Public so tests can call this directly without going\n     * through East's compile/dispatch pipeline.\n     *\n     * @throws `EastError` if the cache is uninitialized, the\n     *  workspace is not configured, or `allowed` is non-null and any\n     *  referenced path is not in it.\n     */\n    buildBindHandle(\n        sourceType: EastTypeValue,\n        sourcePath: TreePath,\n        patchPath: TreePath | undefined,\n        mode: DataBindModeLiteral,\n        allowed?: ReadonlySet<string>,\n    ): BindHandle {\n        const cache = this.requireCache();\n        const ws = cache.getConfig().workspace;\n        if (!ws) throw new Error(\"ReactiveDatasetCache workspace not configured\");\n\n        if (allowed) {\n            const sStr = datasetPathToString(sourcePath);\n            if (!allowed.has(sStr)) {\n                throw new EastError(\n                    `Data.bind: source path \"${sStr}\" not declared in manifest`,\n                    { location: [{ filename: \"Data.bind\", line: 0n, column: 0n }] },\n                );\n            }\n            if (patchPath) {\n                const pStr = datasetPathToString(patchPath);\n                if (!allowed.has(pStr)) {\n                    throw new EastError(\n                        `Data.bind: patch path \"${pStr}\" not declared in manifest`,\n                        { location: [{ filename: \"Data.bind\", line: 0n, column: 0n }] },\n                    );\n                }\n            }\n        }\n\n        const { patchType, decodeT, encodeT, decodePatch, encodePatch, apply, diff }\n            = getBindingHelpers(sourceType);\n\n        this.registerBindingTypes(ws, sourcePath, {\n            workspace: ws,\n            sourceType,\n            patchType,\n            mode,\n            hasPatchDataset: patchPath !== undefined,\n        });\n\n        const staged = this.staged;\n        const fallbackKey = datasetCacheKey(ws, sourcePath);\n        const fallbackWarningEmitted = this.fallbackWarningEmitted;\n\n        const readSourceBytes = (): Uint8Array => {\n            const bytes = cache.read(ws, sourcePath);\n            if (!bytes) {\n                throw new EastError(\n                    `Source dataset not loaded: ${datasetCacheKey(ws, sourcePath)}`,\n                    { location: [{ filename: \"Data.bind\", line: 0n, column: 0n }] },\n                );\n            }\n            return bytes;\n        };\n        const readSourceValue = (): unknown => decodeT(readSourceBytes());\n        const readPatchValue = (): unknown => {\n            if (!patchPath) return UNCHANGED_VARIANT;\n            const bytes = cache.read(ws, patchPath);\n            if (!bytes) return UNCHANGED_VARIANT;\n            return decodePatch(bytes);\n        };\n        const overlaidSource = (): unknown => {\n            // `apply` throws ConflictError on stale ops — fall back to\n            // source so transient drift never crashes form components.\n            // Any non-ConflictError is re-thrown: those would indicate\n            // a bug in `applyFor` itself, not user-visible drift.\n            const sourceVal = readSourceValue();\n            try {\n                return apply(sourceVal, readPatchValue());\n            } catch (err) {\n                if (!(err instanceof ConflictError)) throw err;\n                if (!fallbackWarningEmitted.has(fallbackKey)) {\n                    fallbackWarningEmitted.add(fallbackKey);\n                    console.warn(\n                        `[Data.bind] read fell back to source for \"${fallbackKey}\" — `\n                        + `patch is stale relative to source. Diff card will surface drift as orange badges.`,\n                        err,\n                    );\n                }\n                return sourceVal;\n            }\n        };\n\n        const bindingDescriptor = {\n            source: sourcePath,\n            patch:  patchPath ? variant(\"some\", patchPath) : variant(\"none\", null),\n            mode:   variant(mode, null),\n        };\n\n        const writeStaged = (value: unknown): null => {\n            this.trackPath(ws, sourcePath);\n            const buffered = encodeT(value);\n            if (staged.hasPending(ws, sourcePath)) {\n                // `snapshotIfNew` is ignored when an entry exists; pass\n                // the buffered bytes to avoid a redundant cache read.\n                staged.write(ws, sourcePath, buffered, buffered);\n            } else {\n                const snapshot = readSourceBytes();\n                staged.write(ws, sourcePath, snapshot, buffered);\n            }\n            return null;\n        };\n\n        // Standalone dataflow launch, queued behind any pending writes. In\n        // direct mode `write(v)` then `start()` propagates the just-written\n        // value rather than racing it. In STAGED mode `write(v)` only buffers\n        // locally (it never reaches the dataset), so `start()` launches the\n        // dataflow against the last *committed* server value — call `commit()`\n        // first to push staged edits before starting.\n        const startLaunch = (): null => {\n            this.queueWrite(() => cache.launchDataflow(ws));\n            return null;\n        };\n\n        // ----- direct, no patch — writes go to source ------------------\n        if (mode === \"direct\" && !patchPath) {\n            return {\n                read: () => {\n                    this.trackPath(ws, sourcePath);\n                    return readSourceValue();\n                },\n                write: (value: unknown) => {\n                    this.queueWrite(() => cache.write(ws, sourcePath, encodeT(value)));\n                    return null;\n                },\n                writeAndStart: (value: unknown) => {\n                    this.queueWrite(() => cache.writeAndStart(ws, sourcePath, encodeT(value)));\n                    return null;\n                },\n                start: startLaunch,\n                source: () => {\n                    this.trackPath(ws, sourcePath);\n                    return readSourceValue();\n                },\n                pending: () => false,\n                commit: () => null,\n                discard: () => null,\n                has: () => cache.has(ws, sourcePath),\n                status: () => {\n                    this.trackPath(ws, sourcePath);\n                    return cache.getStatus(ws, sourcePath);\n                },\n                binding: bindingDescriptor,\n            };\n        }\n\n        // ----- direct, with patch — writes go to the patch dataset -----\n        if (mode === \"direct\" && patchPath) {\n            const pPath = patchPath;\n            return {\n                read: () => {\n                    this.trackPath(ws, sourcePath);\n                    this.trackPath(ws, pPath);\n                    return overlaidSource();\n                },\n                write: (value: unknown) => {\n                    const next = diff(readSourceValue(), value);\n                    this.queueWrite(() => cache.write(ws, pPath, encodePatch(next)));\n                    return null;\n                },\n                writeAndStart: (value: unknown) => {\n                    const next = diff(readSourceValue(), value);\n                    this.queueWrite(() => cache.writeAndStart(ws, pPath, encodePatch(next)));\n                    return null;\n                },\n                start: startLaunch,\n                source: () => {\n                    this.trackPath(ws, sourcePath);\n                    return readSourceValue();\n                },\n                pending: () => {\n                    this.trackPath(ws, pPath);\n                    return (readPatchValue() as { type: string }).type !== \"unchanged\";\n                },\n                commit: () => {\n                    // Snapshot inputs synchronously so re-renders during\n                    // the await don't change what we apply. Run the\n                    // apply inside `queueWrite` so a stale-patch\n                    // ConflictError is routed through the same error\n                    // pipeline as network failures.\n                    const sourceVal = readSourceValue();\n                    const patchVal  = readPatchValue();\n                    this.queueWrite(async () => {\n                        const next = apply(sourceVal, patchVal);\n                        // Sequence the two cross-key writes: commit the source\n                        // FIRST, then clear the patch only once that lands. A\n                        // partial failure is then self-healing — a failed source\n                        // write leaves the patch intact (still pending), and a\n                        // failed patch-clear leaves the source committed (an\n                        // idempotent retry re-clears). Doing both in one batch\n                        // (which only batches notifications, not the network\n                        // writes) could orphan a populated patch over a\n                        // committed source.\n                        await cache.write(ws, sourcePath, encodeT(next));\n                        await cache.write(ws, pPath, encodePatch(UNCHANGED_VARIANT));\n                    });\n                    return null;\n                },\n                discard: () => {\n                    this.queueWrite(() => cache.write(ws, pPath, encodePatch(UNCHANGED_VARIANT)));\n                    return null;\n                },\n                has: () => cache.has(ws, sourcePath),\n                status: () => {\n                    this.trackPath(ws, sourcePath);\n                    return cache.getStatus(ws, sourcePath);\n                },\n                binding: bindingDescriptor,\n            };\n        }\n\n        // ----- staged, no patch — IDB buffer + commit-to-source --------\n        if (mode === \"staged\" && !patchPath) {\n            return {\n                read: () => {\n                    this.trackPath(ws, sourcePath);\n                    const buffered = staged.getBuffered(ws, sourcePath);\n                    if (buffered !== undefined) return decodeT(buffered);\n                    return readSourceValue();\n                },\n                write: writeStaged,\n                writeAndStart: writeStaged,\n                start: startLaunch,\n                source: () => {\n                    this.trackPath(ws, sourcePath);\n                    return readSourceValue();\n                },\n                pending: () => {\n                    this.trackPath(ws, sourcePath);\n                    return staged.hasPending(ws, sourcePath);\n                },\n                commit: () => {\n                    const entry = staged.getEntry(ws, sourcePath);\n                    if (!entry) return null;\n                    const buffered = entry.buffered;\n                    // Drop the buffer ONLY after the server write\n                    // succeeds — and only if the user hasn't edited\n                    // during the round-trip.\n                    this.queueWrite(async () => {\n                        await cache.writeAndStart(ws, sourcePath, buffered);\n                        const current = staged.getBuffered(ws, sourcePath);\n                        if (current !== undefined && blobEqual(current, buffered)) {\n                            staged.discard(ws, sourcePath);\n                        }\n                    });\n                    return null;\n                },\n                discard: () => {\n                    staged.discard(ws, sourcePath);\n                    return null;\n                },\n                has: () => cache.has(ws, sourcePath),\n                status: () => {\n                    this.trackPath(ws, sourcePath);\n                    return cache.getStatus(ws, sourcePath);\n                },\n                binding: bindingDescriptor,\n            };\n        }\n\n        // ----- staged, with patch — IDB buffer + publish-to-patch ------\n        const pPath = patchPath!;\n        return {\n            read: () => {\n                this.trackPath(ws, sourcePath);\n                this.trackPath(ws, pPath);\n                const buffered = staged.getBuffered(ws, sourcePath);\n                if (buffered !== undefined) return decodeT(buffered);\n                return overlaidSource();\n            },\n            write: writeStaged,\n            writeAndStart: writeStaged,\n            start: startLaunch,\n            source: () => {\n                this.trackPath(ws, sourcePath);\n                return readSourceValue();\n            },\n            pending: () => {\n                this.trackPath(ws, sourcePath);\n                return staged.hasPending(ws, sourcePath);\n            },\n            commit: () => {\n                const entry = staged.getEntry(ws, sourcePath);\n                if (!entry) return null;\n                const bufferedSnapshot = entry.buffered;\n                const bufferedValue = decodeT(bufferedSnapshot);\n                const newPatch = diff(readSourceValue(), bufferedValue);\n                this.queueWrite(async () => {\n                    await cache.writeAndStart(ws, pPath, encodePatch(newPatch));\n                    const current = staged.getBuffered(ws, sourcePath);\n                    if (current !== undefined && blobEqual(current, bufferedSnapshot)) {\n                        staged.discard(ws, sourcePath);\n                    }\n                });\n                return null;\n            },\n            discard: () => {\n                staged.discard(ws, sourcePath);\n                return null;\n            },\n            has: () => cache.has(ws, sourcePath),\n            status: () => {\n                this.trackPath(ws, sourcePath);\n                return cache.getStatus(ws, sourcePath);\n            },\n            binding: bindingDescriptor,\n        };\n    }\n\n    // ----- platform building ---------------------------------------------\n\n    /** Build a `Data.bind` PlatformFunction bound to this runtime.\n     *  Pass `allowed=null` for an unscoped impl (the global\n     *  `BindPlatform`); pass a Set for manifest scoping. */\n    buildPlatform(allowed: ReadonlySet<string> | null): PlatformFunction {\n        return bindPlatformFn.implement((sourceType: EastTypeValue) =>\n            (sourcePathArg: unknown, patchOpt: unknown, modeVariant: unknown) => {\n                const sourcePath = sourcePathArg as TreePath;\n                const { patchPath, mode } = resolveOptions(patchOpt, modeVariant);\n                return this.buildBindHandle(\n                    sourceType,\n                    sourcePath,\n                    patchPath,\n                    mode,\n                    allowed ?? undefined,\n                );\n            },\n        );\n    }\n\n    // ----- list cache helpers --------------------------------------------\n\n    async preloadList(workspace: string, path: TreePath): Promise<string[]> {\n        const cache = this.requireCache();\n        const key = datasetCacheKey(workspace, path);\n        const cached = this.listCache.get(key);\n        if (cached) return cached;\n        const result = await cache.list(workspace, path);\n        this.listCache.set(key, result);\n        return result;\n    }\n\n    clearListCache(): void {\n        this.listCache.clear();\n    }\n}\n\n// =============================================================================\n// Argument resolution — pure, used by both buildPlatform and tests.\n// =============================================================================\n\ninterface ResolvedOptions {\n    readonly patchPath?: TreePath;\n    readonly mode:       DataBindModeLiteral;\n}\n\nfunction resolveOptions(patchOpt: unknown, modeVariant: unknown): ResolvedOptions {\n    const opt = patchOpt as ValueTypeOf<OptionType<TreePath>>;\n    const patchPath = opt.type === \"some\" ? (opt.value as TreePath) : undefined;\n    const m = modeVariant as ValueTypeOf<DataBindModeType>;\n    if (m.type !== \"staged\" && m.type !== \"direct\") {\n        throw new Error(`Data.bind: unknown mode variant \"${(m as any).type}\" — expected \"staged\" or \"direct\"`);\n    }\n    const mode = m.type as DataBindModeLiteral;\n    return patchPath ? { patchPath, mode } : { mode };\n}\n\n// =============================================================================\n// Default process-global runtime + free-function exports for backwards\n// compatibility. Tests construct their own `new BindRuntime()` instead.\n// =============================================================================\n\n/** Process-global runtime backing the `BindPlatform` export and the\n *  free-function helpers. */\nexport const defaultBindRuntime = new BindRuntime();\n\n/** Read the active cache singleton. Throws if no provider has been mounted. */\nexport function getReactiveDatasetCache(): ReactiveDatasetCacheInterface {\n    return defaultBindRuntime.requireCache();\n}\n\n/** Set the active cache singleton — called by the React provider on mount. */\nexport function initializeReactiveDatasetCache(cache: ReactiveDatasetCacheInterface): void {\n    defaultBindRuntime.initializeCache(cache);\n}\n\n/** Clear the active cache singleton — called on unmount or test teardown.\n *  Also drops any queued writes that captured the old cache. */\nexport function clearReactiveDatasetCache(): void {\n    defaultBindRuntime.clearCache();\n}\n\nexport function enableBindingTracking(): Set<string> {\n    return defaultBindRuntime.enableTracking();\n}\nexport function disableBindingTracking(): string[] {\n    return defaultBindRuntime.disableTracking();\n}\nexport function isBindingTracking(): boolean {\n    return defaultBindRuntime.isTracking();\n}\nexport function trackDatasetPath(workspace: string, path: TreePath): void {\n    defaultBindRuntime.trackPath(workspace, path);\n}\n\nexport function getBindingTypes(workspace: string, sourcePath: TreePath): BindingTypes | undefined {\n    return defaultBindRuntime.getBindingTypes(workspace, sourcePath);\n}\nexport function clearBindingRegistry(workspace?: string): void {\n    defaultBindRuntime.clearBindingRegistry(workspace);\n}\n\n/** Subscribe to write-queue errors. Called once for every failed write. */\nexport function onWriteError(cb: (error: unknown) => void): () => void {\n    return defaultBindRuntime.onWriteError(cb);\n}\n/** Resolve once every currently-queued write has finished. */\nexport function awaitPendingWrites(): Promise<void> {\n    return defaultBindRuntime.awaitPendingWrites();\n}\n/** Drop every queued write without running it. */\nexport function clearPendingWrites(): void {\n    defaultBindRuntime.clearPendingWrites();\n}\n\n/** Global, manifest-unscoped `Data.bind` impl. Registered on module load. */\nexport const BindPlatform: PlatformFunction[] = [defaultBindRuntime.buildPlatform(null)];\n\n/** Build a manifest-scoped `Data.bind` implementation. */\nexport function createScopedBindPlatform(manifest: DataManifest): PlatformFunction[] {\n    const allowed = new Set(manifest.paths.map(p => datasetPathToString(p)));\n    return [defaultBindRuntime.buildPlatform(allowed)];\n}\n\nexport async function preloadReactiveDatasetList(workspace: string, path: TreePath): Promise<string[]> {\n    return defaultBindRuntime.preloadList(workspace, path);\n}\nexport function clearReactiveDatasetListCache(): void {\n    defaultBindRuntime.clearListCache();\n}\n\n// =============================================================================\n// Module-load registrations — wire the default runtime into east-ui\n// hooks. Tests with their own `BindRuntime` don't use these.\n// =============================================================================\n\nregisterReactiveTracker({\n    id: \"data-bind\",\n    enableTracking: () => defaultBindRuntime.enableTracking(),\n    disableTracking: () => defaultBindRuntime.disableTracking(),\n    getStore: () => {\n        const cache = defaultBindRuntime.getCache();\n        if (!cache) return null;\n        const staged = getStagedStore();\n        return {\n            subscribe: (key, cb) => {\n                const offCache  = cache.subscribe(key, cb);\n                const offStaged = staged.subscribe(key, cb);\n                return () => { offCache(); offStaged(); };\n            },\n            getKeyVersion: (key) => cache.getKeyVersion(key) + staged.getKeyVersion(key),\n        };\n    },\n});\n\nregisterPlatformImplementation(BindPlatform);\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * TrackedChannelStore — shared base for the `Func.bind` / `Record.bind`\n * runtimes. Both expose one tracked channel per `(workspace, name)`: a\n * latest-wins async operation whose settling state is gated by a monotonic\n * `launchSeq`, plus a per-key reactive subscription shim that the renderer's\n * `Reactive.Root` machinery reads through (the same contract the dataset\n * cache uses).\n *\n * Subclasses supply their own API seam, per-channel entry shape, and the\n * operation body; the base owns the entries map, the tracking context, the\n * subscription shim, and the launch / settle / cancel latch.\n *\n * @packageDocumentation\n */\n\n/** The minimal per-channel state the base manages. */\nexport interface ChannelEntry {\n    /** Lifecycle tag — at least `\"idle\"` | `\"running\"` | `\"cancelled\"`, plus\n     *  whatever terminal states the subclass adds. */\n    status: string;\n    /** Monotonic launch counter; a settling op whose seq is no longer current\n     *  is discarded (latest-wins, and `cancel` orphans by bumping it). */\n    launchSeq: number;\n}\n\n/**\n * Base for a runtime that manages latest-wins channels keyed by string, with\n * per-key reactive subscriptions.\n *\n * @typeParam E - The per-channel entry type (extends {@link ChannelEntry}).\n */\nexport abstract class TrackedChannelStore<E extends ChannelEntry> {\n    protected readonly entries = new Map<string, E>();\n\n    // Per-key reactive subscription shim.\n    private readonly keySubscribers = new Map<string, Set<() => void>>();\n    private readonly keyVersions = new Map<string, number>();\n\n    // Reactive tracking — read closures push their channel keys here while a\n    // Reactive.Root render is being tracked.\n    private trackingContext: Set<string> | null = null;\n\n    /** Build a fresh channel entry in its initial (idle) state. */\n    protected abstract createEntry(): E;\n\n    // ----- reactive tracking ----------------------------------------------\n\n    enableTracking(): Set<string> {\n        this.trackingContext = new Set();\n        return this.trackingContext;\n    }\n\n    disableTracking(): string[] {\n        const keys = this.trackingContext ? [...this.trackingContext] : [];\n        this.trackingContext = null;\n        return keys;\n    }\n\n    isTracking(): boolean {\n        return this.trackingContext !== null;\n    }\n\n    /** Record a channel-key dependency for the current render (no-op when not\n     *  tracking). */\n    protected track(key: string): void {\n        this.trackingContext?.add(key);\n    }\n\n    // ----- subscription shim ------------------------------------------------\n\n    subscribe(key: string, callback: () => void): () => void {\n        let subs = this.keySubscribers.get(key);\n        if (!subs) {\n            subs = new Set();\n            this.keySubscribers.set(key, subs);\n        }\n        subs.add(callback);\n        return () => {\n            subs.delete(callback);\n            if (subs.size === 0 && this.keySubscribers.get(key) === subs) {\n                this.keySubscribers.delete(key);\n            }\n        };\n    }\n\n    getKeyVersion(key: string): number {\n        return this.keyVersions.get(key) ?? 0;\n    }\n\n    protected notify(key: string): void {\n        this.keyVersions.set(key, (this.keyVersions.get(key) ?? 0) + 1);\n        const subs = this.keySubscribers.get(key);\n        if (subs) for (const cb of [...subs]) cb();\n    }\n\n    // ----- channel registry + latest-wins latch ----------------------------\n\n    protected entry(key: string): E {\n        let entry = this.entries.get(key);\n        if (!entry) {\n            entry = this.createEntry();\n            this.entries.set(key, entry);\n        }\n        return entry;\n    }\n\n    /**\n     * Open a latest-wins launch on a channel: bump the seq, mark the entry\n     * `running`, optionally `reset` it (e.g. clear a prior error), notify, and\n     * return a `settle` that applies a terminal mutation only if this launch is\n     * still the current one (a superseded / cancelled launch settles to a\n     * no-op).\n     */\n    protected beginLaunch(\n        key: string,\n        reset?: (entry: E) => void,\n    ): { entry: E; settle: (mutate: (entry: E) => void) => void } {\n        const entry = this.entry(key);\n        entry.launchSeq += 1;\n        const mySeq = entry.launchSeq;\n        entry.status = \"running\";\n        reset?.(entry);\n        this.notify(key);\n\n        const settle = (mutate: (entry: E) => void): void => {\n            const current = this.entries.get(key);\n            if (!current || current.launchSeq !== mySeq) return; // superseded\n            mutate(current);\n            this.notify(key);\n        };\n        return { entry, settle };\n    }\n\n    /**\n     * Client-side cancel: if the channel is running, orphan the in-flight wait\n     * (bump the seq) and mark it `cancelled`. `after` runs before the notify,\n     * for subclass-specific cleanup (e.g. dropping an in-flight handle).\n     */\n    protected cancelChannel(key: string, after?: (entry: E) => void): void {\n        const entry = this.entries.get(key);\n        if (entry && entry.status === \"running\") {\n            entry.launchSeq += 1;\n            entry.status = \"cancelled\";\n            after?.(entry);\n            this.notify(key);\n        }\n    }\n\n    /** Drop all channel state (entries + subscriptions + versions). */\n    protected clearChannels(): void {\n        this.entries.clear();\n        this.keySubscribers.clear();\n        this.keyVersions.clear();\n    }\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Runtime implementation for the `Func.bind` platform function — calling\n * named package functions (`e3.function`) from East UI code, RPC-style.\n *\n * A tracked call is an un-awaited `FunctionApi.call` promise tagged with\n * the monotonic `launchSeq` it was issued under; whichever response still\n * holds the current seq writes the terminal state (latest-wins). There is\n * no server-side call state on the sync-only function surface — `cancel`\n * is client-side only (it bumps the seq, orphaning the in-flight wait).\n *\n * All handles bound to the same function name in the same workspace share\n * one registry entry, mirroring how `Data.bind` handles share the dataset\n * cache by path. Declared signatures are validated against the deployed\n * package's function list before any call is sent.\n *\n * State (registry, signature cache, tracking context) is encapsulated in\n * the {@link FuncRuntime} class. A process-global {@link defaultFuncRuntime}\n * powers the `FuncPlatform` export; tests construct their own runtime for\n * isolation.\n *\n * @packageDocumentation\n */\n\nimport {\n    type EastType,\n    type EastTypeValue,\n    type ValueTypeOf,\n    encodeBeast2For,\n    decodeBeast2For,\n    equalFor,\n    toEastTypeValue,\n    variant,\n} from \"@elaraai/east\";\nimport { type PlatformFunction, EastTypeType } from \"@elaraai/east/internal\";\nimport { funcBindPlatformFn, type FuncErrorType } from \"@elaraai/e3-ui/internal\";\nimport {\n    workspaceFunctionList,\n    workspaceFunctionCall,\n    type ExecuteResult,\n    type FunctionSignature,\n} from \"@elaraai/e3-api-client\";\nimport {\n    registerReactiveTracker,\n    registerPlatformImplementation,\n} from \"@elaraai/east-ui-components/platform\";\nimport { TrackedChannelStore } from \"./tracked-channel.js\";\n\n// =============================================================================\n// API seam — the narrow surface the runtime talks through. Tests stub it;\n// the showcase harness swaps in an in-memory implementation.\n// =============================================================================\n\n/** Request shape for {@link FunctionApi.call} — beast2-encoded positional\n *  args. Runner/limit overrides are deliberately not exposed (the deployed\n *  function's runner is authoritative). */\nexport interface FunctionCallArgs {\n    args: Uint8Array[];\n}\n\n/**\n * Adapter for the workspace function endpoints. The default wraps\n * `@elaraai/e3-api-client`'s `workspaceFunctionList` /\n * `workspaceFunctionCall`.\n */\nexport interface FunctionApi {\n    /** List the workspace's deployed functions with their signatures. */\n    list(workspace: string): Promise<FunctionSignature[]>;\n    /** Call a function synchronously, returning its terminal ExecuteResult. */\n    call(workspace: string, fn: string, req: FunctionCallArgs): Promise<ExecuteResult>;\n}\n\n/**\n * Build the default {@link FunctionApi} that talks to a real e3 server via\n * `@elaraai/e3-api-client`.\n */\nexport function createDefaultFunctionApi(\n    apiUrl: string,\n    repo: string,\n    getToken: () => string | null,\n): FunctionApi {\n    const opts = (): { token: string | null } => ({ token: getToken() });\n    return {\n        async list(workspace) {\n            return workspaceFunctionList(apiUrl, repo, workspace, opts());\n        },\n        async call(workspace, fn, req) {\n            return workspaceFunctionCall(apiUrl, repo, workspace, fn, {\n                args: req.args,\n                runner: variant(\"none\", null),\n                limits: variant(\"none\", null),\n            }, opts());\n        },\n    };\n}\n\n// =============================================================================\n// Value-level helpers\n// =============================================================================\n\ntype FuncError = ValueTypeOf<FuncErrorType>;\ntype FuncStatusTag = \"idle\" | \"running\" | \"succeeded\" | \"failed\" | \"cancelled\";\n\nconst eastTypeEqual = equalFor(EastTypeType) as (a: EastTypeValue, b: EastTypeValue) => boolean;\n\n/** A handle's signature, recovered from the instantiated handle type. */\ninterface FuncHandleSignature {\n    readonly inputs: EastTypeValue[];\n    readonly output: EastTypeValue;\n}\n\n/**\n * Introspect the instantiated handle struct type `H`: the input types come\n * from the `call` field's FunctionType, the output type from the `read`\n * field's `Option(Output)` return. The handle's shape IS the signature —\n * there are no duplicate signature arguments to drift out of sync.\n */\nexport function signatureOfFuncHandleType(handleType: EastTypeValue): FuncHandleSignature {\n    if (handleType.type !== \"Struct\") {\n        throw new Error(`Func.bind: handle type must be a Struct; got ${handleType.type}`);\n    }\n    const fields = handleType.value as { name: string; type: EastTypeValue }[];\n    const call = fields.find(f => f.name === \"call\")?.type;\n    const read = fields.find(f => f.name === \"read\")?.type;\n    if (call?.type !== \"Function\" || read?.type !== \"Function\") {\n        throw new Error(\"Func.bind: handle type is missing its call/read closures\");\n    }\n    const inputs = (call.value as { inputs: EastTypeValue[] }).inputs;\n    const readOut = (read.value as { output: EastTypeValue }).output;\n    if (readOut.type !== \"Variant\") {\n        throw new Error(\"Func.bind: read() must return Option(Output)\");\n    }\n    const some = (readOut.value as { name: string; type: EastTypeValue }[]).find(a => a.name === \"some\");\n    if (!some) {\n        throw new Error(\"Func.bind: read() must return Option(Output)\");\n    }\n    return { inputs, output: some.type };\n}\n\n/** Build a FuncError value from an ExecuteResult's non-success outcome. */\nfunction errorOfExecuteResult(result: ExecuteResult): FuncError {\n    const outcome = result.outcome;\n    switch (outcome.type) {\n        case \"failed\":\n            return {\n                kind: variant(\"failed\", { exitCode: outcome.value.exitCode }),\n                message: `runner exited with code ${outcome.value.exitCode}`,\n                stdout: result.stdout,\n                stderr: result.stderr,\n            };\n        case \"invalid\": {\n            const diagnostics = outcome.value.diagnostics.map(d => {\n                const at = d.filename.type === \"some\"\n                    ? ` (${d.filename.value}${d.line.type === \"some\" ? `:${d.line.value}` : \"\"})`\n                    : \"\";\n                return `${d.message}${at}`;\n            });\n            return {\n                kind: variant(\"invalid\", { diagnostics }),\n                message: diagnostics[0] ?? \"invalid call\",\n                stdout: result.stdout,\n                stderr: result.stderr,\n            };\n        }\n        case \"too_large\":\n            return {\n                kind: variant(\"too_large\", { bytes: outcome.value.bytes, limit: outcome.value.limit }),\n                message: `result too large (${outcome.value.bytes} bytes, limit ${outcome.value.limit})`,\n                stdout: result.stdout,\n                stderr: result.stderr,\n            };\n        case \"timed_out\":\n            return {\n                kind: variant(\"timed_out\", { ms: outcome.value.ms }),\n                message: `call timed out after ${outcome.value.ms}ms (server deadline)`,\n                stdout: result.stdout,\n                stderr: result.stderr,\n            };\n        default:\n            return transportError(`unexpected outcome \"${outcome.type}\"`);\n    }\n}\n\nfunction transportError(message: string): FuncError {\n    return {\n        kind: variant(\"transport\", { message }),\n        message,\n        stdout: \"\",\n        stderr: \"\",\n    };\n}\n\n// =============================================================================\n// Runtime\n// =============================================================================\n\n/** One tracked channel per `(workspace, name)`. */\ninterface FuncEntry {\n    status: FuncStatusTag;\n    /** Monotonic; a settling call whose seq is no longer current is\n     *  discarded (latest-wins, and `cancel` orphans by bumping it). */\n    launchSeq: number;\n    /** Decoded Output of the last `succeeded` call. */\n    result?: unknown;\n    /** Detail of the last `failed` call. */\n    error?: FuncError;\n}\n\n/** Tracked-channel key. */\nexport function funcChannelKey(workspace: string, name: string): string {\n    return `func:${workspace}:${name}`;\n}\n\n/**\n * Encapsulates all `Func.bind` runtime state. The module-level\n * {@link defaultFuncRuntime} instance backs the registered platform; tests\n * construct their own for isolation.\n */\nexport class FuncRuntime extends TrackedChannelStore<FuncEntry> {\n    private api: FunctionApi | null = null;\n    private workspace: string | null = null;\n\n    // Signature lists are fetched once per workspace and cached.\n    private signatureLists = new Map<string, Promise<FunctionSignature[]>>();\n\n    protected createEntry(): FuncEntry {\n        return { status: \"idle\", launchSeq: 0 };\n    }\n\n    // ----- wiring ----------------------------------------------------------\n\n    /** Install the API adapter + workspace — called by the React provider\n     *  (or a test/showcase harness) before any handle is used. */\n    initialize(api: FunctionApi, workspace: string): void {\n        this.api = api;\n        this.workspace = workspace;\n    }\n\n    /** Tear down the adapter and all call state. */\n    clear(): void {\n        this.api = null;\n        this.workspace = null;\n        this.clearChannels();\n        this.signatureLists.clear();\n    }\n\n    /** The deployed signature list for a workspace (fetched once). */\n    private signatures(workspace: string): Promise<FunctionSignature[]> {\n        let promise = this.signatureLists.get(workspace);\n        if (!promise) {\n            const api = this.api;\n            if (!api) return Promise.reject(new Error(\"Func.bind: no FunctionApi installed\"));\n            promise = api.list(workspace).catch(err => {\n                // Don't cache failures — the next call retries the list.\n                this.signatureLists.delete(workspace);\n                throw err;\n            });\n            this.signatureLists.set(workspace, promise);\n        }\n        return promise;\n    }\n\n    /** Validate a declared signature against the deployed list. Returns a\n     *  FuncError when the name is unknown or the signature disagrees. */\n    private async validate(workspace: string, name: string, sig: FuncHandleSignature): Promise<FuncError | null> {\n        let list: FunctionSignature[];\n        try {\n            list = await this.signatures(workspace);\n        } catch (err) {\n            return transportError(`failed to list workspace functions: ${err instanceof Error ? err.message : String(err)}`);\n        }\n        const deployed = list.find(f => f.name === name);\n        if (!deployed) {\n            return {\n                kind: variant(\"invalid\", { diagnostics: [`no function \"${name}\" in the deployed package`] }),\n                message: `no function \"${name}\" in the deployed package`,\n                stdout: \"\",\n                stderr: \"\",\n            };\n        }\n        const inputsMatch = deployed.inputTypes.length === sig.inputs.length\n            && deployed.inputTypes.every((t, i) => eastTypeEqual(t as EastTypeValue, sig.inputs[i]!));\n        const outputMatches = eastTypeEqual(deployed.outputType as EastTypeValue, sig.output);\n        if (!inputsMatch || !outputMatches) {\n            const message = `signature mismatch for \"${name}\": bound (${sig.inputs.length} inputs) disagrees with the deployed package`;\n            return {\n                kind: variant(\"invalid\", { diagnostics: [message] }),\n                message,\n                stdout: \"\",\n                stderr: \"\",\n            };\n        }\n        return null;\n    }\n\n    // ----- closure semantics -------------------------------------------------\n\n    private launch(workspace: string, name: string, sig: FuncHandleSignature, args: unknown[]): void {\n        const key = funcChannelKey(workspace, name);\n        const { settle } = this.beginLaunch(key);\n\n        void (async () => {\n            const invalid = await this.validate(workspace, name, sig);\n            if (invalid) {\n                settle(e => { e.status = \"failed\"; e.error = invalid; });\n                return;\n            }\n            const api = this.api;\n            if (!api) {\n                settle(e => { e.status = \"failed\"; e.error = transportError(\"no FunctionApi installed\"); });\n                return;\n            }\n            let result: ExecuteResult;\n            try {\n                const encoded = args.map((arg, i) => encodeBeast2For(sig.inputs[i]!)(arg));\n                result = await api.call(workspace, name, { args: encoded });\n            } catch (err) {\n                settle(e => {\n                    e.status = \"failed\";\n                    e.error = transportError(err instanceof Error ? err.message : String(err));\n                });\n                return;\n            }\n            if (result.outcome.type === \"success\") {\n                let decoded: unknown;\n                try {\n                    decoded = decodeBeast2For(sig.output)(result.outcome.value.value);\n                } catch (err) {\n                    settle(e => {\n                        e.status = \"failed\";\n                        e.error = transportError(`failed to decode result: ${err instanceof Error ? err.message : String(err)}`);\n                    });\n                    return;\n                }\n                settle(e => { e.status = \"succeeded\"; e.result = decoded; delete e.error; });\n            } else {\n                const error = errorOfExecuteResult(result);\n                settle(e => { e.status = \"failed\"; e.error = error; });\n            }\n        })();\n    }\n\n    /** Build the handle value for one `Func.bind` platform evaluation. */\n    buildHandle(handleType: EastTypeValue, name: string): Record<string, unknown> {\n        const sig = signatureOfFuncHandleType(handleType);\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        const runtime = this;\n\n        const resolveWorkspace = (): string => {\n            if (!runtime.workspace) {\n                throw new Error(\"Func.bind: no workspace configured — mount a provider (or call initializeFunctionApi) first\");\n            }\n            return runtime.workspace;\n        };\n        const channel = (): { key: string; entry: FuncEntry } => {\n            const key = funcChannelKey(resolveWorkspace(), name);\n            return { key, entry: runtime.entry(key) };\n        };\n\n        return {\n            call: (...args: unknown[]) => {\n                runtime.launch(resolveWorkspace(), name, sig, args);\n                return null;\n            },\n            read: () => {\n                const { key, entry } = channel();\n                runtime.track(key);\n                return entry.result !== undefined\n                    ? variant(\"some\", entry.result)\n                    : variant(\"none\", null);\n            },\n            status: () => {\n                const { key, entry } = channel();\n                runtime.track(key);\n                return variant(entry.status, null);\n            },\n            error: () => {\n                const { key, entry } = channel();\n                runtime.track(key);\n                return entry.status === \"failed\" && entry.error !== undefined\n                    ? variant(\"some\", entry.error)\n                    : variant(\"none\", null);\n            },\n            pending: () => {\n                const { key, entry } = channel();\n                runtime.track(key);\n                return entry.status === \"running\";\n            },\n            cancel: () => {\n                const { key } = channel();\n                runtime.cancelChannel(key);\n                return null;\n            },\n            binding: { name },\n        };\n    }\n\n    // ----- platform building -------------------------------------------------\n\n    /** Build a `Func.bind` PlatformFunction bound to this runtime. Pass\n     *  `allowed=null` for an unscoped impl; pass a Set of function names\n     *  for manifest scoping. */\n    buildPlatform(allowed: ReadonlySet<string> | null): PlatformFunction {\n        return funcBindPlatformFn.implement((handleType: EastTypeValue) =>\n            (nameArg: unknown) => {\n                const name = nameArg as string;\n                if (allowed && !allowed.has(name)) {\n                    throw new Error(\n                        `Func.bind: function \"${name}\" is not in this UI task's manifest — ` +\n                        `bind it in the task body so derivation records it`,\n                    );\n                }\n                return this.buildHandle(handleType, name);\n            },\n        );\n    }\n}\n\n// =============================================================================\n// Default process-global runtime + free-function exports.\n// =============================================================================\n\n/** Process-global runtime backing the `FuncPlatform` export. */\nexport const defaultFuncRuntime = new FuncRuntime();\n\n/** Install the function API adapter + workspace — called by the React\n *  provider on mount (or by a test/showcase harness). */\nexport function initializeFunctionApi(api: FunctionApi, workspace: string): void {\n    defaultFuncRuntime.initialize(api, workspace);\n}\n\n/** Tear down the function API adapter and all call state. */\nexport function clearFunctionApi(): void {\n    defaultFuncRuntime.clear();\n}\n\n/** Global, manifest-unscoped `Func.bind` impl. Registered on module load. */\nexport const FuncPlatform: PlatformFunction[] = [defaultFuncRuntime.buildPlatform(null)];\n\n/** Build a manifest-scoped `Func.bind` implementation. */\nexport function createScopedFuncPlatform(functions: readonly string[]): PlatformFunction[] {\n    return [defaultFuncRuntime.buildPlatform(new Set(functions))];\n}\n\n// =============================================================================\n// In-memory FunctionApi — offline harnesses (showcase, snapshots, tests)\n// register deterministic implementations keyed by name; `call` round-trips\n// arguments and results through the same beast2 codecs a real server uses.\n// =============================================================================\n\n/** One offline function implementation for {@link createInMemoryFunctionApi}. */\nexport interface InMemoryFunctionDef {\n    /** Function name (what `Func.bind` is bound to). */\n    name: string;\n    /** Positional parameter types. */\n    inputTypes: (EastType | EastTypeValue)[];\n    /** Return type. */\n    outputType: EastType | EastTypeValue;\n    /** The implementation — receives decoded args, returns the result\n     *  value (or a promise of it). */\n    fn: (...args: unknown[]) => unknown;\n}\n\n/**\n * Build an offline {@link FunctionApi} from local implementations — the\n * showcase/snapshot harnesses' stand-in for a deployed package.\n */\nexport function createInMemoryFunctionApi(functions: InMemoryFunctionDef[]): FunctionApi {\n    const defs = functions.map(def => ({\n        name: def.name,\n        inputTypes: def.inputTypes.map(t => toEastTypeValue(t as EastType)),\n        outputType: toEastTypeValue(def.outputType as EastType),\n        fn: def.fn,\n    }));\n    return {\n        async list() {\n            return defs.map(def => ({\n                name: def.name,\n                inputTypes: def.inputTypes,\n                outputType: def.outputType,\n                runner: variant(\"east_node\", { platforms: [] }),\n            })) as unknown as FunctionSignature[];\n        },\n        async call(_workspace, fnName, req) {\n            const def = defs.find(d => d.name === fnName);\n            if (!def) throw new Error(`no in-memory function \"${fnName}\"`);\n            const args = req.args.map((bytes, i) => decodeBeast2For(def.inputTypes[i]!)(bytes));\n            const value = await def.fn(...args);\n            return {\n                outcome: variant(\"success\", { value: encodeBeast2For(def.outputType)(value) }),\n                stdout: \"\",\n                stderr: \"\",\n                stdoutTruncated: false,\n                stderrTruncated: false,\n            } as ExecuteResult;\n        },\n    };\n}\n\n// =============================================================================\n// Module-load registrations — wire the default runtime into east-ui hooks.\n// Tests with their own `FuncRuntime` don't use these.\n// =============================================================================\n\nregisterReactiveTracker({\n    id: \"func-bind\",\n    enableTracking: () => defaultFuncRuntime.enableTracking(),\n    disableTracking: () => defaultFuncRuntime.disableTracking(),\n    getStore: () => ({\n        subscribe: (key, cb) => defaultFuncRuntime.subscribe(key, cb),\n        getKeyVersion: (key) => defaultFuncRuntime.getKeyVersion(key),\n    }),\n});\n\nregisterPlatformImplementation(FuncPlatform);\n","/*!\n * Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2026 Fonticons, Inc.\n */\nfunction _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nfunction _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nfunction _createForOfIteratorHelper(r, e) {\n  var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (!t) {\n    if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n      t && (r = t);\n      var n = 0,\n        F = function () {};\n      return {\n        s: F,\n        n: function () {\n          return n >= r.length ? {\n            done: !0\n          } : {\n            done: !1,\n            value: r[n++]\n          };\n        },\n        e: function (r) {\n          throw r;\n        },\n        f: F\n      };\n    }\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  var o,\n    a = !0,\n    u = !1;\n  return {\n    s: function () {\n      t = t.call(r);\n    },\n    n: function () {\n      var r = t.next();\n      return a = r.done, r;\n    },\n    e: function (r) {\n      u = !0, o = r;\n    },\n    f: function () {\n      try {\n        a || null == t.return || t.return();\n      } finally {\n        if (u) throw o;\n      }\n    }\n  };\n}\nfunction _defineProperty(e, r, t) {\n  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && _setPrototypeOf(t, e);\n}\nfunction _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nfunction _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nfunction _slicedToArray(r, e) {\n  return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toConsumableArray(r) {\n  return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n  if (\"object\" != typeof t || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != typeof i) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n  }\n}\nfunction _wrapRegExp() {\n  _wrapRegExp = function (e, r) {\n    return new BabelRegExp(e, void 0, r);\n  };\n  var e = RegExp.prototype,\n    r = new WeakMap();\n  function BabelRegExp(e, t, p) {\n    var o = RegExp(e, t);\n    return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype);\n  }\n  function buildGroups(e, t) {\n    var p = r.get(t);\n    return Object.keys(p).reduce(function (r, t) {\n      var o = p[t];\n      if (\"number\" == typeof o) r[t] = e[o];else {\n        for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;\n        r[t] = e[o[i]];\n      }\n      return r;\n    }, Object.create(null));\n  }\n  return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {\n    var t = e.exec.call(this, r);\n    if (t) {\n      t.groups = buildGroups(t, this);\n      var p = t.indices;\n      p && (p.groups = buildGroups(p, this));\n    }\n    return t;\n  }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {\n    if (\"string\" == typeof p) {\n      var o = r.get(this);\n      return e[Symbol.replace].call(this, t, p.replace(/\\$<([^>]+)(>|$)/g, function (e, r, t) {\n        if (\"\" === t) return e;\n        var p = o[r];\n        return Array.isArray(p) ? \"$\" + p.join(\"$\") : \"number\" == typeof p ? \"$\" + p : \"\";\n      }));\n    }\n    if (\"function\" == typeof p) {\n      var i = this;\n      return e[Symbol.replace].call(this, t, function () {\n        var e = arguments;\n        return \"object\" != typeof e[e.length - 1] && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);\n      });\n    }\n    return e[Symbol.replace].call(this, t, p);\n  }, _wrapRegExp.apply(this, arguments);\n}\n\nvar noop = function noop() {};\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n  mark: noop,\n  measure: noop\n};\ntry {\n  if (typeof window !== 'undefined') _WINDOW = window;\n  if (typeof document !== 'undefined') _DOCUMENT = document;\n  if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n  if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {} // eslint-disable-line no-empty\n\nvar _ref = _WINDOW.navigator || {},\n  _ref$userAgent = _ref.userAgent,\n  userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _ht;\nvar G = /fa(k|kd|s|r|l|t|d|dr|dl|dt|b|slr|slpr|wsb|tl|ns|nds|es|gt|jr|jfr|jdr|usb|ufsb|udsb|cr|ss|sr|sl|st|sds|sdr|sdl|sdt)?[\\-\\ ]/,\n  M = /Font ?Awesome ?([567 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit|Notdog Duo|Notdog|Chisel|Etch|Graphite|Thumbprint|Jelly Fill|Jelly Duo|Jelly|Utility|Utility Fill|Utility Duo|Slab Press|Slab|Whiteboard)?.*/i;\nvar Q = {\n    classic: {\n      fa: \"solid\",\n      fas: \"solid\",\n      \"fa-solid\": \"solid\",\n      far: \"regular\",\n      \"fa-regular\": \"regular\",\n      fal: \"light\",\n      \"fa-light\": \"light\",\n      fat: \"thin\",\n      \"fa-thin\": \"thin\",\n      fab: \"brands\",\n      \"fa-brands\": \"brands\"\n    },\n    duotone: {\n      fa: \"solid\",\n      fad: \"solid\",\n      \"fa-solid\": \"solid\",\n      \"fa-duotone\": \"solid\",\n      fadr: \"regular\",\n      \"fa-regular\": \"regular\",\n      fadl: \"light\",\n      \"fa-light\": \"light\",\n      fadt: \"thin\",\n      \"fa-thin\": \"thin\"\n    },\n    sharp: {\n      fa: \"solid\",\n      fass: \"solid\",\n      \"fa-solid\": \"solid\",\n      fasr: \"regular\",\n      \"fa-regular\": \"regular\",\n      fasl: \"light\",\n      \"fa-light\": \"light\",\n      fast: \"thin\",\n      \"fa-thin\": \"thin\"\n    },\n    \"sharp-duotone\": {\n      fa: \"solid\",\n      fasds: \"solid\",\n      \"fa-solid\": \"solid\",\n      fasdr: \"regular\",\n      \"fa-regular\": \"regular\",\n      fasdl: \"light\",\n      \"fa-light\": \"light\",\n      fasdt: \"thin\",\n      \"fa-thin\": \"thin\"\n    },\n    slab: {\n      \"fa-regular\": \"regular\",\n      faslr: \"regular\"\n    },\n    \"slab-press\": {\n      \"fa-regular\": \"regular\",\n      faslpr: \"regular\"\n    },\n    thumbprint: {\n      \"fa-light\": \"light\",\n      fatl: \"light\"\n    },\n    whiteboard: {\n      \"fa-semibold\": \"semibold\",\n      fawsb: \"semibold\"\n    },\n    notdog: {\n      \"fa-solid\": \"solid\",\n      fans: \"solid\"\n    },\n    \"notdog-duo\": {\n      \"fa-solid\": \"solid\",\n      fands: \"solid\"\n    },\n    etch: {\n      \"fa-solid\": \"solid\",\n      faes: \"solid\"\n    },\n    graphite: {\n      \"fa-thin\": \"thin\",\n      fagt: \"thin\"\n    },\n    jelly: {\n      \"fa-regular\": \"regular\",\n      fajr: \"regular\"\n    },\n    \"jelly-fill\": {\n      \"fa-regular\": \"regular\",\n      fajfr: \"regular\"\n    },\n    \"jelly-duo\": {\n      \"fa-regular\": \"regular\",\n      fajdr: \"regular\"\n    },\n    chisel: {\n      \"fa-regular\": \"regular\",\n      facr: \"regular\"\n    },\n    utility: {\n      \"fa-semibold\": \"semibold\",\n      fausb: \"semibold\"\n    },\n    \"utility-duo\": {\n      \"fa-semibold\": \"semibold\",\n      faudsb: \"semibold\"\n    },\n    \"utility-fill\": {\n      \"fa-semibold\": \"semibold\",\n      faufsb: \"semibold\"\n    }\n  },\n  X = {\n    GROUP: \"duotone-group\",\n    SWAP_OPACITY: \"swap-opacity\",\n    PRIMARY: \"primary\",\n    SECONDARY: \"secondary\"\n  },\n  Z = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\", \"fa-thumbprint\", \"fa-whiteboard\", \"fa-notdog\", \"fa-notdog-duo\", \"fa-chisel\", \"fa-etch\", \"fa-graphite\", \"fa-jelly\", \"fa-jelly-fill\", \"fa-jelly-duo\", \"fa-slab\", \"fa-slab-press\", \"fa-utility\", \"fa-utility-duo\", \"fa-utility-fill\"];\nvar i = \"classic\",\n  t = \"duotone\",\n  d = \"sharp\",\n  l = \"sharp-duotone\",\n  f = \"chisel\",\n  h = \"etch\",\n  n = \"graphite\",\n  g = \"jelly\",\n  o = \"jelly-duo\",\n  u = \"jelly-fill\",\n  m = \"notdog\",\n  e = \"notdog-duo\",\n  y = \"slab\",\n  p = \"slab-press\",\n  s = \"thumbprint\",\n  w = \"utility\",\n  a = \"utility-duo\",\n  x = \"utility-fill\",\n  b = \"whiteboard\",\n  c = \"Classic\",\n  I = \"Duotone\",\n  F = \"Sharp\",\n  v = \"Sharp Duotone\",\n  S = \"Chisel\",\n  A = \"Etch\",\n  P = \"Graphite\",\n  j = \"Jelly\",\n  B = \"Jelly Duo\",\n  N = \"Jelly Fill\",\n  k = \"Notdog\",\n  D = \"Notdog Duo\",\n  T = \"Slab\",\n  C = \"Slab Press\",\n  W = \"Thumbprint\",\n  K = \"Utility\",\n  R = \"Utility Duo\",\n  L = \"Utility Fill\",\n  U = \"Whiteboard\",\n  dt = [i, t, d, l, f, h, n, g, o, u, m, e, y, p, s, w, a, x, b],\n  ht = (_ht = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ht, i, c), t, I), d, F), l, v), f, S), h, A), n, P), g, j), o, B), u, N), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ht, m, k), e, D), y, T), p, C), s, W), w, K), a, R), x, L), b, U));\nvar yt = {\n    classic: {\n      900: \"fas\",\n      400: \"far\",\n      normal: \"far\",\n      300: \"fal\",\n      100: \"fat\"\n    },\n    duotone: {\n      900: \"fad\",\n      400: \"fadr\",\n      300: \"fadl\",\n      100: \"fadt\"\n    },\n    sharp: {\n      900: \"fass\",\n      400: \"fasr\",\n      300: \"fasl\",\n      100: \"fast\"\n    },\n    \"sharp-duotone\": {\n      900: \"fasds\",\n      400: \"fasdr\",\n      300: \"fasdl\",\n      100: \"fasdt\"\n    },\n    slab: {\n      400: \"faslr\"\n    },\n    \"slab-press\": {\n      400: \"faslpr\"\n    },\n    whiteboard: {\n      600: \"fawsb\"\n    },\n    thumbprint: {\n      300: \"fatl\"\n    },\n    notdog: {\n      900: \"fans\"\n    },\n    \"notdog-duo\": {\n      900: \"fands\"\n    },\n    etch: {\n      900: \"faes\"\n    },\n    graphite: {\n      100: \"fagt\"\n    },\n    chisel: {\n      400: \"facr\"\n    },\n    jelly: {\n      400: \"fajr\"\n    },\n    \"jelly-fill\": {\n      400: \"fajfr\"\n    },\n    \"jelly-duo\": {\n      400: \"fajdr\"\n    },\n    utility: {\n      600: \"fausb\"\n    },\n    \"utility-duo\": {\n      600: \"faudsb\"\n    },\n    \"utility-fill\": {\n      600: \"faufsb\"\n    }\n  };\nvar Kt = {\n    \"Font Awesome 7 Free\": {\n      900: \"fas\",\n      400: \"far\"\n    },\n    \"Font Awesome 7 Pro\": {\n      900: \"fas\",\n      400: \"far\",\n      normal: \"far\",\n      300: \"fal\",\n      100: \"fat\"\n    },\n    \"Font Awesome 7 Brands\": {\n      400: \"fab\",\n      normal: \"fab\"\n    },\n    \"Font Awesome 7 Duotone\": {\n      900: \"fad\",\n      400: \"fadr\",\n      normal: \"fadr\",\n      300: \"fadl\",\n      100: \"fadt\"\n    },\n    \"Font Awesome 7 Sharp\": {\n      900: \"fass\",\n      400: \"fasr\",\n      normal: \"fasr\",\n      300: \"fasl\",\n      100: \"fast\"\n    },\n    \"Font Awesome 7 Sharp Duotone\": {\n      900: \"fasds\",\n      400: \"fasdr\",\n      normal: \"fasdr\",\n      300: \"fasdl\",\n      100: \"fasdt\"\n    },\n    \"Font Awesome 7 Jelly\": {\n      400: \"fajr\",\n      normal: \"fajr\"\n    },\n    \"Font Awesome 7 Jelly Fill\": {\n      400: \"fajfr\",\n      normal: \"fajfr\"\n    },\n    \"Font Awesome 7 Jelly Duo\": {\n      400: \"fajdr\",\n      normal: \"fajdr\"\n    },\n    \"Font Awesome 7 Slab\": {\n      400: \"faslr\",\n      normal: \"faslr\"\n    },\n    \"Font Awesome 7 Slab Press\": {\n      400: \"faslpr\",\n      normal: \"faslpr\"\n    },\n    \"Font Awesome 7 Thumbprint\": {\n      300: \"fatl\",\n      normal: \"fatl\"\n    },\n    \"Font Awesome 7 Notdog\": {\n      900: \"fans\",\n      normal: \"fans\"\n    },\n    \"Font Awesome 7 Notdog Duo\": {\n      900: \"fands\",\n      normal: \"fands\"\n    },\n    \"Font Awesome 7 Etch\": {\n      900: \"faes\",\n      normal: \"faes\"\n    },\n    \"Font Awesome 7 Graphite\": {\n      100: \"fagt\",\n      normal: \"fagt\"\n    },\n    \"Font Awesome 7 Chisel\": {\n      400: \"facr\",\n      normal: \"facr\"\n    },\n    \"Font Awesome 7 Whiteboard\": {\n      600: \"fawsb\",\n      normal: \"fawsb\"\n    },\n    \"Font Awesome 7 Utility\": {\n      600: \"fausb\",\n      normal: \"fausb\"\n    },\n    \"Font Awesome 7 Utility Duo\": {\n      600: \"faudsb\",\n      normal: \"faudsb\"\n    },\n    \"Font Awesome 7 Utility Fill\": {\n      600: \"faufsb\",\n      normal: \"faufsb\"\n    }\n  };\nvar Et = new Map([[\"classic\", {\n    defaultShortPrefixId: \"fas\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\", \"brands\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"duotone\", {\n    defaultShortPrefixId: \"fad\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"sharp\", {\n    defaultShortPrefixId: \"fass\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"sharp-duotone\", {\n    defaultShortPrefixId: \"fasds\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"chisel\", {\n    defaultShortPrefixId: \"facr\",\n    defaultStyleId: \"regular\",\n    styleIds: [\"regular\"],\n    futureStyleIds: [],\n    defaultFontWeight: 400\n  }], [\"etch\", {\n    defaultShortPrefixId: \"faes\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"graphite\", {\n    defaultShortPrefixId: \"fagt\",\n    defaultStyleId: \"thin\",\n    styleIds: [\"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 100\n  }], [\"jelly\", {\n    defaultShortPrefixId: \"fajr\",\n    defaultStyleId: \"regular\",\n    styleIds: [\"regular\"],\n    futureStyleIds: [],\n    defaultFontWeight: 400\n  }], [\"jelly-duo\", {\n    defaultShortPrefixId: \"fajdr\",\n    defaultStyleId: \"regular\",\n    styleIds: [\"regular\"],\n    futureStyleIds: [],\n    defaultFontWeight: 400\n  }], [\"jelly-fill\", {\n    defaultShortPrefixId: \"fajfr\",\n    defaultStyleId: \"regular\",\n    styleIds: [\"regular\"],\n    futureStyleIds: [],\n    defaultFontWeight: 400\n  }], [\"notdog\", {\n    defaultShortPrefixId: \"fans\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"notdog-duo\", {\n    defaultShortPrefixId: \"fands\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"slab\", {\n    defaultShortPrefixId: \"faslr\",\n    defaultStyleId: \"regular\",\n    styleIds: [\"regular\"],\n    futureStyleIds: [],\n    defaultFontWeight: 400\n  }], [\"slab-press\", {\n    defaultShortPrefixId: \"faslpr\",\n    defaultStyleId: \"regular\",\n    styleIds: [\"regular\"],\n    futureStyleIds: [],\n    defaultFontWeight: 400\n  }], [\"thumbprint\", {\n    defaultShortPrefixId: \"fatl\",\n    defaultStyleId: \"light\",\n    styleIds: [\"light\"],\n    futureStyleIds: [],\n    defaultFontWeight: 300\n  }], [\"utility\", {\n    defaultShortPrefixId: \"fausb\",\n    defaultStyleId: \"semibold\",\n    styleIds: [\"semibold\"],\n    futureStyleIds: [],\n    defaultFontWeight: 600\n  }], [\"utility-duo\", {\n    defaultShortPrefixId: \"faudsb\",\n    defaultStyleId: \"semibold\",\n    styleIds: [\"semibold\"],\n    futureStyleIds: [],\n    defaultFontWeight: 600\n  }], [\"utility-fill\", {\n    defaultShortPrefixId: \"faufsb\",\n    defaultStyleId: \"semibold\",\n    styleIds: [\"semibold\"],\n    futureStyleIds: [],\n    defaultFontWeight: 600\n  }], [\"whiteboard\", {\n    defaultShortPrefixId: \"fawsb\",\n    defaultStyleId: \"semibold\",\n    styleIds: [\"semibold\"],\n    futureStyleIds: [],\n    defaultFontWeight: 600\n  }]]),\n  Mt = {\n    chisel: {\n      regular: \"facr\"\n    },\n    classic: {\n      brands: \"fab\",\n      light: \"fal\",\n      regular: \"far\",\n      solid: \"fas\",\n      thin: \"fat\"\n    },\n    duotone: {\n      light: \"fadl\",\n      regular: \"fadr\",\n      solid: \"fad\",\n      thin: \"fadt\"\n    },\n    etch: {\n      solid: \"faes\"\n    },\n    graphite: {\n      thin: \"fagt\"\n    },\n    jelly: {\n      regular: \"fajr\"\n    },\n    \"jelly-duo\": {\n      regular: \"fajdr\"\n    },\n    \"jelly-fill\": {\n      regular: \"fajfr\"\n    },\n    notdog: {\n      solid: \"fans\"\n    },\n    \"notdog-duo\": {\n      solid: \"fands\"\n    },\n    sharp: {\n      light: \"fasl\",\n      regular: \"fasr\",\n      solid: \"fass\",\n      thin: \"fast\"\n    },\n    \"sharp-duotone\": {\n      light: \"fasdl\",\n      regular: \"fasdr\",\n      solid: \"fasds\",\n      thin: \"fasdt\"\n    },\n    slab: {\n      regular: \"faslr\"\n    },\n    \"slab-press\": {\n      regular: \"faslpr\"\n    },\n    thumbprint: {\n      light: \"fatl\"\n    },\n    utility: {\n      semibold: \"fausb\"\n    },\n    \"utility-duo\": {\n      semibold: \"faudsb\"\n    },\n    \"utility-fill\": {\n      semibold: \"faufsb\"\n    },\n    whiteboard: {\n      semibold: \"fawsb\"\n    }\n  };\nvar Ht = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"],\n  Qt = {\n    kit: {\n      fak: \"kit\",\n      \"fa-kit\": \"kit\"\n    },\n    \"kit-duotone\": {\n      fakd: \"kit-duotone\",\n      \"fa-kit-duotone\": \"kit-duotone\"\n    }\n  },\n  Xt = [\"kit\"];\nvar J = \"kit\",\n  r = \"kit-duotone\",\n  E = \"Kit\",\n  _ = \"Kit Duotone\",\n  ll = _defineProperty(_defineProperty({}, J, E), r, _);\nvar sl = {\n  kit: {\n    \"fa-kit\": \"fak\"\n  },\n  \"kit-duotone\": {\n    \"fa-kit-duotone\": \"fakd\"\n  }\n};\nvar hl = {\n    \"Font Awesome Kit\": {\n      400: \"fak\",\n      normal: \"fak\"\n    },\n    \"Font Awesome Kit Duotone\": {\n      400: \"fakd\",\n      normal: \"fakd\"\n    }\n  },\n  nl = {\n    kit: {\n      fak: \"fa-kit\"\n    },\n    \"kit-duotone\": {\n      fakd: \"fa-kit-duotone\"\n    }\n  };\nvar ml = {\n    kit: {\n      kit: \"fak\"\n    },\n    \"kit-duotone\": {\n      \"kit-duotone\": \"fakd\"\n    }\n  };\n\nvar _wt;\nvar t$1 = {\n    GROUP: \"duotone-group\",\n    SWAP_OPACITY: \"swap-opacity\",\n    PRIMARY: \"primary\",\n    SECONDARY: \"secondary\"\n  },\n  f$1 = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\", \"fa-thumbprint\", \"fa-whiteboard\", \"fa-notdog\", \"fa-notdog-duo\", \"fa-chisel\", \"fa-etch\", \"fa-graphite\", \"fa-jelly\", \"fa-jelly-fill\", \"fa-jelly-duo\", \"fa-slab\", \"fa-slab-press\", \"fa-utility\", \"fa-utility-duo\", \"fa-utility-fill\"];\nvar h$1 = \"classic\",\n  o$1 = \"duotone\",\n  n$1 = \"sharp\",\n  s$1 = \"sharp-duotone\",\n  u$1 = \"chisel\",\n  g$1 = \"etch\",\n  y$1 = \"graphite\",\n  m$1 = \"jelly\",\n  a$1 = \"jelly-duo\",\n  p$1 = \"jelly-fill\",\n  w$1 = \"notdog\",\n  e$1 = \"notdog-duo\",\n  b$1 = \"slab\",\n  c$1 = \"slab-press\",\n  r$1 = \"thumbprint\",\n  x$1 = \"utility\",\n  i$1 = \"utility-duo\",\n  I$1 = \"utility-fill\",\n  F$1 = \"whiteboard\",\n  v$1 = \"Classic\",\n  S$1 = \"Duotone\",\n  A$1 = \"Sharp\",\n  P$1 = \"Sharp Duotone\",\n  j$1 = \"Chisel\",\n  B$1 = \"Etch\",\n  N$1 = \"Graphite\",\n  k$1 = \"Jelly\",\n  D$1 = \"Jelly Duo\",\n  C$1 = \"Jelly Fill\",\n  T$1 = \"Notdog\",\n  L$1 = \"Notdog Duo\",\n  W$1 = \"Slab\",\n  R$1 = \"Slab Press\",\n  K$1 = \"Thumbprint\",\n  U$1 = \"Utility\",\n  J$1 = \"Utility Duo\",\n  E$1 = \"Utility Fill\",\n  _$1 = \"Whiteboard\",\n  wt$1 = (_wt = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_wt, h$1, v$1), o$1, S$1), n$1, A$1), s$1, P$1), u$1, j$1), g$1, B$1), y$1, N$1), m$1, k$1), a$1, D$1), p$1, C$1), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_wt, w$1, T$1), e$1, L$1), b$1, W$1), c$1, R$1), r$1, K$1), x$1, U$1), i$1, J$1), I$1, E$1), F$1, _$1));\nvar G$1 = \"kit\",\n  d$1 = \"kit-duotone\",\n  M$1 = \"Kit\",\n  O = \"Kit Duotone\",\n  dl$1 = _defineProperty(_defineProperty({}, G$1, M$1), d$1, O);\nvar Hl = {\n    classic: {\n      \"fa-brands\": \"fab\",\n      \"fa-duotone\": \"fad\",\n      \"fa-light\": \"fal\",\n      \"fa-regular\": \"far\",\n      \"fa-solid\": \"fas\",\n      \"fa-thin\": \"fat\"\n    },\n    duotone: {\n      \"fa-regular\": \"fadr\",\n      \"fa-light\": \"fadl\",\n      \"fa-thin\": \"fadt\"\n    },\n    sharp: {\n      \"fa-solid\": \"fass\",\n      \"fa-regular\": \"fasr\",\n      \"fa-light\": \"fasl\",\n      \"fa-thin\": \"fast\"\n    },\n    \"sharp-duotone\": {\n      \"fa-solid\": \"fasds\",\n      \"fa-regular\": \"fasdr\",\n      \"fa-light\": \"fasdl\",\n      \"fa-thin\": \"fasdt\"\n    },\n    slab: {\n      \"fa-regular\": \"faslr\"\n    },\n    \"slab-press\": {\n      \"fa-regular\": \"faslpr\"\n    },\n    whiteboard: {\n      \"fa-semibold\": \"fawsb\"\n    },\n    thumbprint: {\n      \"fa-light\": \"fatl\"\n    },\n    notdog: {\n      \"fa-solid\": \"fans\"\n    },\n    \"notdog-duo\": {\n      \"fa-solid\": \"fands\"\n    },\n    etch: {\n      \"fa-solid\": \"faes\"\n    },\n    graphite: {\n      \"fa-thin\": \"fagt\"\n    },\n    jelly: {\n      \"fa-regular\": \"fajr\"\n    },\n    \"jelly-fill\": {\n      \"fa-regular\": \"fajfr\"\n    },\n    \"jelly-duo\": {\n      \"fa-regular\": \"fajdr\"\n    },\n    chisel: {\n      \"fa-regular\": \"facr\"\n    },\n    utility: {\n      \"fa-semibold\": \"fausb\"\n    },\n    \"utility-duo\": {\n      \"fa-semibold\": \"faudsb\"\n    },\n    \"utility-fill\": {\n      \"fa-semibold\": \"faufsb\"\n    }\n  },\n  Y$1 = {\n    classic: [\"fas\", \"far\", \"fal\", \"fat\", \"fad\"],\n    duotone: [\"fadr\", \"fadl\", \"fadt\"],\n    sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n    \"sharp-duotone\": [\"fasds\", \"fasdr\", \"fasdl\", \"fasdt\"],\n    slab: [\"faslr\"],\n    \"slab-press\": [\"faslpr\"],\n    whiteboard: [\"fawsb\"],\n    thumbprint: [\"fatl\"],\n    notdog: [\"fans\"],\n    \"notdog-duo\": [\"fands\"],\n    etch: [\"faes\"],\n    graphite: [\"fagt\"],\n    jelly: [\"fajr\"],\n    \"jelly-fill\": [\"fajfr\"],\n    \"jelly-duo\": [\"fajdr\"],\n    chisel: [\"facr\"],\n    utility: [\"fausb\"],\n    \"utility-duo\": [\"faudsb\"],\n    \"utility-fill\": [\"faufsb\"]\n  },\n  Xl = {\n    classic: {\n      fab: \"fa-brands\",\n      fad: \"fa-duotone\",\n      fal: \"fa-light\",\n      far: \"fa-regular\",\n      fas: \"fa-solid\",\n      fat: \"fa-thin\"\n    },\n    duotone: {\n      fadr: \"fa-regular\",\n      fadl: \"fa-light\",\n      fadt: \"fa-thin\"\n    },\n    sharp: {\n      fass: \"fa-solid\",\n      fasr: \"fa-regular\",\n      fasl: \"fa-light\",\n      fast: \"fa-thin\"\n    },\n    \"sharp-duotone\": {\n      fasds: \"fa-solid\",\n      fasdr: \"fa-regular\",\n      fasdl: \"fa-light\",\n      fasdt: \"fa-thin\"\n    },\n    slab: {\n      faslr: \"fa-regular\"\n    },\n    \"slab-press\": {\n      faslpr: \"fa-regular\"\n    },\n    whiteboard: {\n      fawsb: \"fa-semibold\"\n    },\n    thumbprint: {\n      fatl: \"fa-light\"\n    },\n    notdog: {\n      fans: \"fa-solid\"\n    },\n    \"notdog-duo\": {\n      fands: \"fa-solid\"\n    },\n    etch: {\n      faes: \"fa-solid\"\n    },\n    graphite: {\n      fagt: \"fa-thin\"\n    },\n    jelly: {\n      fajr: \"fa-regular\"\n    },\n    \"jelly-fill\": {\n      fajfr: \"fa-regular\"\n    },\n    \"jelly-duo\": {\n      fajdr: \"fa-regular\"\n    },\n    chisel: {\n      facr: \"fa-regular\"\n    },\n    utility: {\n      fausb: \"fa-semibold\"\n    },\n    \"utility-duo\": {\n      faudsb: \"fa-semibold\"\n    },\n    \"utility-fill\": {\n      faufsb: \"fa-semibold\"\n    }\n  },\n  V$1 = [\"fa-solid\", \"fa-regular\", \"fa-light\", \"fa-thin\", \"fa-duotone\", \"fa-brands\", \"fa-semibold\"],\n  lo = [\"fa\", \"fas\", \"far\", \"fal\", \"fat\", \"fad\", \"fadr\", \"fadl\", \"fadt\", \"fab\", \"fass\", \"fasr\", \"fasl\", \"fast\", \"fasds\", \"fasdr\", \"fasdl\", \"fasdt\", \"faslr\", \"faslpr\", \"fawsb\", \"fatl\", \"fans\", \"fands\", \"faes\", \"fagt\", \"fajr\", \"fajfr\", \"fajdr\", \"facr\", \"fausb\", \"faudsb\", \"faufsb\"].concat(f$1, V$1),\n  $ = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\", \"semibold\"],\n  z$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n  q$1 = z$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n  H$1 = [\"aw\", \"fw\", \"pull-left\", \"pull-right\"],\n  so = [].concat(_toConsumableArray(Object.keys(Y$1)), $, H$1, [\"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"inverse\", \"layers\", \"layers-bottom-left\", \"layers-bottom-right\", \"layers-counter\", \"layers-text\", \"layers-top-left\", \"layers-top-right\", \"li\", \"pull-end\", \"pull-start\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", \"width-auto\", \"width-fixed\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY]).concat(z$1.map(function (l) {\n    return \"\".concat(l, \"x\");\n  })).concat(q$1.map(function (l) {\n    return \"w-\".concat(l);\n  }));\nvar fo = {\n    \"Font Awesome 5 Free\": {\n      900: \"fas\",\n      400: \"far\"\n    },\n    \"Font Awesome 5 Pro\": {\n      900: \"fas\",\n      400: \"far\",\n      normal: \"far\",\n      300: \"fal\"\n    },\n    \"Font Awesome 5 Brands\": {\n      400: \"fab\",\n      normal: \"fab\"\n    },\n    \"Font Awesome 5 Duotone\": {\n      900: \"fad\"\n    }\n  };\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PSEUDO_ELEMENTS = ['::before', '::after', ':before', ':after'];\nvar PRODUCTION = function () {\n  try {\n    return process.env.NODE_ENV === 'production';\n  } catch (e$$1) {\n    return false;\n  }\n}();\nfunction familyProxy(obj) {\n  // Defaults to the classic family if family is not available\n  return new Proxy(obj, {\n    get: function get(target, prop) {\n      return prop in target ? target[prop] : target[i];\n    }\n  });\n}\nvar _PREFIX_TO_STYLE = _objectSpread2({}, Q);\n\n// We changed FACSSClassesToStyleId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles.  But we do still need duotone in _PREFIX_TO_STYLE below, so we are manually adding\n// {'fa-duotone': 'duotone'}\n_PREFIX_TO_STYLE[i] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n  'fa-duotone': 'duotone'\n}), Q[i]), Qt['kit']), Qt['kit-duotone']);\nvar PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nvar _STYLE_TO_PREFIX = _objectSpread2({}, Mt);\n\n// We changed FAStyleIdToShortPrefixId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles.  But we do still need duotone in _STYLE_TO_PREFIX below, so we are manually adding {duotone: 'fad'}\n_STYLE_TO_PREFIX[i] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n  duotone: 'fad'\n}), _STYLE_TO_PREFIX[i]), ml['kit']), ml['kit-duotone']);\nvar STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nvar _PREFIX_TO_LONG_STYLE = _objectSpread2({}, Xl);\n_PREFIX_TO_LONG_STYLE[i] = _objectSpread2(_objectSpread2({}, _PREFIX_TO_LONG_STYLE[i]), nl['kit']);\nvar PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nvar _LONG_STYLE_TO_PREFIX = _objectSpread2({}, Hl);\n_LONG_STYLE_TO_PREFIX[i] = _objectSpread2(_objectSpread2({}, _LONG_STYLE_TO_PREFIX[i]), sl['kit']);\nvar LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nvar ICON_SELECTION_SYNTAX_PATTERN = G;\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = M;\nvar _FONT_WEIGHT_TO_PREFIX = _objectSpread2({}, yt);\nvar FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = X;\nvar RESERVED_CLASSES = [].concat(_toConsumableArray(Xt), _toConsumableArray(so));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n  var element = DOCUMENT.querySelector('script[' + attr + ']');\n  if (element) {\n    return element.getAttribute(attr);\n  }\n}\nfunction coerce(val) {\n  // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n  // We'll assume that this is an indication that it should be toggled to true\n  if (val === '') return true;\n  if (val === 'false') return false;\n  if (val === 'true') return true;\n  return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n  var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-search-pseudo-elements-warnings', 'searchPseudoElementsWarnings'], ['data-search-pseudo-elements-full-scan', 'searchPseudoElementsFullScan'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n  attrs.forEach(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      attr = _ref2[0],\n      key = _ref2[1];\n    var val = coerce(getAttrConfig(attr));\n    if (val !== undefined && val !== null) {\n      initial[key] = val;\n    }\n  });\n}\nvar _default = {\n  styleDefault: 'solid',\n  familyDefault: i,\n  cssPrefix: DEFAULT_CSS_PREFIX,\n  replacementClass: DEFAULT_REPLACEMENT_CLASS,\n  autoReplaceSvg: true,\n  autoAddCss: true,\n  searchPseudoElements: false,\n  searchPseudoElementsWarnings: true,\n  searchPseudoElementsFullScan: false,\n  observeMutations: true,\n  mutateApproach: 'async',\n  keepOriginalSource: true,\n  measurePerformance: false,\n  showMissingIcons: true\n};\n\n// familyPrefix is deprecated but we must still support it if present\nif (initial.familyPrefix) {\n  initial.cssPrefix = initial.familyPrefix;\n}\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n  Object.defineProperty(config, key, {\n    enumerable: true,\n    set: function set(val) {\n      _config[key] = val;\n      _onChangeCb.forEach(function (cb) {\n        return cb(config);\n      });\n    },\n    get: function get() {\n      return _config[key];\n    }\n  });\n});\n\n// familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\nObject.defineProperty(config, 'familyPrefix', {\n  enumerable: true,\n  set: function set(val) {\n    _config.cssPrefix = val;\n    _onChangeCb.forEach(function (cb) {\n      return cb(config);\n    });\n  },\n  get: function get() {\n    return _config.cssPrefix;\n  }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n  _onChangeCb.push(cb);\n  return function () {\n    _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n  };\n}\n\nvar d$2 = UNITS_IN_GRID;\nvar meaninglessTransform = {\n  size: 16,\n  x: 0,\n  y: 0,\n  rotate: 0,\n  flipX: false,\n  flipY: false\n};\nfunction insertCss(css) {\n  if (!css || !IS_DOM) {\n    return;\n  }\n  var style = DOCUMENT.createElement('style');\n  style.setAttribute('type', 'text/css');\n  style.innerHTML = css;\n  var headChildren = DOCUMENT.head.childNodes;\n  var beforeChild = null;\n  for (var i = headChildren.length - 1; i > -1; i--) {\n    var child = headChildren[i];\n    var tagName = (child.tagName || '').toUpperCase();\n    if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n      beforeChild = child;\n    }\n  }\n  DOCUMENT.head.insertBefore(style, beforeChild);\n  return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n  var size = 12;\n  var id = '';\n  while (size-- > 0) {\n    id += idPool[Math.random() * 62 | 0];\n  }\n  return id;\n}\nfunction toArray(obj) {\n  var array = [];\n  for (var i = (obj || []).length >>> 0; i--;) {\n    array[i] = obj[i];\n  }\n  return array;\n}\nfunction classArray(node) {\n  if (node.classList) {\n    return toArray(node.classList);\n  } else {\n    return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n      return i;\n    });\n  }\n}\nfunction htmlEscape(str) {\n  return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction joinAttributes(attributes) {\n  return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n    return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n  }, '').trim();\n}\nfunction joinStyles(styles) {\n  return Object.keys(styles || {}).reduce(function (acc, styleName) {\n    return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n  }, '');\n}\nfunction transformIsMeaningful(transform) {\n  return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n  var transform = _ref.transform,\n    containerWidth = _ref.containerWidth,\n    iconWidth = _ref.iconWidth;\n  var outer = {\n    transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n  };\n  var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n  var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n  var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n  var inner = {\n    transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n  };\n  var path = {\n    transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n  };\n  return {\n    outer: outer,\n    inner: inner,\n    path: path\n  };\n}\nfunction transformForCss(_ref2) {\n  var transform = _ref2.transform,\n    _ref2$width = _ref2.width,\n    width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n    _ref2$height = _ref2.height,\n    height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n    _ref2$startCentered = _ref2.startCentered,\n    startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n  var val = '';\n  if (startCentered && IS_IE) {\n    val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n  } else if (startCentered) {\n    val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n  } else {\n    val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n  }\n  val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n  val += \"rotate(\".concat(transform.rotate, \"deg) \");\n  return val;\n}\n\nvar baseStyles = \":root, :host {\\n  --fa-font-solid: normal 900 1em/1 'Font Awesome 7 Free';\\n  --fa-font-regular: normal 400 1em/1 'Font Awesome 7 Free';\\n  --fa-font-light: normal 300 1em/1 'Font Awesome 7 Pro';\\n  --fa-font-thin: normal 100 1em/1 'Font Awesome 7 Pro';\\n  --fa-font-duotone: normal 900 1em/1 'Font Awesome 7 Duotone';\\n  --fa-font-duotone-regular: normal 400 1em/1 'Font Awesome 7 Duotone';\\n  --fa-font-duotone-light: normal 300 1em/1 'Font Awesome 7 Duotone';\\n  --fa-font-duotone-thin: normal 100 1em/1 'Font Awesome 7 Duotone';\\n  --fa-font-brands: normal 400 1em/1 'Font Awesome 7 Brands';\\n  --fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 7 Sharp';\\n  --fa-font-sharp-regular: normal 400 1em/1 'Font Awesome 7 Sharp';\\n  --fa-font-sharp-light: normal 300 1em/1 'Font Awesome 7 Sharp';\\n  --fa-font-sharp-thin: normal 100 1em/1 'Font Awesome 7 Sharp';\\n  --fa-font-sharp-duotone-solid: normal 900 1em/1 'Font Awesome 7 Sharp Duotone';\\n  --fa-font-sharp-duotone-regular: normal 400 1em/1 'Font Awesome 7 Sharp Duotone';\\n  --fa-font-sharp-duotone-light: normal 300 1em/1 'Font Awesome 7 Sharp Duotone';\\n  --fa-font-sharp-duotone-thin: normal 100 1em/1 'Font Awesome 7 Sharp Duotone';\\n  --fa-font-slab-regular: normal 400 1em/1 'Font Awesome 7 Slab';\\n  --fa-font-slab-press-regular: normal 400 1em/1 'Font Awesome 7 Slab Press';\\n  --fa-font-whiteboard-semibold: normal 600 1em/1 'Font Awesome 7 Whiteboard';\\n  --fa-font-thumbprint-light: normal 300 1em/1 'Font Awesome 7 Thumbprint';\\n  --fa-font-notdog-solid: normal 900 1em/1 'Font Awesome 7 Notdog';\\n  --fa-font-notdog-duo-solid: normal 900 1em/1 'Font Awesome 7 Notdog Duo';\\n  --fa-font-etch-solid: normal 900 1em/1 'Font Awesome 7 Etch';\\n  --fa-font-graphite-thin: normal 100 1em/1 'Font Awesome 7 Graphite';\\n  --fa-font-jelly-regular: normal 400 1em/1 'Font Awesome 7 Jelly';\\n  --fa-font-jelly-fill-regular: normal 400 1em/1 'Font Awesome 7 Jelly Fill';\\n  --fa-font-jelly-duo-regular: normal 400 1em/1 'Font Awesome 7 Jelly Duo';\\n  --fa-font-chisel-regular: normal 400 1em/1 'Font Awesome 7 Chisel';\\n  --fa-font-utility-semibold: normal 600 1em/1 'Font Awesome 7 Utility';\\n  --fa-font-utility-duo-semibold: normal 600 1em/1 'Font Awesome 7 Utility Duo';\\n  --fa-font-utility-fill-semibold: normal 600 1em/1 'Font Awesome 7 Utility Fill';\\n}\\n\\n.svg-inline--fa {\\n  box-sizing: content-box;\\n  display: var(--fa-display, inline-block);\\n  height: 1em;\\n  overflow: visible;\\n  vertical-align: -0.125em;\\n  width: var(--fa-width, 1.25em);\\n}\\n.svg-inline--fa.fa-2xs {\\n  vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n  vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n  vertical-align: -0.0714285714em;\\n}\\n.svg-inline--fa.fa-lg {\\n  vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n  vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n  vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left,\\n.svg-inline--fa .fa-pull-start {\\n  float: inline-start;\\n  margin-inline-end: var(--fa-pull-margin, 0.3em);\\n}\\n.svg-inline--fa.fa-pull-right,\\n.svg-inline--fa .fa-pull-end {\\n  float: inline-end;\\n  margin-inline-start: var(--fa-pull-margin, 0.3em);\\n}\\n.svg-inline--fa.fa-li {\\n  width: var(--fa-li-width, 2em);\\n  inset-inline-start: calc(-1 * var(--fa-li-width, 2em));\\n  inset-block-start: 0.25em; /* syncing vertical alignment with Web Font rendering */\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n  display: inline-block;\\n  position: absolute;\\n  text-align: center;\\n}\\n\\n.fa-layers {\\n  display: inline-block;\\n  height: 1em;\\n  position: relative;\\n  text-align: center;\\n  vertical-align: -0.125em;\\n  width: var(--fa-width, 1.25em);\\n}\\n.fa-layers .svg-inline--fa {\\n  inset: 0;\\n  margin: auto;\\n  position: absolute;\\n  transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n  transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n  background-color: var(--fa-counter-background-color, #ff253a);\\n  border-radius: var(--fa-counter-border-radius, 1em);\\n  box-sizing: border-box;\\n  color: var(--fa-inverse, #fff);\\n  line-height: var(--fa-counter-line-height, 1);\\n  max-width: var(--fa-counter-max-width, 5em);\\n  min-width: var(--fa-counter-min-width, 1.5em);\\n  overflow: hidden;\\n  padding: var(--fa-counter-padding, 0.25em 0.5em);\\n  right: var(--fa-right, 0);\\n  text-overflow: ellipsis;\\n  top: var(--fa-top, 0);\\n  transform: scale(var(--fa-counter-scale, 0.25));\\n  transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n  bottom: var(--fa-bottom, 0);\\n  right: var(--fa-right, 0);\\n  top: auto;\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n  bottom: var(--fa-bottom, 0);\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: auto;\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n  top: var(--fa-top, 0);\\n  right: var(--fa-right, 0);\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: var(--fa-top, 0);\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: top left;\\n}\\n\\n.fa-1x {\\n  font-size: 1em;\\n}\\n\\n.fa-2x {\\n  font-size: 2em;\\n}\\n\\n.fa-3x {\\n  font-size: 3em;\\n}\\n\\n.fa-4x {\\n  font-size: 4em;\\n}\\n\\n.fa-5x {\\n  font-size: 5em;\\n}\\n\\n.fa-6x {\\n  font-size: 6em;\\n}\\n\\n.fa-7x {\\n  font-size: 7em;\\n}\\n\\n.fa-8x {\\n  font-size: 8em;\\n}\\n\\n.fa-9x {\\n  font-size: 9em;\\n}\\n\\n.fa-10x {\\n  font-size: 10em;\\n}\\n\\n.fa-2xs {\\n  font-size: calc(10 / 16 * 1em); /* converts a 10px size into an em-based value that's relative to the scale's 16px base */\\n  line-height: calc(1 / 10 * 1em); /* sets the line-height of the icon back to that of it's parent */\\n  vertical-align: calc((6 / 10 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\\n}\\n\\n.fa-xs {\\n  font-size: calc(12 / 16 * 1em); /* converts a 12px size into an em-based value that's relative to the scale's 16px base */\\n  line-height: calc(1 / 12 * 1em); /* sets the line-height of the icon back to that of it's parent */\\n  vertical-align: calc((6 / 12 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\\n}\\n\\n.fa-sm {\\n  font-size: calc(14 / 16 * 1em); /* converts a 14px size into an em-based value that's relative to the scale's 16px base */\\n  line-height: calc(1 / 14 * 1em); /* sets the line-height of the icon back to that of it's parent */\\n  vertical-align: calc((6 / 14 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\\n}\\n\\n.fa-lg {\\n  font-size: calc(20 / 16 * 1em); /* converts a 20px size into an em-based value that's relative to the scale's 16px base */\\n  line-height: calc(1 / 20 * 1em); /* sets the line-height of the icon back to that of it's parent */\\n  vertical-align: calc((6 / 20 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\\n}\\n\\n.fa-xl {\\n  font-size: calc(24 / 16 * 1em); /* converts a 24px size into an em-based value that's relative to the scale's 16px base */\\n  line-height: calc(1 / 24 * 1em); /* sets the line-height of the icon back to that of it's parent */\\n  vertical-align: calc((6 / 24 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\\n}\\n\\n.fa-2xl {\\n  font-size: calc(32 / 16 * 1em); /* converts a 32px size into an em-based value that's relative to the scale's 16px base */\\n  line-height: calc(1 / 32 * 1em); /* sets the line-height of the icon back to that of it's parent */\\n  vertical-align: calc((6 / 32 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */\\n}\\n\\n.fa-width-auto {\\n  --fa-width: auto;\\n}\\n\\n.fa-fw,\\n.fa-width-fixed {\\n  --fa-width: 1.25em;\\n}\\n\\n.fa-ul {\\n  list-style-type: none;\\n  margin-inline-start: var(--fa-li-margin, 2.5em);\\n  padding-inline-start: 0;\\n}\\n.fa-ul > li {\\n  position: relative;\\n}\\n\\n.fa-li {\\n  inset-inline-start: calc(-1 * var(--fa-li-width, 2em));\\n  position: absolute;\\n  text-align: center;\\n  width: var(--fa-li-width, 2em);\\n  line-height: inherit;\\n}\\n\\n/* Heads Up: Bordered Icons will not be supported in the future!\\n  - This feature will be deprecated in the next major release of Font Awesome (v8)!\\n  - You may continue to use it in this version *v7), but it will not be supported in Font Awesome v8.\\n*/\\n/* Notes:\\n* --@{v.$css-prefix}-border-width = 1/16 by default (to render as ~1px based on a 16px default font-size)\\n* --@{v.$css-prefix}-border-padding =\\n  ** 3/16 for vertical padding (to give ~2px of vertical whitespace around an icon considering it's vertical alignment)\\n  ** 4/16 for horizontal padding (to give ~4px of horizontal whitespace around an icon)\\n*/\\n.fa-border {\\n  border-color: var(--fa-border-color, #eee);\\n  border-radius: var(--fa-border-radius, 0.1em);\\n  border-style: var(--fa-border-style, solid);\\n  border-width: var(--fa-border-width, 0.0625em);\\n  box-sizing: var(--fa-border-box-sizing, content-box);\\n  padding: var(--fa-border-padding, 0.1875em 0.25em);\\n}\\n\\n.fa-pull-left,\\n.fa-pull-start {\\n  float: inline-start;\\n  margin-inline-end: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right,\\n.fa-pull-end {\\n  float: inline-end;\\n  margin-inline-start: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n  animation-name: fa-beat;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n  animation-name: fa-bounce;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n  animation-name: fa-fade;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n  animation-name: fa-beat-fade;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n  animation-name: fa-flip;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n  animation-name: fa-shake;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n  animation-name: fa-spin;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 2s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n  --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n  animation-name: fa-spin;\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n  .fa-beat,\\n  .fa-bounce,\\n  .fa-fade,\\n  .fa-beat-fade,\\n  .fa-flip,\\n  .fa-pulse,\\n  .fa-shake,\\n  .fa-spin,\\n  .fa-spin-pulse {\\n    animation: none !important;\\n    transition: none !important;\\n  }\\n}\\n@keyframes fa-beat {\\n  0%, 90% {\\n    transform: scale(1);\\n  }\\n  45% {\\n    transform: scale(var(--fa-beat-scale, 1.25));\\n  }\\n}\\n@keyframes fa-bounce {\\n  0% {\\n    transform: scale(1, 1) translateY(0);\\n  }\\n  10% {\\n    transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n  }\\n  30% {\\n    transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n  }\\n  50% {\\n    transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n  }\\n  57% {\\n    transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n  }\\n  64% {\\n    transform: scale(1, 1) translateY(0);\\n  }\\n  100% {\\n    transform: scale(1, 1) translateY(0);\\n  }\\n}\\n@keyframes fa-fade {\\n  50% {\\n    opacity: var(--fa-fade-opacity, 0.4);\\n  }\\n}\\n@keyframes fa-beat-fade {\\n  0%, 100% {\\n    opacity: var(--fa-beat-fade-opacity, 0.4);\\n    transform: scale(1);\\n  }\\n  50% {\\n    opacity: 1;\\n    transform: scale(var(--fa-beat-fade-scale, 1.125));\\n  }\\n}\\n@keyframes fa-flip {\\n  50% {\\n    transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n  }\\n}\\n@keyframes fa-shake {\\n  0% {\\n    transform: rotate(-15deg);\\n  }\\n  4% {\\n    transform: rotate(15deg);\\n  }\\n  8%, 24% {\\n    transform: rotate(-18deg);\\n  }\\n  12%, 28% {\\n    transform: rotate(18deg);\\n  }\\n  16% {\\n    transform: rotate(-22deg);\\n  }\\n  20% {\\n    transform: rotate(22deg);\\n  }\\n  32% {\\n    transform: rotate(-12deg);\\n  }\\n  36% {\\n    transform: rotate(12deg);\\n  }\\n  40%, 100% {\\n    transform: rotate(0deg);\\n  }\\n}\\n@keyframes fa-spin {\\n  0% {\\n    transform: rotate(0deg);\\n  }\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n.fa-rotate-90 {\\n  transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n  transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n  transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n  transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n  transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n  transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n  transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.svg-inline--fa .fa-primary {\\n  fill: var(--fa-primary-color, currentColor);\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n  fill: var(--fa-secondary-color, currentColor);\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n  fill: black;\\n}\\n\\n.svg-inline--fa.fa-inverse {\\n  fill: var(--fa-inverse, #fff);\\n}\\n\\n.fa-stack {\\n  display: inline-block;\\n  height: 2em;\\n  line-height: 2em;\\n  position: relative;\\n  vertical-align: middle;\\n  width: 2.5em;\\n}\\n\\n.fa-inverse {\\n  color: var(--fa-inverse, #fff);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n  --fa-width: 1.25em;\\n  height: 1em;\\n  width: var(--fa-width);\\n}\\n.svg-inline--fa.fa-stack-2x {\\n  --fa-width: 2.5em;\\n  height: 2em;\\n  width: var(--fa-width);\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n  inset: 0;\\n  margin: auto;\\n  position: absolute;\\n  z-index: var(--fa-stack-z-index, auto);\\n}\";\n\nfunction css() {\n  var dcp = DEFAULT_CSS_PREFIX;\n  var drc = DEFAULT_REPLACEMENT_CLASS;\n  var fp = config.cssPrefix;\n  var rc = config.replacementClass;\n  var s = baseStyles;\n  if (fp !== dcp || rc !== drc) {\n    var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n    var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n    var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n    s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n  }\n  return s;\n}\nvar _cssInserted = false;\nfunction ensureCss() {\n  if (config.autoAddCss && !_cssInserted) {\n    insertCss(css());\n    _cssInserted = true;\n  }\n}\nvar InjectCSS = {\n  mixout: function mixout() {\n    return {\n      dom: {\n        css: css,\n        insertCss: ensureCss\n      }\n    };\n  },\n  hooks: function hooks() {\n    return {\n      beforeDOMElementCreation: function beforeDOMElementCreation() {\n        ensureCss();\n      },\n      beforeI2svg: function beforeI2svg() {\n        ensureCss();\n      }\n    };\n  }\n};\n\nvar w$2 = WINDOW || {};\nif (!w$2[NAMESPACE_IDENTIFIER]) w$2[NAMESPACE_IDENTIFIER] = {};\nif (!w$2[NAMESPACE_IDENTIFIER].styles) w$2[NAMESPACE_IDENTIFIER].styles = {};\nif (!w$2[NAMESPACE_IDENTIFIER].hooks) w$2[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w$2[NAMESPACE_IDENTIFIER].shims) w$2[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w$2[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\nvar _listener = function listener() {\n  DOCUMENT.removeEventListener('DOMContentLoaded', _listener);\n  loaded = 1;\n  functions.map(function (fn) {\n    return fn();\n  });\n};\nvar loaded = false;\nif (IS_DOM) {\n  loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n  if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', _listener);\n}\nfunction domready (fn) {\n  if (!IS_DOM) return;\n  loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n  var tag = abstractNodes.tag,\n    _abstractNodes$attrib = abstractNodes.attributes,\n    attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n    _abstractNodes$childr = abstractNodes.children,\n    children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n  if (typeof abstractNodes === 'string') {\n    return htmlEscape(abstractNodes);\n  } else {\n    return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n  }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n  if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n    return {\n      prefix: prefix,\n      iconName: iconName,\n      icon: mapping[prefix][iconName]\n    };\n  }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n  return function (a, b, c, d) {\n    return func.call(thisContext, a, b, c, d);\n  };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param  {Object}   subject      The object to reduce over.\n * @param  {Function} fn           The reducer function.\n * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].\n * @param  {Object}   thisContext  The context for the reducer.\n * @return {mixed}                 The final result.\n */\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n  var keys = Object.keys(subject),\n    length = keys.length,\n    iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n    i,\n    key,\n    result;\n  if (initialValue === undefined) {\n    i = 1;\n    result = subject[keys[0]];\n  } else {\n    i = 0;\n    result = initialValue;\n  }\n  for (; i < length; i++) {\n    key = keys[i];\n    result = iterator(result, subject[key], key, subject);\n  }\n  return result;\n};\n\n/**\n * Return hexadecimal string for a unicode character\n * Returns `null` when more than one character (not bytes!) are passed\n * For example: 'K' → '7B'\n */\nfunction toHex(unicode) {\n  if (_toConsumableArray(unicode).length !== 1) return null;\n  return unicode.codePointAt(0).toString(16);\n}\n\nfunction normalizeIcons(icons) {\n  return Object.keys(icons).reduce(function (acc, iconName) {\n    var icon = icons[iconName];\n    var expanded = !!icon.icon;\n    if (expanded) {\n      acc[icon.iconName] = icon.icon;\n    } else {\n      acc[iconName] = icon;\n    }\n    return acc;\n  }, {});\n}\nfunction defineIcons(prefix, icons) {\n  var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var _params$skipHooks = params.skipHooks,\n    skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n  var normalized = normalizeIcons(icons);\n  if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n    namespace.hooks.addPack(prefix, normalizeIcons(icons));\n  } else {\n    namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n  }\n\n  /**\n   * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n   * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n   * for `fas` so we'll ease the upgrade process for our users by automatically defining\n   * this as well.\n   */\n  if (prefix === 'fas') {\n    defineIcons('fa', icons);\n  }\n}\n\nvar MONO = 0x1;\nvar DUO = 0x2;\n\n// New v7 compatible matchers using the style attribute to determine layer membership\nvar modernMatches = [[DUO, /*#__PURE__*/_wrapRegExp(/path opacity=\"([^\"]*)\".*d=\"([^\"]*)\".*path.*d=\"([^\"]*)\"/, {\n  d2: 2,\n  d1: 3\n})], [DUO, /*#__PURE__*/_wrapRegExp(/path opacity=\"([^\"]*)\".*d=\"([^\"]*)\"/, {\n  d2: 2\n})], [MONO, /*#__PURE__*/_wrapRegExp(/path fill=\"currentColor\".*d=\"([^\"]+)\"/, {\n  d1: 1\n})]];\n\n// Old <= v6 matchers, these should rarely get used.\n//\n// Why are there so many? Over the lifecycle of version 5 and 6 we modified the\n// syntax for our source SVG files several times. These patterns match the\n// historical record and attempt to handle backwards-compatibility in rare edge\n// cases (loading version 6 SVG source files using the version 7 SVG parser)\nvar legacyMatches = [[DUO, /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]*secondary[^\"]*)\".*d=\"([^\"]+)\".*path class=\"([^\"]*primary[^\"]*)\".*d=\"([^\"]+)\"/, {\n  attr2: 1,\n  d2: 2,\n  attr1: 3,\n  d1: 4\n})], [DUO, /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]*primary[^\"]*)\".*d=\"([^\"]+)\".*path class=\"([^\"]*secondary[^\"]*)\".*d=\"([^\"]+)\"/, {\n  attr1: 1,\n  d1: 2,\n  attr2: 3,\n  d2: 4\n})], [DUO, /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]*primary[^\"]*)\".*d=\"([^\"]+)\"/, {\n  attr1: 1,\n  d1: 2\n})], [DUO, /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]*secondary[^\"]*)\".*d=\"([^\"]+)\"/, {\n  attr2: 1,\n  d2: 2\n})], [DUO, /*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*class=\"([^\"]*secondary[^\"]*)\".*path d=\"([^\"]+)\".*class=\"([^\"]*primary[^\"]*)\"/, {\n  d2: 1,\n  attr2: 2,\n  d1: 3,\n  attr1: 4\n})], [DUO, /*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*class=\"([^\"]*primary[^\"]*)\".*path d=\"([^\"]+)\".*class=\"([^\"]*secondary[^\"]*)\"/, {\n  d1: 1,\n  attr1: 2,\n  d2: 3,\n  attr2: 4\n})], [DUO, /*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*class=\"([^\"]*primary[^\"]*)\"/, {\n  d1: 1,\n  attr1: 2\n})], [DUO, /*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*class=\"([^\"]*secondary[^\"]*)\"/, {\n  d2: 1,\n  attr2: 2\n})], [DUO, /*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*path d=\"([^\"]+)\"/, {\n  d1: 1,\n  d2: 2\n})], [MONO, /*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\"/, {\n  d1: 1\n})], [MONO, /*#__PURE__*/_wrapRegExp(/path style=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n  attr1: 1,\n  d1: 2\n})]];\n\nvar styles = namespace.styles,\n  shims = namespace.shims;\nvar FAMILY_NAMES = Object.keys(PREFIX_TO_LONG_STYLE);\nvar PREFIXES_FOR_FAMILY = FAMILY_NAMES.reduce(function (acc, familyId) {\n  acc[familyId] = Object.keys(PREFIX_TO_LONG_STYLE[familyId]);\n  return acc;\n}, {});\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nfunction isReserved(name) {\n  return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction getIconName(cssPrefix, cls) {\n  var parts = cls.split('-');\n  var prefix = parts[0];\n  var iconName = parts.slice(1).join('-');\n  if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n    return iconName;\n  } else {\n    return null;\n  }\n}\nvar build = function build() {\n  var lookup = function lookup(reducer) {\n    return reduce(styles, function (o$$1, style, prefix) {\n      o$$1[prefix] = reduce(style, reducer, {});\n      return o$$1;\n    }, {});\n  };\n  _byUnicode = lookup(function (acc, icon, iconName) {\n    if (icon[3]) {\n      acc[icon[3]] = iconName;\n    }\n    if (icon[2]) {\n      var aliases = icon[2].filter(function (a$$1) {\n        return typeof a$$1 === 'number';\n      });\n      aliases.forEach(function (alias) {\n        acc[alias.toString(16)] = iconName;\n      });\n    }\n    return acc;\n  });\n  _byLigature = lookup(function (acc, icon, iconName) {\n    acc[iconName] = iconName;\n    if (icon[2]) {\n      var aliases = icon[2].filter(function (a$$1) {\n        return typeof a$$1 === 'string';\n      });\n      aliases.forEach(function (alias) {\n        acc[alias] = iconName;\n      });\n    }\n    return acc;\n  });\n  _byAlias = lookup(function (acc, icon, iconName) {\n    var aliases = icon[2];\n    acc[iconName] = iconName;\n    aliases.forEach(function (alias) {\n      acc[alias] = iconName;\n    });\n    return acc;\n  });\n\n  // If we have a Kit, we can't determine if regular is available since we\n  // could be auto-fetching it. We'll have to assume that it is available.\n  var hasRegular = 'far' in styles || config.autoFetchSvg;\n  var shimLookups = reduce(shims, function (acc, shim) {\n    var maybeNameMaybeUnicode = shim[0];\n    var prefix = shim[1];\n    var iconName = shim[2];\n    if (prefix === 'far' && !hasRegular) {\n      prefix = 'fas';\n    }\n    if (typeof maybeNameMaybeUnicode === 'string') {\n      acc.names[maybeNameMaybeUnicode] = {\n        prefix: prefix,\n        iconName: iconName\n      };\n    }\n    if (typeof maybeNameMaybeUnicode === 'number') {\n      acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n        prefix: prefix,\n        iconName: iconName\n      };\n    }\n    return acc;\n  }, {\n    names: {},\n    unicodes: {}\n  });\n  _byOldName = shimLookups.names;\n  _byOldUnicode = shimLookups.unicodes;\n  _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n    family: config.familyDefault\n  });\n};\nonChange(function (c$$1) {\n  _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n    family: config.familyDefault\n  });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n  return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n  return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n  return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n  return _byOldName[name] || {\n    prefix: null,\n    iconName: null\n  };\n}\nfunction byOldUnicode(unicode) {\n  var oldUnicode = _byOldUnicode[unicode];\n  var newUnicode = byUnicode('fas', unicode);\n  return oldUnicode || (newUnicode ? {\n    prefix: 'fas',\n    iconName: newUnicode\n  } : null) || {\n    prefix: null,\n    iconName: null\n  };\n}\nfunction getDefaultUsablePrefix() {\n  return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n  return {\n    prefix: null,\n    iconName: null,\n    rest: []\n  };\n};\nfunction getFamilyId(values) {\n  var family = i;\n  var famProps = FAMILY_NAMES.reduce(function (acc, familyId) {\n    acc[familyId] = \"\".concat(config.cssPrefix, \"-\").concat(familyId);\n    return acc;\n  }, {});\n  dt.forEach(function (familyId) {\n    if (values.includes(famProps[familyId]) || values.some(function (v$$1) {\n      return PREFIXES_FOR_FAMILY[familyId].includes(v$$1);\n    })) {\n      family = familyId;\n    }\n  });\n  return family;\n}\nfunction getCanonicalPrefix(styleOrPrefix) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$family = params.family,\n    family = _params$family === void 0 ? i : _params$family;\n  var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n\n  // handles the exception of passing in only a family of 'duotone' with no style\n  if (family === t && !styleOrPrefix) {\n    return 'fad';\n  }\n  var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n  var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n  var result = prefix || defined || null;\n  return result;\n}\nfunction moveNonFaClassesToRest(classNames) {\n  var rest = [];\n  var iconName = null;\n  classNames.forEach(function (cls) {\n    var result = getIconName(config.cssPrefix, cls);\n    if (result) {\n      iconName = result;\n    } else if (cls) {\n      rest.push(cls);\n    }\n  });\n  return {\n    iconName: iconName,\n    rest: rest\n  };\n}\nfunction sortedUniqueValues(arr) {\n  return arr.sort().filter(function (value, index, arr) {\n    return arr.indexOf(value) === index;\n  });\n}\nvar _faCombinedClasses = lo.concat(Ht);\nfunction getCanonicalIcon(values) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$skipLookups = params.skipLookups,\n    skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n  var givenPrefix = null;\n  var faStyleOrFamilyClasses = sortedUniqueValues(values.filter(function (cls) {\n    return _faCombinedClasses.includes(cls);\n  }));\n  var nonStyleOrFamilyClasses = sortedUniqueValues(values.filter(function (cls) {\n    return !_faCombinedClasses.includes(cls);\n  }));\n  var faStyles = faStyleOrFamilyClasses.filter(function (cls) {\n    givenPrefix = cls;\n    return !Z.includes(cls);\n  });\n  var _faStyles = _slicedToArray(faStyles, 1),\n    _faStyles$ = _faStyles[0],\n    styleFromValues = _faStyles$ === void 0 ? null : _faStyles$;\n  var family = getFamilyId(faStyleOrFamilyClasses);\n  var canonical = _objectSpread2(_objectSpread2({}, moveNonFaClassesToRest(nonStyleOrFamilyClasses)), {}, {\n    prefix: getCanonicalPrefix(styleFromValues, {\n      family: family\n    })\n  });\n  return _objectSpread2(_objectSpread2(_objectSpread2({}, canonical), getDefaultCanonicalPrefix({\n    values: values,\n    family: family,\n    styles: styles,\n    config: config,\n    canonical: canonical,\n    givenPrefix: givenPrefix\n  })), applyShimAndAlias(skipLookups, givenPrefix, canonical));\n}\nfunction applyShimAndAlias(skipLookups, givenPrefix, canonical) {\n  var prefix = canonical.prefix,\n    iconName = canonical.iconName;\n  if (skipLookups || !prefix || !iconName) {\n    return {\n      prefix: prefix,\n      iconName: iconName\n    };\n  }\n  var shim = givenPrefix === 'fa' ? byOldName(iconName) : {};\n  var aliasIconName = byAlias(prefix, iconName);\n  iconName = shim.iconName || aliasIconName || iconName;\n  prefix = shim.prefix || prefix;\n  if (prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n    // Allow a fallback from the regular style to solid if regular is not available\n    // but only if we aren't auto-fetching SVGs\n    prefix = 'fas';\n  }\n  return {\n    prefix: prefix,\n    iconName: iconName\n  };\n}\nvar newCanonicalFamilies = dt.filter(function (familyId) {\n  return familyId !== i || familyId !== t;\n});\nvar newCanonicalStyles = Object.keys(Xl).filter(function (key) {\n  return key !== i;\n}).map(function (key) {\n  return Object.keys(Xl[key]);\n}).flat();\nfunction getDefaultCanonicalPrefix(prefixOptions) {\n  var values = prefixOptions.values,\n    family = prefixOptions.family,\n    canonical = prefixOptions.canonical,\n    _prefixOptions$givenP = prefixOptions.givenPrefix,\n    givenPrefix = _prefixOptions$givenP === void 0 ? '' : _prefixOptions$givenP,\n    _prefixOptions$styles = prefixOptions.styles,\n    styles = _prefixOptions$styles === void 0 ? {} : _prefixOptions$styles,\n    _prefixOptions$config = prefixOptions.config,\n    config$$1 = _prefixOptions$config === void 0 ? {} : _prefixOptions$config;\n  var isDuotoneFamily = family === t;\n  var valuesHasDuotone = values.includes('fa-duotone') || values.includes('fad');\n  var defaultFamilyIsDuotone = config$$1.familyDefault === 'duotone';\n  var canonicalPrefixIsDuotone = canonical.prefix === 'fad' || canonical.prefix === 'fa-duotone';\n  if (!isDuotoneFamily && (valuesHasDuotone || defaultFamilyIsDuotone || canonicalPrefixIsDuotone)) {\n    canonical.prefix = 'fad';\n  }\n  if (values.includes('fa-brands') || values.includes('fab')) {\n    canonical.prefix = 'fab';\n  }\n  if (!canonical.prefix && newCanonicalFamilies.includes(family)) {\n    var validPrefix = Object.keys(styles).find(function (key) {\n      return newCanonicalStyles.includes(key);\n    });\n    if (validPrefix || config$$1.autoFetchSvg) {\n      var defaultPrefix = Et.get(family).defaultShortPrefixId;\n      canonical.prefix = defaultPrefix;\n      canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n    }\n  }\n  if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n    // The fa prefix is not canonical. So if it has made it through until this point\n    // we will shift it to the correct prefix.\n    canonical.prefix = getDefaultUsablePrefix() || 'fas';\n  }\n  return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n  function Library() {\n    _classCallCheck(this, Library);\n    this.definitions = {};\n  }\n  return _createClass(Library, [{\n    key: \"add\",\n    value: function add() {\n      var _this = this;\n      for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n        definitions[_key] = arguments[_key];\n      }\n      var additions = definitions.reduce(this._pullDefinitions, {});\n      Object.keys(additions).forEach(function (key) {\n        _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n        defineIcons(key, additions[key]);\n\n        // To keep support for older Classic styles, also add longer prefixes\n        var longPrefix = PREFIX_TO_LONG_STYLE[i][key];\n        if (longPrefix) defineIcons(longPrefix, additions[key]);\n        build();\n      });\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.definitions = {};\n    }\n  }, {\n    key: \"_pullDefinitions\",\n    value: function _pullDefinitions(additions, definition) {\n      var normalized = definition.prefix && definition.iconName && definition.icon ? {\n        0: definition\n      } : definition;\n      Object.keys(normalized).map(function (key) {\n        var _normalized$key = normalized[key],\n          prefix = _normalized$key.prefix,\n          iconName = _normalized$key.iconName,\n          icon = _normalized$key.icon;\n        var aliases = icon[2];\n        if (!additions[prefix]) additions[prefix] = {};\n        if (aliases.length > 0) {\n          aliases.forEach(function (alias) {\n            if (typeof alias === 'string') {\n              additions[prefix][alias] = icon;\n            }\n          });\n        }\n        additions[prefix][iconName] = icon;\n      });\n      return additions;\n    }\n  }]);\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n  var obj = _ref.mixoutsTo;\n  _plugins = nextPlugins;\n  _hooks = {};\n  Object.keys(providers).forEach(function (k) {\n    if (defaultProviderKeys.indexOf(k) === -1) {\n      delete providers[k];\n    }\n  });\n  _plugins.forEach(function (plugin) {\n    var mixout = plugin.mixout ? plugin.mixout() : {};\n    Object.keys(mixout).forEach(function (tk) {\n      if (typeof mixout[tk] === 'function') {\n        obj[tk] = mixout[tk];\n      }\n      if (_typeof(mixout[tk]) === 'object') {\n        Object.keys(mixout[tk]).forEach(function (sk) {\n          if (!obj[tk]) {\n            obj[tk] = {};\n          }\n          obj[tk][sk] = mixout[tk][sk];\n        });\n      }\n    });\n    if (plugin.hooks) {\n      var hooks = plugin.hooks();\n      Object.keys(hooks).forEach(function (hook) {\n        if (!_hooks[hook]) {\n          _hooks[hook] = [];\n        }\n        _hooks[hook].push(hooks[hook]);\n      });\n    }\n    if (plugin.provides) {\n      plugin.provides(providers);\n    }\n  });\n  return obj;\n}\nfunction chainHooks(hook, accumulator) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n  var hookFns = _hooks[hook] || [];\n  hookFns.forEach(function (hookFn) {\n    accumulator = hookFn.apply(null, [accumulator].concat(args));\n  });\n  return accumulator;\n}\nfunction callHooks(hook) {\n  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    args[_key2 - 1] = arguments[_key2];\n  }\n  var hookFns = _hooks[hook] || [];\n  hookFns.forEach(function (hookFn) {\n    hookFn.apply(null, args);\n  });\n  return undefined;\n}\nfunction callProvided() {\n  var hook = arguments[0];\n  var args = Array.prototype.slice.call(arguments, 1);\n  return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n  if (iconLookup.prefix === 'fa') {\n    iconLookup.prefix = 'fas';\n  }\n  var iconName = iconLookup.iconName;\n  var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n  if (!iconName) return;\n  iconName = byAlias(prefix, iconName) || iconName;\n  return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n  config.autoReplaceSvg = false;\n  config.observeMutations = false;\n  callHooks('noAuto');\n};\nvar dom = {\n  i2svg: function i2svg() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (IS_DOM) {\n      callHooks('beforeI2svg', params);\n      callProvided('pseudoElements2svg', params);\n      return callProvided('i2svg', params);\n    } else {\n      return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n    }\n  },\n  watch: function watch() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n    if (config.autoReplaceSvg === false) {\n      config.autoReplaceSvg = true;\n    }\n    config.observeMutations = true;\n    domready(function () {\n      autoReplace({\n        autoReplaceSvgRoot: autoReplaceSvgRoot\n      });\n      callHooks('watch', params);\n    });\n  }\n};\nvar parse = {\n  icon: function icon(_icon) {\n    if (_icon === null) {\n      return null;\n    }\n    if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n      return {\n        prefix: _icon.prefix,\n        iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n      };\n    }\n    if (Array.isArray(_icon) && _icon.length === 2) {\n      var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n      var prefix = getCanonicalPrefix(_icon[0]);\n      return {\n        prefix: prefix,\n        iconName: byAlias(prefix, iconName) || iconName\n      };\n    }\n    if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n      var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n        skipLookups: true\n      });\n      return {\n        prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n        iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n      };\n    }\n    if (typeof _icon === 'string') {\n      var _prefix = getDefaultUsablePrefix();\n      return {\n        prefix: _prefix,\n        iconName: byAlias(_prefix, _icon) || _icon\n      };\n    }\n  }\n};\nvar api = {\n  noAuto: noAuto,\n  config: config,\n  dom: dom,\n  parse: parse,\n  library: library,\n  findIconDefinition: findIconDefinition,\n  toHtml: toHtml\n};\nvar autoReplace = function autoReplace() {\n  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n    autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n  if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n    node: autoReplaceSvgRoot\n  });\n};\n\nfunction domVariants(val, abstractCreator) {\n  Object.defineProperty(val, 'abstract', {\n    get: abstractCreator\n  });\n  Object.defineProperty(val, 'html', {\n    get: function get() {\n      return val.abstract.map(function (a) {\n        return toHtml(a);\n      });\n    }\n  });\n  Object.defineProperty(val, 'node', {\n    get: function get() {\n      if (!IS_DOM) return undefined;\n      var container = DOCUMENT.createElement('div');\n      container.innerHTML = val.html;\n      return container.children;\n    }\n  });\n  return val;\n}\n\nfunction asIcon (_ref) {\n  var children = _ref.children,\n    main = _ref.main,\n    mask = _ref.mask,\n    attributes = _ref.attributes,\n    styles = _ref.styles,\n    transform = _ref.transform;\n  if (transformIsMeaningful(transform) && main.found && !mask.found) {\n    var width = main.width,\n      height = main.height;\n    var offset = {\n      x: width / height / 2,\n      y: 0.5\n    };\n    attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n      'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n    }));\n  }\n  return [{\n    tag: 'svg',\n    attributes: attributes,\n    children: children\n  }];\n}\n\nfunction asSymbol (_ref) {\n  var prefix = _ref.prefix,\n    iconName = _ref.iconName,\n    children = _ref.children,\n    attributes = _ref.attributes,\n    symbol = _ref.symbol;\n  var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n  return [{\n    tag: 'svg',\n    attributes: {\n      style: 'display: none;'\n    },\n    children: [{\n      tag: 'symbol',\n      attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n        id: id\n      }),\n      children: children\n    }]\n  }];\n}\n\n// If any of these attributes are present, don't assume the icon is decorative\nfunction isLabeled(attributes) {\n  var labels = ['aria-label', 'aria-labelledby', 'title', 'role'];\n  return labels.some(function (label) {\n    return label in attributes;\n  });\n}\nfunction makeInlineSvgAbstract(params) {\n  var _params$icons = params.icons,\n    main = _params$icons.main,\n    mask = _params$icons.mask,\n    prefix = params.prefix,\n    iconName = params.iconName,\n    transform = params.transform,\n    symbol = params.symbol,\n    maskId = params.maskId,\n    extra = params.extra,\n    _params$watchable = params.watchable,\n    watchable = _params$watchable === void 0 ? false : _params$watchable;\n  var _ref = mask.found ? mask : main,\n    width = _ref.width,\n    height = _ref.height;\n  var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n    return extra.classes.indexOf(c) === -1;\n  }).filter(function (c) {\n    return c !== '' || !!c;\n  }).concat(extra.classes).join(' ');\n  var content = {\n    children: [],\n    attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n      'data-prefix': prefix,\n      'data-icon': iconName,\n      'class': attrClass,\n      'role': extra.attributes.role || 'img',\n      'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n    })\n  };\n  if (!isLabeled(extra.attributes) && !extra.attributes['aria-hidden']) {\n    content.attributes['aria-hidden'] = 'true';\n  }\n  if (watchable) {\n    content.attributes[DATA_FA_I2SVG] = '';\n  }\n  var args = _objectSpread2(_objectSpread2({}, content), {}, {\n    prefix: prefix,\n    iconName: iconName,\n    main: main,\n    mask: mask,\n    maskId: maskId,\n    transform: transform,\n    symbol: symbol,\n    styles: _objectSpread2({}, extra.styles)\n  });\n  var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n      children: [],\n      attributes: {}\n    } : callProvided('generateAbstractIcon', args) || {\n      children: [],\n      attributes: {}\n    },\n    children = _ref2.children,\n    attributes = _ref2.attributes;\n  args.children = children;\n  args.attributes = attributes;\n  if (symbol) {\n    return asSymbol(args);\n  } else {\n    return asIcon(args);\n  }\n}\nfunction makeLayersTextAbstract(params) {\n  var content = params.content,\n    width = params.width,\n    height = params.height,\n    transform = params.transform,\n    extra = params.extra,\n    _params$watchable2 = params.watchable,\n    watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n  var attributes = _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n    class: extra.classes.join(' ')\n  });\n  if (watchable) {\n    attributes[DATA_FA_I2SVG] = '';\n  }\n  var styles = _objectSpread2({}, extra.styles);\n  if (transformIsMeaningful(transform)) {\n    styles['transform'] = transformForCss({\n      transform: transform,\n      startCentered: true,\n      width: width,\n      height: height\n    });\n    styles['-webkit-transform'] = styles['transform'];\n  }\n  var styleString = joinStyles(styles);\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n  return val;\n}\nfunction makeLayersCounterAbstract(params) {\n  var content = params.content,\n    extra = params.extra;\n  var attributes = _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n    class: extra.classes.join(' ')\n  });\n  var styleString = joinStyles(extra.styles);\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n  return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n  var width = icon[0];\n  var height = icon[1];\n  var _icon$slice = icon.slice(4),\n    _icon$slice2 = _slicedToArray(_icon$slice, 1),\n    vectorData = _icon$slice2[0];\n  var element = null;\n  if (Array.isArray(vectorData)) {\n    element = {\n      tag: 'g',\n      attributes: {\n        class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n      },\n      children: [{\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n          fill: 'currentColor',\n          d: vectorData[0]\n        }\n      }, {\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n          fill: 'currentColor',\n          d: vectorData[1]\n        }\n      }]\n    };\n  } else {\n    element = {\n      tag: 'path',\n      attributes: {\n        fill: 'currentColor',\n        d: vectorData\n      }\n    };\n  }\n  return {\n    found: true,\n    width: width,\n    height: height,\n    icon: element\n  };\n}\nvar missingIconResolutionMixin = {\n  found: false,\n  width: 512,\n  height: 512\n};\nfunction maybeNotifyMissing(iconName, prefix) {\n  if (!PRODUCTION && !config.showMissingIcons && iconName) {\n    console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n  }\n}\nfunction findIcon(iconName, prefix) {\n  var givenPrefix = prefix;\n  if (prefix === 'fa' && config.styleDefault !== null) {\n    prefix = getDefaultUsablePrefix();\n  }\n  return new Promise(function (resolve, reject) {\n    if (givenPrefix === 'fa') {\n      var shim = byOldName(iconName) || {};\n      iconName = shim.iconName || iconName;\n      prefix = shim.prefix || prefix;\n    }\n    if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n      var icon = styles$1[prefix][iconName];\n      return resolve(asFoundIcon(icon));\n    }\n    maybeNotifyMissing(iconName, prefix);\n    resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n      icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n    }));\n  });\n}\n\nvar noop$1 = function noop() {};\nvar p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n  mark: noop$1,\n  measure: noop$1\n};\nvar preamble = \"FA \\\"7.2.0\\\"\";\nvar begin = function begin(name) {\n  p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n  return function () {\n    return end(name);\n  };\n};\nvar end = function end(name) {\n  p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n  p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n  begin: begin,\n  end: end\n};\n\nvar noop$2 = function noop() {};\nfunction isWatched(node) {\n  var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n  return typeof i2svg === 'string';\n}\nfunction hasPrefixAndIcon(node) {\n  var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n  var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n  return prefix && icon;\n}\nfunction hasBeenReplaced(node) {\n  return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\nfunction getMutator() {\n  if (config.autoReplaceSvg === true) {\n    return mutators.replace;\n  }\n  var mutator = mutators[config.autoReplaceSvg];\n  return mutator || mutators.replace;\n}\nfunction createElementNS(tag) {\n  return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\nfunction createElement(tag) {\n  return DOCUMENT.createElement(tag);\n}\nfunction convertSVG(abstractObj) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$ceFn = params.ceFn,\n    ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n  if (typeof abstractObj === 'string') {\n    return DOCUMENT.createTextNode(abstractObj);\n  }\n  var tag = ceFn(abstractObj.tag);\n  Object.keys(abstractObj.attributes || []).forEach(function (key) {\n    tag.setAttribute(key, abstractObj.attributes[key]);\n  });\n  var children = abstractObj.children || [];\n  children.forEach(function (child) {\n    tag.appendChild(convertSVG(child, {\n      ceFn: ceFn\n    }));\n  });\n  return tag;\n}\nfunction nodeAsComment(node) {\n  var comment = \" \".concat(node.outerHTML, \" \");\n  /* BEGIN.ATTRIBUTION */\n  comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n  /* END.ATTRIBUTION */\n  return comment;\n}\nvar mutators = {\n  replace: function replace(mutation) {\n    var node = mutation[0];\n    if (node.parentNode) {\n      mutation[1].forEach(function (abstract) {\n        node.parentNode.insertBefore(convertSVG(abstract), node);\n      });\n      if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n        var comment = DOCUMENT.createComment(nodeAsComment(node));\n        node.parentNode.replaceChild(comment, node);\n      } else {\n        node.remove();\n      }\n    }\n  },\n  nest: function nest(mutation) {\n    var node = mutation[0];\n    var abstract = mutation[1];\n\n    // If we already have a replaced node we do not want to continue nesting within it.\n    // Short-circuit to the standard replacement\n    if (~classArray(node).indexOf(config.replacementClass)) {\n      return mutators.replace(mutation);\n    }\n    var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n    delete abstract[0].attributes.id;\n    if (abstract[0].attributes.class) {\n      var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n        if (cls === config.replacementClass || cls.match(forSvg)) {\n          acc.toSvg.push(cls);\n        } else {\n          acc.toNode.push(cls);\n        }\n        return acc;\n      }, {\n        toNode: [],\n        toSvg: []\n      });\n      abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n      if (splitClasses.toNode.length === 0) {\n        node.removeAttribute('class');\n      } else {\n        node.setAttribute('class', splitClasses.toNode.join(' '));\n      }\n    }\n    var newInnerHTML = abstract.map(function (a) {\n      return toHtml(a);\n    }).join('\\n');\n    node.setAttribute(DATA_FA_I2SVG, '');\n    node.innerHTML = newInnerHTML;\n  }\n};\nfunction performOperationSync(op) {\n  op();\n}\nfunction perform(mutations, callback) {\n  var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n  if (mutations.length === 0) {\n    callbackFunction();\n  } else {\n    var frame = performOperationSync;\n    if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n      frame = WINDOW.requestAnimationFrame || performOperationSync;\n    }\n    frame(function () {\n      var mutator = getMutator();\n      var mark = perf.begin('mutate');\n      mutations.map(mutator);\n      mark();\n      callbackFunction();\n    });\n  }\n}\nvar disabled = false;\nfunction disableObservation() {\n  disabled = true;\n}\nfunction enableObservation() {\n  disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n  if (!MUTATION_OBSERVER) {\n    return;\n  }\n  if (!config.observeMutations) {\n    return;\n  }\n  var _options$treeCallback = options.treeCallback,\n    treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n    _options$nodeCallback = options.nodeCallback,\n    nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n    _options$pseudoElemen = options.pseudoElementsCallback,\n    pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n    _options$observeMutat = options.observeMutationsRoot,\n    observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n  mo = new MUTATION_OBSERVER(function (objects) {\n    if (disabled) return;\n    var defaultPrefix = getDefaultUsablePrefix();\n    toArray(objects).forEach(function (mutationRecord) {\n      if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n        if (config.searchPseudoElements) {\n          pseudoElementsCallback(mutationRecord.target);\n        }\n        treeCallback(mutationRecord.target);\n      }\n      if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n        pseudoElementsCallback([mutationRecord.target], true);\n      }\n      if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n        if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n          var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n            prefix = _getCanonicalIcon.prefix,\n            iconName = _getCanonicalIcon.iconName;\n          mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n          if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n        } else if (hasBeenReplaced(mutationRecord.target)) {\n          nodeCallback(mutationRecord.target);\n        }\n      }\n    });\n  });\n  if (!IS_DOM) return;\n  mo.observe(observeMutationsRoot, {\n    childList: true,\n    attributes: true,\n    characterData: true,\n    subtree: true\n  });\n}\nfunction disconnect() {\n  if (!mo) return;\n  mo.disconnect();\n}\n\nfunction styleParser (node) {\n  var style = node.getAttribute('style');\n  var val = [];\n  if (style) {\n    val = style.split(';').reduce(function (acc, style) {\n      var styles = style.split(':');\n      var prop = styles[0];\n      var value = styles.slice(1);\n      if (prop && value.length > 0) {\n        acc[prop] = value.join(':').trim();\n      }\n      return acc;\n    }, {});\n  }\n  return val;\n}\n\nfunction classParser (node) {\n  var existingPrefix = node.getAttribute('data-prefix');\n  var existingIconName = node.getAttribute('data-icon');\n  var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n  var val = getCanonicalIcon(classArray(node));\n  if (!val.prefix) {\n    val.prefix = getDefaultUsablePrefix();\n  }\n  if (existingPrefix && existingIconName) {\n    val.prefix = existingPrefix;\n    val.iconName = existingIconName;\n  }\n  if (val.iconName && val.prefix) {\n    return val;\n  }\n  if (val.prefix && innerText.length > 0) {\n    val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n  }\n  if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n    val.iconName = node.firstChild.data;\n  }\n  return val;\n}\n\nfunction attributesParser (node) {\n  var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n    if (acc.name !== 'class' && acc.name !== 'style') {\n      acc[attr.name] = attr.value;\n    }\n    return acc;\n  }, {});\n  return extraAttributes;\n}\n\nfunction blankMeta() {\n  return {\n    iconName: null,\n    prefix: null,\n    transform: meaninglessTransform,\n    symbol: false,\n    mask: {\n      iconName: null,\n      prefix: null,\n      rest: []\n    },\n    maskId: null,\n    extra: {\n      classes: [],\n      styles: {},\n      attributes: {}\n    }\n  };\n}\nfunction parseMeta(node) {\n  var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    styleParser: true\n  };\n  var _classParser = classParser(node),\n    iconName = _classParser.iconName,\n    prefix = _classParser.prefix,\n    extraClasses = _classParser.rest;\n  var extraAttributes = attributesParser(node);\n  var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n  var extraStyles = parser.styleParser ? styleParser(node) : [];\n  return _objectSpread2({\n    iconName: iconName,\n    prefix: prefix,\n    transform: meaninglessTransform,\n    mask: {\n      iconName: null,\n      prefix: null,\n      rest: []\n    },\n    maskId: null,\n    symbol: false,\n    extra: {\n      classes: extraClasses,\n      styles: extraStyles,\n      attributes: extraAttributes\n    }\n  }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\nfunction generateMutation(node) {\n  var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n    styleParser: false\n  }) : parseMeta(node);\n  if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n    return callProvided('generateLayersText', node, nodeMeta);\n  } else {\n    return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n  }\n}\nfunction getKnownPrefixes() {\n  return [].concat(_toConsumableArray(Ht), _toConsumableArray(lo));\n}\nfunction onTree(root) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  if (!IS_DOM) return Promise.resolve();\n  var htmlClassList = DOCUMENT.documentElement.classList;\n  var hclAdd = function hclAdd(suffix) {\n    return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n  var hclRemove = function hclRemove(suffix) {\n    return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n  var prefixes = config.autoFetchSvg ? getKnownPrefixes() : Z.concat(Object.keys(styles$2));\n  if (!prefixes.includes('fa')) {\n    prefixes.push('fa');\n  }\n  var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p$$1) {\n    return \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n  })).join(', ');\n  if (prefixesDomQuery.length === 0) {\n    return Promise.resolve();\n  }\n  var candidates = [];\n  try {\n    candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n  } catch (e$$1) {\n    // noop\n  }\n  if (candidates.length > 0) {\n    hclAdd('pending');\n    hclRemove('complete');\n  } else {\n    return Promise.resolve();\n  }\n  var mark = perf.begin('onTree');\n  var mutations = candidates.reduce(function (acc, node) {\n    try {\n      var mutation = generateMutation(node);\n      if (mutation) {\n        acc.push(mutation);\n      }\n    } catch (e$$1) {\n      if (!PRODUCTION) {\n        if (e$$1.name === 'MissingIcon') {\n          console.error(e$$1);\n        }\n      }\n    }\n    return acc;\n  }, []);\n  return new Promise(function (resolve, reject) {\n    Promise.all(mutations).then(function (resolvedMutations) {\n      perform(resolvedMutations, function () {\n        hclAdd('active');\n        hclAdd('complete');\n        hclRemove('pending');\n        if (typeof callback === 'function') callback();\n        mark();\n        resolve();\n      });\n    }).catch(function (e$$1) {\n      mark();\n      reject(e$$1);\n    });\n  });\n}\nfunction onNode(node) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  generateMutation(node).then(function (mutation) {\n    if (mutation) {\n      perform([mutation], callback);\n    }\n  });\n}\nfunction resolveIcons(next) {\n  return function (maybeIconDefinition) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n    var mask = params.mask;\n    if (mask) {\n      mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n    }\n    return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n      mask: mask\n    }));\n  };\n}\nvar render = function render(iconDefinition) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$transform = params.transform,\n    transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n    _params$symbol = params.symbol,\n    symbol = _params$symbol === void 0 ? false : _params$symbol,\n    _params$mask = params.mask,\n    mask = _params$mask === void 0 ? null : _params$mask,\n    _params$maskId = params.maskId,\n    maskId = _params$maskId === void 0 ? null : _params$maskId,\n    _params$classes = params.classes,\n    classes = _params$classes === void 0 ? [] : _params$classes,\n    _params$attributes = params.attributes,\n    attributes = _params$attributes === void 0 ? {} : _params$attributes,\n    _params$styles = params.styles,\n    styles = _params$styles === void 0 ? {} : _params$styles;\n  if (!iconDefinition) return;\n  var prefix = iconDefinition.prefix,\n    iconName = iconDefinition.iconName,\n    icon = iconDefinition.icon;\n  return domVariants(_objectSpread2({\n    type: 'icon'\n  }, iconDefinition), function () {\n    callHooks('beforeDOMElementCreation', {\n      iconDefinition: iconDefinition,\n      params: params\n    });\n    return makeInlineSvgAbstract({\n      icons: {\n        main: asFoundIcon(icon),\n        mask: mask ? asFoundIcon(mask.icon) : {\n          found: false,\n          width: null,\n          height: null,\n          icon: {}\n        }\n      },\n      prefix: prefix,\n      iconName: iconName,\n      transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n      symbol: symbol,\n      maskId: maskId,\n      extra: {\n        attributes: attributes,\n        styles: styles,\n        classes: classes\n      }\n    });\n  });\n};\nvar ReplaceElements = {\n  mixout: function mixout() {\n    return {\n      icon: resolveIcons(render)\n    };\n  },\n  hooks: function hooks() {\n    return {\n      mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n        accumulator.treeCallback = onTree;\n        accumulator.nodeCallback = onNode;\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers$$1) {\n    providers$$1.i2svg = function (params) {\n      var _params$node = params.node,\n        node = _params$node === void 0 ? DOCUMENT : _params$node,\n        _params$callback = params.callback,\n        callback = _params$callback === void 0 ? function () {} : _params$callback;\n      return onTree(node, callback);\n    };\n    providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n      var iconName = nodeMeta.iconName,\n        prefix = nodeMeta.prefix,\n        transform = nodeMeta.transform,\n        symbol = nodeMeta.symbol,\n        mask = nodeMeta.mask,\n        maskId = nodeMeta.maskId,\n        extra = nodeMeta.extra;\n      return new Promise(function (resolve, reject) {\n        Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n          found: false,\n          width: 512,\n          height: 512,\n          icon: {}\n        })]).then(function (_ref) {\n          var _ref2 = _slicedToArray(_ref, 2),\n            main = _ref2[0],\n            mask = _ref2[1];\n          resolve([node, makeInlineSvgAbstract({\n            icons: {\n              main: main,\n              mask: mask\n            },\n            prefix: prefix,\n            iconName: iconName,\n            transform: transform,\n            symbol: symbol,\n            maskId: maskId,\n            extra: extra,\n            watchable: true\n          })]);\n        }).catch(reject);\n      });\n    };\n    providers$$1.generateAbstractIcon = function (_ref3) {\n      var children = _ref3.children,\n        attributes = _ref3.attributes,\n        main = _ref3.main,\n        transform = _ref3.transform,\n        styles = _ref3.styles;\n      var styleString = joinStyles(styles);\n      if (styleString.length > 0) {\n        attributes['style'] = styleString;\n      }\n      var nextChild;\n      if (transformIsMeaningful(transform)) {\n        nextChild = callProvided('generateAbstractTransformGrouping', {\n          main: main,\n          transform: transform,\n          containerWidth: main.width,\n          iconWidth: main.width\n        });\n      }\n      children.push(nextChild || main.icon);\n      return {\n        children: children,\n        attributes: attributes\n      };\n    };\n  }\n};\n\nvar Layers = {\n  mixout: function mixout() {\n    return {\n      layer: function layer(assembler) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var _params$classes = params.classes,\n          classes = _params$classes === void 0 ? [] : _params$classes;\n        return domVariants({\n          type: 'layer'\n        }, function () {\n          callHooks('beforeDOMElementCreation', {\n            assembler: assembler,\n            params: params\n          });\n          var children = [];\n          assembler(function (args) {\n            Array.isArray(args) ? args.map(function (a) {\n              children = children.concat(a.abstract);\n            }) : children = children.concat(args.abstract);\n          });\n          return [{\n            tag: 'span',\n            attributes: {\n              class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n            },\n            children: children\n          }];\n        });\n      }\n    };\n  }\n};\n\nvar LayersCounter = {\n  mixout: function mixout() {\n    return {\n      counter: function counter(content) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var _params$title = params.title,\n          title = _params$title === void 0 ? null : _params$title,\n          _params$classes = params.classes,\n          classes = _params$classes === void 0 ? [] : _params$classes,\n          _params$attributes = params.attributes,\n          attributes = _params$attributes === void 0 ? {} : _params$attributes,\n          _params$styles = params.styles,\n          styles = _params$styles === void 0 ? {} : _params$styles;\n        return domVariants({\n          type: 'counter',\n          content: content\n        }, function () {\n          callHooks('beforeDOMElementCreation', {\n            content: content,\n            params: params\n          });\n          return makeLayersCounterAbstract({\n            content: content.toString(),\n            title: title,\n            extra: {\n              attributes: attributes,\n              styles: styles,\n              classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n            }\n          });\n        });\n      }\n    };\n  }\n};\n\nvar LayersText = {\n  mixout: function mixout() {\n    return {\n      text: function text(content) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var _params$transform = params.transform,\n          transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n          _params$classes = params.classes,\n          classes = _params$classes === void 0 ? [] : _params$classes,\n          _params$attributes = params.attributes,\n          attributes = _params$attributes === void 0 ? {} : _params$attributes,\n          _params$styles = params.styles,\n          styles = _params$styles === void 0 ? {} : _params$styles;\n        return domVariants({\n          type: 'text',\n          content: content\n        }, function () {\n          callHooks('beforeDOMElementCreation', {\n            content: content,\n            params: params\n          });\n          return makeLayersTextAbstract({\n            content: content,\n            transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n            extra: {\n              attributes: attributes,\n              styles: styles,\n              classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n            }\n          });\n        });\n      }\n    };\n  },\n  provides: function provides(providers$$1) {\n    providers$$1.generateLayersText = function (node, nodeMeta) {\n      var transform = nodeMeta.transform,\n        extra = nodeMeta.extra;\n      var width = null;\n      var height = null;\n      if (IS_IE) {\n        var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n        var boundingClientRect = node.getBoundingClientRect();\n        width = boundingClientRect.width / computedFontSize;\n        height = boundingClientRect.height / computedFontSize;\n      }\n      return Promise.resolve([node, makeLayersTextAbstract({\n        content: node.innerHTML,\n        width: width,\n        height: height,\n        transform: transform,\n        extra: extra,\n        watchable: true\n      })]);\n    };\n  }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nvar _FONT_FAMILY_WEIGHT_TO_PREFIX = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n  FontAwesome: {\n    normal: 'fas',\n    400: 'fas'\n  }\n}), Kt), fo), hl);\nvar FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce(function (acc, key) {\n  acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n  return acc;\n}, {});\nvar FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce(function (acc, fontFamily) {\n  var weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n  acc[fontFamily] = weights[900] || _toConsumableArray(Object.entries(weights))[0][1];\n  return acc;\n}, {});\n\n// Return hex value of *first* character in `content`\nfunction hexValueFromContent(content) {\n  var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n  return toHex(_toConsumableArray(cleaned)[0] || '');\n}\n\n// Check if it's a secondary Duotone layer, by checking if:\n// - Unicode value in `content` is repeated\n// - Unicode value in `content` is above 0x10000\n// - The \"ss01\" font feature is enabled on the `content`\nfunction isSecondaryLayer(styles) {\n  var hasStylisticSet = styles.getPropertyValue('font-feature-settings').includes('ss01');\n  var content = styles.getPropertyValue('content');\n  var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n  var codePoint = cleaned.codePointAt(0);\n  var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n  var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n  return isPrependTen || isDoubled || hasStylisticSet;\n}\nfunction getPrefix(fontFamily, fontWeight) {\n  var fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n  var fontWeightInteger = parseInt(fontWeight);\n  var fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n  return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\nfunction replaceForPosition(node, position) {\n  var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n  return new Promise(function (resolve, reject) {\n    if (node.getAttribute(pendingAttribute) !== null) {\n      // This node is already being processed\n      return resolve();\n    }\n    var children = toArray(node.children);\n    var alreadyProcessedPseudoElement = children.filter(function (c$$1) {\n      return c$$1.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n    })[0];\n    var styles = WINDOW.getComputedStyle(node, position);\n    var fontFamily = styles.getPropertyValue('font-family');\n    var fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n    var fontWeight = styles.getPropertyValue('font-weight');\n    var content = styles.getPropertyValue('content');\n    if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\n      // If we've already processed it but the current computed style does not result in a font-family,\n      // that probably means that a class name that was previously present to make the icon has been\n      // removed. So we now should delete the icon.\n      node.removeChild(alreadyProcessedPseudoElement);\n      return resolve();\n    } else if (fontFamilyMatch && content !== 'none' && content !== '') {\n      var _content = styles.getPropertyValue('content');\n      var prefix = getPrefix(fontFamily, fontWeight);\n      var hexValue = hexValueFromContent(_content);\n      var isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n      var isSecondary = isSecondaryLayer(styles);\n      var iconName = byUnicode(prefix, hexValue);\n      var iconIdentifier = iconName;\n      if (isV4) {\n        var iconName4 = byOldUnicode(hexValue);\n        if (iconName4.iconName && iconName4.prefix) {\n          iconName = iconName4.iconName;\n          prefix = iconName4.prefix;\n        }\n      }\n\n      // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n      // already done so with the same prefix and iconName\n      if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n        node.setAttribute(pendingAttribute, iconIdentifier);\n        if (alreadyProcessedPseudoElement) {\n          // Delete the old one, since we're replacing it with a new one\n          node.removeChild(alreadyProcessedPseudoElement);\n        }\n        var meta = blankMeta();\n        var extra = meta.extra;\n        extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n        findIcon(iconName, prefix).then(function (main) {\n          var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n            icons: {\n              main: main,\n              mask: emptyCanonicalIcon()\n            },\n            prefix: prefix,\n            iconName: iconIdentifier,\n            extra: extra,\n            watchable: true\n          }));\n          var element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n          if (position === '::before') {\n            node.insertBefore(element, node.firstChild);\n          } else {\n            node.appendChild(element);\n          }\n          element.outerHTML = abstract.map(function (a$$1) {\n            return toHtml(a$$1);\n          }).join('\\n');\n          node.removeAttribute(pendingAttribute);\n          resolve();\n        }).catch(reject);\n      } else {\n        resolve();\n      }\n    } else {\n      resolve();\n    }\n  });\n}\nfunction replace(node) {\n  return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\nfunction processable(node) {\n  return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\nvar hasPseudoElement = function hasPseudoElement(selector) {\n  return !!selector && PSEUDO_ELEMENTS.some(function (pseudoSelector) {\n    return selector.includes(pseudoSelector);\n  });\n};\n\n// Return selectors from all available stylesheets that have\n// pseudo-elements defined.\nvar parseCSSRuleForPseudos = function parseCSSRuleForPseudos(selectorText) {\n  if (!selectorText) return [];\n  var selectorSet = new Set();\n  var selectors = selectorText.split(/,(?![^()]*\\))/).map(function (s$$1) {\n    return s$$1.trim();\n  });\n  selectors = selectors.flatMap(function (selector) {\n    return selector.includes('(') ? selector : selector.split(',').map(function (s$$1) {\n      return s$$1.trim();\n    });\n  });\n  var _iterator = _createForOfIteratorHelper(selectors),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var selector = _step.value;\n      if (hasPseudoElement(selector)) {\n        // Remove pseudo-elements from the selector\n        var selectorWithoutPseudo = PSEUDO_ELEMENTS.reduce(function (acc, pseudoSelector) {\n          return acc.replace(pseudoSelector, '');\n        }, selector);\n        if (selectorWithoutPseudo !== '' && selectorWithoutPseudo !== '*') {\n          selectorSet.add(selectorWithoutPseudo);\n        }\n      }\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n  return selectorSet;\n};\nfunction searchPseudoElements(root) {\n  var useAsNodeList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  if (!IS_DOM) return;\n  var nodeList;\n  if (useAsNodeList) {\n    nodeList = root;\n  } else if (config.searchPseudoElementsFullScan) {\n    nodeList = root.querySelectorAll('*');\n  } else {\n    // Get elements that have pseudo elements defined in the CSS\n    var selectorSet = new Set();\n    var _iterator2 = _createForOfIteratorHelper(document.styleSheets),\n      _step2;\n    try {\n      for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n        var stylesheet = _step2.value;\n        try {\n          var _iterator3 = _createForOfIteratorHelper(stylesheet.cssRules),\n            _step3;\n          try {\n            for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n              var rule = _step3.value;\n              var parsedSelectors = parseCSSRuleForPseudos(rule.selectorText);\n              var _iterator4 = _createForOfIteratorHelper(parsedSelectors),\n                _step4;\n              try {\n                for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n                  var selector = _step4.value;\n                  selectorSet.add(selector);\n                }\n              } catch (err) {\n                _iterator4.e(err);\n              } finally {\n                _iterator4.f();\n              }\n            }\n          } catch (err) {\n            _iterator3.e(err);\n          } finally {\n            _iterator3.f();\n          }\n        } catch (e$$1) {\n          if (config.searchPseudoElementsWarnings) {\n            console.warn(\"Font Awesome: cannot parse stylesheet: \".concat(stylesheet.href, \" (\").concat(e$$1.message, \")\\nIf it declares any Font Awesome CSS pseudo-elements, they will not be rendered as SVG icons. Add crossorigin=\\\"anonymous\\\" to the <link>, enable searchPseudoElementsFullScan for slower but more thorough DOM parsing, or suppress this warning by setting searchPseudoElementsWarnings to false.\"));\n          }\n        }\n      }\n    } catch (err) {\n      _iterator2.e(err);\n    } finally {\n      _iterator2.f();\n    }\n    if (!selectorSet.size) return;\n    var cleanSelectors = Array.from(selectorSet).join(', ');\n    try {\n      nodeList = root.querySelectorAll(cleanSelectors);\n    } catch (_unused) {} // eslint-disable-line no-empty\n  }\n  return new Promise(function (resolve, reject) {\n    var operations = toArray(nodeList).filter(processable).map(replace);\n    var end = perf.begin('searchPseudoElements');\n    disableObservation();\n    Promise.all(operations).then(function () {\n      end();\n      enableObservation();\n      resolve();\n    }).catch(function () {\n      end();\n      enableObservation();\n      reject();\n    });\n  });\n}\nvar PseudoElements = {\n  hooks: function hooks() {\n    return {\n      mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n        accumulator.pseudoElementsCallback = searchPseudoElements;\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers) {\n    providers.pseudoElements2svg = function (params) {\n      var _params$node = params.node,\n        node = _params$node === void 0 ? DOCUMENT : _params$node;\n      if (config.searchPseudoElements) {\n        searchPseudoElements(node);\n      }\n    };\n  }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n  mixout: function mixout() {\n    return {\n      dom: {\n        unwatch: function unwatch() {\n          disableObservation();\n          _unwatched = true;\n        }\n      }\n    };\n  },\n  hooks: function hooks() {\n    return {\n      bootstrap: function bootstrap() {\n        observe(chainHooks('mutationObserverCallbacks', {}));\n      },\n      noAuto: function noAuto() {\n        disconnect();\n      },\n      watch: function watch(params) {\n        var observeMutationsRoot = params.observeMutationsRoot;\n        if (_unwatched) {\n          enableObservation();\n        } else {\n          observe(chainHooks('mutationObserverCallbacks', {\n            observeMutationsRoot: observeMutationsRoot\n          }));\n        }\n      }\n    };\n  }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n  var transform = {\n    size: 16,\n    x: 0,\n    y: 0,\n    flipX: false,\n    flipY: false,\n    rotate: 0\n  };\n  return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n    var parts = n.toLowerCase().split('-');\n    var first = parts[0];\n    var rest = parts.slice(1).join('-');\n    if (first && rest === 'h') {\n      acc.flipX = true;\n      return acc;\n    }\n    if (first && rest === 'v') {\n      acc.flipY = true;\n      return acc;\n    }\n    rest = parseFloat(rest);\n    if (isNaN(rest)) {\n      return acc;\n    }\n    switch (first) {\n      case 'grow':\n        acc.size = acc.size + rest;\n        break;\n      case 'shrink':\n        acc.size = acc.size - rest;\n        break;\n      case 'left':\n        acc.x = acc.x - rest;\n        break;\n      case 'right':\n        acc.x = acc.x + rest;\n        break;\n      case 'up':\n        acc.y = acc.y - rest;\n        break;\n      case 'down':\n        acc.y = acc.y + rest;\n        break;\n      case 'rotate':\n        acc.rotate = acc.rotate + rest;\n        break;\n    }\n    return acc;\n  }, transform);\n};\nvar PowerTransforms = {\n  mixout: function mixout() {\n    return {\n      parse: {\n        transform: function transform(transformString) {\n          return parseTransformString(transformString);\n        }\n      }\n    };\n  },\n  hooks: function hooks() {\n    return {\n      parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n        var transformString = node.getAttribute('data-fa-transform');\n        if (transformString) {\n          accumulator.transform = parseTransformString(transformString);\n        }\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers) {\n    providers.generateAbstractTransformGrouping = function (_ref) {\n      var main = _ref.main,\n        transform = _ref.transform,\n        containerWidth = _ref.containerWidth,\n        iconWidth = _ref.iconWidth;\n      var outer = {\n        transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n      };\n      var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n      var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n      var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n      var inner = {\n        transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n      };\n      var path = {\n        transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n      };\n      var operations = {\n        outer: outer,\n        inner: inner,\n        path: path\n      };\n      return {\n        tag: 'g',\n        attributes: _objectSpread2({}, operations.outer),\n        children: [{\n          tag: 'g',\n          attributes: _objectSpread2({}, operations.inner),\n          children: [{\n            tag: main.icon.tag,\n            children: main.icon.children,\n            attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n          }]\n        }]\n      };\n    };\n  }\n};\n\nvar ALL_SPACE = {\n  x: 0,\n  y: 0,\n  width: '100%',\n  height: '100%'\n};\nfunction fillBlack(abstract) {\n  var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  if (abstract.attributes && (abstract.attributes.fill || force)) {\n    abstract.attributes.fill = 'black';\n  }\n  return abstract;\n}\nfunction deGroup(abstract) {\n  if (abstract.tag === 'g') {\n    return abstract.children;\n  } else {\n    return [abstract];\n  }\n}\nvar Masks = {\n  hooks: function hooks() {\n    return {\n      parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n        var maskData = node.getAttribute('data-fa-mask');\n        var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n          return i.trim();\n        }));\n        if (!mask.prefix) {\n          mask.prefix = getDefaultUsablePrefix();\n        }\n        accumulator.mask = mask;\n        accumulator.maskId = node.getAttribute('data-fa-mask-id');\n        return accumulator;\n      }\n    };\n  },\n  provides: function provides(providers) {\n    providers.generateAbstractMask = function (_ref) {\n      var children = _ref.children,\n        attributes = _ref.attributes,\n        main = _ref.main,\n        mask = _ref.mask,\n        explicitMaskId = _ref.maskId,\n        transform = _ref.transform;\n      var mainWidth = main.width,\n        mainPath = main.icon;\n      var maskWidth = mask.width,\n        maskPath = mask.icon;\n      var trans = transformForSvg({\n        transform: transform,\n        containerWidth: maskWidth,\n        iconWidth: mainWidth\n      });\n      var maskRect = {\n        tag: 'rect',\n        attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n          fill: 'white'\n        })\n      };\n      var maskInnerGroupChildrenMixin = mainPath.children ? {\n        children: mainPath.children.map(fillBlack)\n      } : {};\n      var maskInnerGroup = {\n        tag: 'g',\n        attributes: _objectSpread2({}, trans.inner),\n        children: [fillBlack(_objectSpread2({\n          tag: mainPath.tag,\n          attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n        }, maskInnerGroupChildrenMixin))]\n      };\n      var maskOuterGroup = {\n        tag: 'g',\n        attributes: _objectSpread2({}, trans.outer),\n        children: [maskInnerGroup]\n      };\n      var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n      var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n      var maskTag = {\n        tag: 'mask',\n        attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n          id: maskId,\n          maskUnits: 'userSpaceOnUse',\n          maskContentUnits: 'userSpaceOnUse'\n        }),\n        children: [maskRect, maskOuterGroup]\n      };\n      var defs = {\n        tag: 'defs',\n        children: [{\n          tag: 'clipPath',\n          attributes: {\n            id: clipId\n          },\n          children: deGroup(maskPath)\n        }, maskTag]\n      };\n      children.push(defs, {\n        tag: 'rect',\n        attributes: _objectSpread2({\n          'fill': 'currentColor',\n          'clip-path': \"url(#\".concat(clipId, \")\"),\n          'mask': \"url(#\".concat(maskId, \")\")\n        }, ALL_SPACE)\n      });\n      return {\n        children: children,\n        attributes: attributes\n      };\n    };\n  }\n};\n\nvar MissingIconIndicator = {\n  provides: function provides(providers) {\n    var reduceMotion = false;\n    if (WINDOW.matchMedia) {\n      reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    }\n    providers.missingIconAbstract = function () {\n      var gChildren = [];\n      var FILL = {\n        fill: 'currentColor'\n      };\n      var ANIMATION_BASE = {\n        attributeType: 'XML',\n        repeatCount: 'indefinite',\n        dur: '2s'\n      };\n\n      // Ring\n      gChildren.push({\n        tag: 'path',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n        })\n      });\n      var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n        attributeName: 'opacity'\n      });\n      var dot = {\n        tag: 'circle',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          cx: '256',\n          cy: '364',\n          r: '28'\n        }),\n        children: []\n      };\n      if (!reduceMotion) {\n        dot.children.push({\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n            attributeName: 'r',\n            values: '28;14;28;28;14;28;'\n          })\n        }, {\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n            values: '1;0;1;1;0;1;'\n          })\n        });\n      }\n      gChildren.push(dot);\n      gChildren.push({\n        tag: 'path',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          opacity: '1',\n          d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n        }),\n        children: reduceMotion ? [] : [{\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n            values: '1;0;0;0;0;1;'\n          })\n        }]\n      });\n      if (!reduceMotion) {\n        // Exclamation\n        gChildren.push({\n          tag: 'path',\n          attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n            opacity: '0',\n            d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n          }),\n          children: [{\n            tag: 'animate',\n            attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n              values: '0;0;1;1;0;0;'\n            })\n          }]\n        });\n      }\n      return {\n        tag: 'g',\n        attributes: {\n          class: 'missing'\n        },\n        children: gChildren\n      };\n    };\n  }\n};\n\nvar SvgSymbols = {\n  hooks: function hooks() {\n    return {\n      parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n        var symbolData = node.getAttribute('data-fa-symbol');\n        var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n        accumulator['symbol'] = symbol;\n        return accumulator;\n      }\n    };\n  }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n  mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import React, { useId, useMemo } from 'react';\nimport { config, parse, icon, text, counter } from '@fortawesome/fontawesome-svg-core';\nimport { jsx } from 'react/jsx-runtime';\n\n// src/components/FontAwesomeIcon.tsx\n\n// src/utils/camelize.ts\nfunction _isNumerical(object) {\n  object = object - 0;\n  return object === object;\n}\nfunction camelize(string) {\n  if (_isNumerical(string)) {\n    return string;\n  }\n  string = string.replace(/[_-]+(.)?/g, (_, chr) => {\n    return chr ? chr.toUpperCase() : \"\";\n  });\n  return string.charAt(0).toLowerCase() + string.slice(1);\n}\nvar createGradientStops = (stop, index) => React.createElement(\"stop\", {\n  key: `${index}-${stop.offset}`,\n  offset: stop.offset,\n  stopColor: stop.color,\n  ...stop.opacity !== void 0 && { stopOpacity: stop.opacity }\n});\n\n// src/converter.ts\nfunction capitalize(val) {\n  return val.charAt(0).toUpperCase() + val.slice(1);\n}\nvar styleCache = /* @__PURE__ */ new Map();\nvar STYLE_CACHE_LIMIT = 1e3;\nfunction styleToObject(style) {\n  if (styleCache.has(style)) {\n    return styleCache.get(style);\n  }\n  const result = {};\n  let start = 0;\n  const len = style.length;\n  while (start < len) {\n    const semicolonIndex = style.indexOf(\";\", start);\n    const end = semicolonIndex === -1 ? len : semicolonIndex;\n    const pair = style.slice(start, end).trim();\n    if (pair) {\n      const colonIndex = pair.indexOf(\":\");\n      if (colonIndex > 0) {\n        const rawProp = pair.slice(0, colonIndex).trim();\n        const value = pair.slice(colonIndex + 1).trim();\n        if (rawProp && value) {\n          const prop = camelize(rawProp);\n          result[prop.startsWith(\"webkit\") ? capitalize(prop) : prop] = value;\n        }\n      }\n    }\n    start = end + 1;\n  }\n  if (styleCache.size === STYLE_CACHE_LIMIT) {\n    const oldestKey = styleCache.keys().next().value;\n    if (oldestKey) {\n      styleCache.delete(oldestKey);\n    }\n  }\n  styleCache.set(style, result);\n  return result;\n}\nfunction convert(createElement, element, extraProps = {}) {\n  if (typeof element === \"string\") {\n    return element;\n  }\n  const children = (element.children || []).map((child) => {\n    let element2 = child;\n    if ((\"fill\" in extraProps || extraProps.gradientFill) && child.tag === \"path\" && \"fill\" in child.attributes) {\n      element2 = {\n        ...child,\n        attributes: {\n          ...child.attributes,\n          fill: void 0\n        }\n      };\n    }\n    return convert(createElement, element2);\n  });\n  const elementAttributes = element.attributes || {};\n  const attrs = {};\n  for (const [key, val] of Object.entries(elementAttributes)) {\n    switch (true) {\n      case key === \"class\": {\n        attrs.className = val;\n        break;\n      }\n      case key === \"style\": {\n        attrs.style = styleToObject(String(val));\n        break;\n      }\n      case key.startsWith(\"aria-\"):\n      case key.startsWith(\"data-\"): {\n        attrs[key.toLowerCase()] = val;\n        break;\n      }\n      default: {\n        attrs[camelize(key)] = val;\n      }\n    }\n  }\n  const {\n    style: existingStyle,\n    role: existingRole,\n    \"aria-label\": ariaLabel,\n    gradientFill,\n    ...remaining\n  } = extraProps;\n  if (existingStyle) {\n    attrs.style = attrs.style ? { ...attrs.style, ...existingStyle } : existingStyle;\n  }\n  if (existingRole) {\n    attrs.role = existingRole;\n  }\n  if (ariaLabel) {\n    attrs[\"aria-label\"] = ariaLabel;\n    attrs[\"aria-hidden\"] = \"false\";\n  }\n  if (gradientFill) {\n    attrs.fill = `url(#${gradientFill.id})`;\n    const {\n      type: gradientType,\n      stops: gradientStops = [],\n      ...gradientProps\n    } = gradientFill;\n    children.unshift(\n      createElement(\n        gradientType === \"linear\" ? \"linearGradient\" : \"radialGradient\",\n        {\n          ...gradientProps,\n          id: gradientFill.id\n        },\n        gradientStops.map(createGradientStops)\n      )\n    );\n  }\n  return createElement(element.tag, { ...attrs, ...remaining }, ...children);\n}\nvar makeReactConverter = convert.bind(null, React.createElement);\nvar useAccessibilityId = (id, hasAccessibleProps) => {\n  const generatedId = useId();\n  return id || (hasAccessibleProps ? generatedId : void 0);\n};\n\n// src/logger.ts\nvar Logger = class {\n  constructor(scope = \"react-fontawesome\") {\n    this.enabled = false;\n    let IS_DEV = false;\n    try {\n      IS_DEV = typeof process !== \"undefined\" && process.env?.NODE_ENV === \"development\";\n    } catch {\n    }\n    this.scope = scope;\n    this.enabled = IS_DEV;\n  }\n  /**\n   * Logs messages to the console if not in production.\n   * @param args - The message and/or data to log.\n   */\n  log(...args) {\n    if (!this.enabled) return;\n    console.log(`[${this.scope}]`, ...args);\n  }\n  /**\n   * Logs warnings to the console if not in production.\n   * @param args - The warning message and/or data to log.\n   */\n  warn(...args) {\n    if (!this.enabled) return;\n    console.warn(`[${this.scope}]`, ...args);\n  }\n  /**\n   * Logs errors to the console if not in production.\n   * @param args - The error message and/or data to log.\n   */\n  error(...args) {\n    if (!this.enabled) return;\n    console.error(`[${this.scope}]`, ...args);\n  }\n};\ntypeof process !== \"undefined\" && process.env?.FA_VERSION || \"7.0.0\";\nvar SVG_CORE_VERSION = (\n  // @ts-expect-error TS2872 - Expression is always truthy - This is true when v7 of SVGCore is used, but not when v6 is used.\n  // This is the point of this check - if the property exists on config, we have v7, otherwise we have v6.\n  // TS is checking this against the dev dependencies which uses v7, so it reports a false error here.\n  (\"searchPseudoElementsFullScan\" in config && typeof config.searchPseudoElementsFullScan === \"boolean\" ? \"7.0.0\" : \"6.0.0\")\n);\nvar IS_VERSION_7_OR_LATER = Number.parseInt(SVG_CORE_VERSION) >= 7;\nvar getIsVersion7OrLater = () => IS_VERSION_7_OR_LATER;\nvar DEFAULT_CLASSNAME_PREFIX = \"fa\";\nvar ANIMATION_CLASSES = {\n  beat: \"fa-beat\",\n  fade: \"fa-fade\",\n  beatFade: \"fa-beat-fade\",\n  bounce: \"fa-bounce\",\n  shake: \"fa-shake\",\n  spin: \"fa-spin\",\n  spinPulse: \"fa-spin-pulse\",\n  spinReverse: \"fa-spin-reverse\",\n  pulse: \"fa-pulse\"\n};\nvar PULL_CLASSES = {\n  left: \"fa-pull-left\",\n  right: \"fa-pull-right\"\n};\nvar ROTATE_CLASSES = {\n  \"90\": \"fa-rotate-90\",\n  \"180\": \"fa-rotate-180\",\n  \"270\": \"fa-rotate-270\"\n};\nvar SIZE_CLASSES = {\n  \"2xs\": \"fa-2xs\",\n  xs: \"fa-xs\",\n  sm: \"fa-sm\",\n  lg: \"fa-lg\",\n  xl: \"fa-xl\",\n  \"2xl\": \"fa-2xl\",\n  \"1x\": \"fa-1x\",\n  \"2x\": \"fa-2x\",\n  \"3x\": \"fa-3x\",\n  \"4x\": \"fa-4x\",\n  \"5x\": \"fa-5x\",\n  \"6x\": \"fa-6x\",\n  \"7x\": \"fa-7x\",\n  \"8x\": \"fa-8x\",\n  \"9x\": \"fa-9x\",\n  \"10x\": \"fa-10x\"\n};\nvar STYLE_CLASSES = {\n  border: \"fa-border\",\n  /** @deprecated */\n  fixedWidth: \"fa-fw\",\n  flip: \"fa-flip\",\n  flipHorizontal: \"fa-flip-horizontal\",\n  flipVertical: \"fa-flip-vertical\",\n  inverse: \"fa-inverse\",\n  rotateBy: \"fa-rotate-by\",\n  swapOpacity: \"fa-swap-opacity\",\n  widthAuto: \"fa-width-auto\"\n};\nvar LAYER_CLASSES = {\n  default: \"fa-layers\"\n};\n\n// src/utils/get-class-list-from-props.ts\nfunction withPrefix(cls) {\n  const prefix = config.cssPrefix || config.familyPrefix || DEFAULT_CLASSNAME_PREFIX;\n  return prefix === DEFAULT_CLASSNAME_PREFIX ? cls : cls.replace(\n    new RegExp(String.raw`(?<=^|\\s)${DEFAULT_CLASSNAME_PREFIX}-`, \"g\"),\n    `${prefix}-`\n  );\n}\nfunction getClassListFromProps(props) {\n  const {\n    beat,\n    fade,\n    beatFade,\n    bounce,\n    shake,\n    spin,\n    spinPulse,\n    spinReverse,\n    pulse,\n    fixedWidth,\n    inverse,\n    border,\n    flip,\n    size,\n    rotation,\n    pull,\n    swapOpacity,\n    rotateBy,\n    widthAuto,\n    className\n  } = props;\n  const result = [];\n  if (className) result.push(...className.split(\" \"));\n  if (beat) result.push(ANIMATION_CLASSES.beat);\n  if (fade) result.push(ANIMATION_CLASSES.fade);\n  if (beatFade) result.push(ANIMATION_CLASSES.beatFade);\n  if (bounce) result.push(ANIMATION_CLASSES.bounce);\n  if (shake) result.push(ANIMATION_CLASSES.shake);\n  if (spin) result.push(ANIMATION_CLASSES.spin);\n  if (spinReverse) result.push(ANIMATION_CLASSES.spinReverse);\n  if (spinPulse) result.push(ANIMATION_CLASSES.spinPulse);\n  if (pulse) result.push(ANIMATION_CLASSES.pulse);\n  if (fixedWidth) result.push(STYLE_CLASSES.fixedWidth);\n  if (inverse) result.push(STYLE_CLASSES.inverse);\n  if (border) result.push(STYLE_CLASSES.border);\n  if (flip === true) result.push(STYLE_CLASSES.flip);\n  if (flip === \"horizontal\" || flip === \"both\") {\n    result.push(STYLE_CLASSES.flipHorizontal);\n  }\n  if (flip === \"vertical\" || flip === \"both\") {\n    result.push(STYLE_CLASSES.flipVertical);\n  }\n  if (size !== void 0 && size !== null) result.push(SIZE_CLASSES[size]);\n  if (rotation !== void 0 && rotation !== null && rotation !== 0) {\n    result.push(ROTATE_CLASSES[rotation]);\n  }\n  if (pull !== void 0 && pull !== null) result.push(PULL_CLASSES[pull]);\n  if (swapOpacity) result.push(STYLE_CLASSES.swapOpacity);\n  if (!getIsVersion7OrLater()) return result;\n  if (rotateBy) result.push(STYLE_CLASSES.rotateBy);\n  if (widthAuto) result.push(STYLE_CLASSES.widthAuto);\n  const prefix = config.cssPrefix || config.familyPrefix || DEFAULT_CLASSNAME_PREFIX;\n  return prefix === DEFAULT_CLASSNAME_PREFIX ? result : (\n    // TODO: see if we can achieve custom prefix support without iterating\n    // eslint-disable-next-line unicorn/no-array-callback-reference\n    result.map(withPrefix)\n  );\n}\nvar isIconDefinition = (icon) => typeof icon === \"object\" && \"icon\" in icon && !!icon.icon;\nfunction normalizeIconArgs(icon) {\n  if (!icon) {\n    return void 0;\n  }\n  if (isIconDefinition(icon)) {\n    return icon;\n  }\n  return parse.icon(icon);\n}\n\n// src/utils/typed-object-keys.ts\nfunction typedObjectKeys(obj) {\n  return Object.keys(obj);\n}\n\n// src/components/FontAwesomeIcon.tsx\nvar logger = new Logger(\"FontAwesomeIcon\");\nvar DEFAULT_PROPS = {\n  border: false,\n  className: \"\",\n  mask: void 0,\n  maskId: void 0,\n  fixedWidth: false,\n  inverse: false,\n  flip: false,\n  icon: void 0,\n  listItem: false,\n  pull: void 0,\n  pulse: false,\n  rotation: void 0,\n  rotateBy: false,\n  size: void 0,\n  spin: false,\n  spinPulse: false,\n  spinReverse: false,\n  beat: false,\n  fade: false,\n  beatFade: false,\n  bounce: false,\n  shake: false,\n  symbol: false,\n  title: \"\",\n  titleId: void 0,\n  transform: void 0,\n  swapOpacity: false,\n  widthAuto: false\n};\nvar DEFAULT_PROP_KEYS = new Set(Object.keys(DEFAULT_PROPS));\nvar FontAwesomeIcon = React.forwardRef((props, ref) => {\n  const allProps = { ...DEFAULT_PROPS, ...props };\n  const {\n    icon: iconArgs,\n    mask: maskArgs,\n    symbol,\n    title,\n    titleId: titleIdFromProps,\n    maskId: maskIdFromProps,\n    transform\n  } = allProps;\n  const maskId = useAccessibilityId(maskIdFromProps, Boolean(maskArgs));\n  const titleId = useAccessibilityId(titleIdFromProps, Boolean(title));\n  const iconLookup = normalizeIconArgs(iconArgs);\n  if (!iconLookup) {\n    logger.error(\"Icon lookup is undefined\", iconArgs);\n    return null;\n  }\n  const classList = getClassListFromProps(allProps);\n  const transformProps = typeof transform === \"string\" ? parse.transform(transform) : transform;\n  const normalizedMaskArgs = normalizeIconArgs(maskArgs);\n  const renderedIcon = icon(iconLookup, {\n    ...classList.length > 0 && { classes: classList },\n    ...transformProps && { transform: transformProps },\n    ...normalizedMaskArgs && { mask: normalizedMaskArgs },\n    symbol,\n    title,\n    titleId,\n    maskId\n  });\n  if (!renderedIcon) {\n    logger.error(\"Could not find icon\", iconLookup);\n    return null;\n  }\n  const { abstract } = renderedIcon;\n  const extraProps = { ref };\n  for (const key of typedObjectKeys(allProps)) {\n    if (DEFAULT_PROP_KEYS.has(key)) {\n      continue;\n    }\n    extraProps[key] = allProps[key];\n  }\n  return makeReactConverter(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = \"FontAwesomeIcon\";\nvar DEFAULT_CLASSNAMES = `${LAYER_CLASSES.default} ${STYLE_CLASSES.fixedWidth}`;\nvar FontAwesomeLayers = ({\n  children,\n  className,\n  size,\n  ...attributes\n}) => {\n  const prefixedDefaultClasses = withPrefix(DEFAULT_CLASSNAMES);\n  const classes = className ? `${prefixedDefaultClasses} ${className}` : prefixedDefaultClasses;\n  const element = /* @__PURE__ */ jsx(\"span\", { ...attributes, className: classes, children });\n  if (size) {\n    return /* @__PURE__ */ jsx(\"div\", { className: withPrefix(`fa-${size}`), children: element });\n  }\n  return element;\n};\nvar LayersText = ({\n  text: text$1,\n  className,\n  inverse,\n  transform,\n  style,\n  ...attributes\n}) => {\n  const textAbstractElement = useMemo(() => {\n    const textObject = text(text$1, {\n      classes: [\n        ...className?.split(\" \") || [],\n        ...inverse ? [STYLE_CLASSES.inverse] : []\n      ],\n      transform: typeof transform === \"string\" ? parse.transform(transform) : transform\n    });\n    return textObject.abstract[0];\n  }, [text$1, transform, className, inverse]);\n  return makeReactConverter(textAbstractElement, { ...attributes, style });\n};\nvar LayersCounter = ({\n  count,\n  className,\n  style,\n  ...attributes\n}) => {\n  const counterAbstractElement = useMemo(\n    () => counter(count, {\n      classes: className?.split(\" \")\n    }).abstract[0],\n    [count, className]\n  );\n  return makeReactConverter(counterAbstractElement, { ...attributes, style });\n};\n\nexport { FontAwesomeIcon, FontAwesomeLayers, LayersCounter, LayersText };\n","/*!\n * Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2026 Fonticons, Inc.\n */\nvar prefix = \"fas\";\nvar fa0 = {\n  prefix: 'fas',\n  iconName: '0',\n  icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160l0 128c0 88.4-71.6 160-160 160S0 408.4 0 320L0 192zM160 96c-53 0-96 43-96 96l0 128c0 53 43 96 96 96s96-43 96-96l0-128c0-53-43-96-96-96z\"]\n};\nvar fa1 = {\n  prefix: 'fas',\n  iconName: '1',\n  icon: [256, 512, [], \"31\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l64 0 0 320-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-352c0-17.7-14.3-32-32-32L32 32z\"]\n};\nvar fa2 = {\n  prefix: 'fas',\n  iconName: '2',\n  icon: [384, 512, [], \"32\", \"M48 64c0-17.7 14.3-32 32-32l171 0c60.2 0 109 48.8 109 109 0 43.8-26.2 83.3-66.4 100.4l-139.1 59C119 315.4 96 350.2 96 388.7l0 27.3 224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-17.7 0-32-14.3-32-32l0-59.3c0-64.2 38.4-122.2 97.5-147.3l139.1-59c16.6-7.1 27.4-23.4 27.4-41.4 0-24.9-20.2-45-45-45L80 96C62.3 96 48 81.7 48 64z\"]\n};\nvar fa3 = {\n  prefix: 'fas',\n  iconName: '3',\n  icon: [320, 512, [], \"33\", \"M80 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l112 0c35.3 0 64-28.7 64-64s-28.7-64-64-64L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l160 0c70.7 0 128 57.3 128 128 0 38.2-16.8 72.5-43.3 96 26.6 23.5 43.3 57.8 43.3 96 0 70.7-57.3 128-128 128L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c35.3 0 64-28.7 64-64s-28.7-64-64-64L80 288z\"]\n};\nvar fa4 = {\n  prefix: 'fas',\n  iconName: '4',\n  icon: [384, 512, [], \"34\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 288c0 35.3 28.7 64 64 64l192 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 224-192 0 0-224z\"]\n};\nvar fa5 = {\n  prefix: 'fas',\n  iconName: '5',\n  icon: [320, 512, [], \"35\", \"M0 64C0 46.3 14.3 32 32 32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0 0 112 120 0c75.1 0 136 60.9 136 136S259.1 480 184 480L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l152 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L32 272c-17.7 0-32-14.3-32-32L0 64z\"]\n};\nvar fa6 = {\n  prefix: 'fas',\n  iconName: '6',\n  icon: [384, 512, [], \"36\", \"M256 32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-88 0c-48.6 0-88 39.4-88 88l0 32.2c22.9-15.3 50.4-24.2 80-24.2l48 0c79.5 0 144 64.5 144 144S287.5 480 208 480l-48 0C80.5 480 16 415.5 16 336l0-152C16 100.1 84.1 32 168 32l88 0zM80 336c0 44.2 35.8 80 80 80l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80l-48 0c-44.2 0-80 35.8-80 80z\"]\n};\nvar fa7 = {\n  prefix: 'fas',\n  iconName: '7',\n  icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32l256 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nvar fa8 = {\n  prefix: 'fas',\n  iconName: '8',\n  icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128l-32 0c-70.7 0-128 57.3-128 128 0 34.6 13.7 66 36 89-31.5 23.3-52 60.8-52 103 0 70.7 57.3 128 128 128l64 0c70.7 0 128-57.3 128-128 0-42.2-20.5-79.7-52-103 22.3-23 36-54.4 36-89zM176.1 288l15.9 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64s28.7-64 64-64l48.1 0zm0-64L144 224c-35.3 0-64-28.7-64-64 0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64 0 35.3-28.6 64-64 64z\"]\n};\nvar fa9 = {\n  prefix: 'fas',\n  iconName: '9',\n  icon: [384, 512, [], \"39\", \"M208 320c29.6 0 57.1-8.9 80-24.2l0 32.2c0 48.6-39.4 88-88 88L96 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l104 0c83.9 0 152-68.1 152-152l0-152.1C351.9 96.4 287.5 32 208 32l-48 0C80.5 32 16 96.5 16 176S80.5 320 160 320l48 0zm80-144c0 44.2-35.8 80-80 80l-48 0c-44.2 0-80-35.8-80-80s35.8-80 80-80l48 0c44.2 0 80 35.8 80 80z\"]\n};\nvar faDollarSign = {\n  prefix: 'fas',\n  iconName: 'dollar-sign',\n  icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M136 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-114.9 0c-24.9 0-45.1 20.2-45.1 45.1 0 22.5 16.5 41.5 38.7 44.7l91.6 13.1c53.8 7.7 93.7 53.7 93.7 108 0 60.3-48.9 109.1-109.1 109.1l-10.9 0 0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40-72 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l130.9 0c24.9 0 45.1-20.2 45.1-45.1 0-22.5-16.5-41.5-38.7-44.7l-91.6-13.1C55.9 273.5 16 227.4 16 173.1 16 112.9 64.9 64 125.1 64l10.9 0 0-40z\"]\n};\nvar faDollar = faDollarSign;\nvar faUsd = faDollarSign;\nvar faDog = {\n  prefix: 'fas',\n  iconName: 'dog',\n  icon: [576, 512, [128021], \"f6d3\", \"M32 112c16.6 0 30.2 12.6 31.8 28.7l.3 6.6C65.8 163.4 79.4 176 96 176l179.1 0 140.9 60.4 0 243.6c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-131.3C296 361 268.8 368 240 368s-56-7-80-19.3L160 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-245.6c-37.3-13.2-64-48.6-64-90.4 0-17.7 14.3-32 32-32zM355.8-32c7.7 0 14.9 3.6 19.6 9.8L392 0 444.1 0c12.7 0 24.9 5.1 33.9 14.1L496 32 552 32c13.3 0 24 10.7 24 24l0 24c0 44.2-35.8 80-80 80l-64 0-7 28-124.7-53.4 31.6-147.2C334.3-23.9 344.2-32 355.8-32zM448 44a20 20 0 1 0 0 40 20 20 0 1 0 0-40z\"]\n};\nvar faTruckMoving = {\n  prefix: 'fas',\n  iconName: 'truck-moving',\n  icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96L0 424c0 48.6 39.4 88 88 88 25.2 0 48-10.6 64-27.6 16 17 38.8 27.6 64 27.6 40.3 0 74.2-27.1 84.7-64l134.6 0c10.4 36.9 44.4 64 84.7 64 43 0 78.9-30.9 86.5-71.7 20-10.8 33.5-32 33.5-56.3l0-146.7c0-17-6.7-33.3-18.7-45.3L576 146.7c-12-12-28.3-18.7-45.3-18.7l-50.7 0 0-32c0-35.3-28.7-64-64-64L64 32zM480 192l50.7 0 45.3 45.3 0 50.7-96 0 0-96zM88 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm392 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM216 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faRotate = {\n  prefix: 'fas',\n  iconName: 'rotate',\n  icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M480.1 192l7.9 0c13.3 0 24-10.7 24-24l0-144c0-9.7-5.8-18.5-14.8-22.2S477.9 .2 471 7L419.3 58.8C375 22.1 318 0 256 0 127 0 20.3 95.4 2.6 219.5 .1 237 12.2 253.2 29.7 255.7s33.7-9.7 36.2-27.1C79.2 135.5 159.3 64 256 64 300.4 64 341.2 79 373.7 104.3L327 151c-6.9 6.9-8.9 17.2-5.2 26.2S334.3 192 344 192l136.1 0zm29.4 100.5c2.5-17.5-9.7-33.7-27.1-36.2s-33.7 9.7-36.2 27.1c-13.3 93-93.4 164.5-190.1 164.5-44.4 0-85.2-15-117.7-40.3L185 361c6.9-6.9 8.9-17.2 5.2-26.2S177.7 320 168 320L24 320c-13.3 0-24 10.7-24 24L0 488c0 9.7 5.8 18.5 14.8 22.2S34.1 511.8 41 505l51.8-51.8C137 489.9 194 512 256 512 385 512 491.7 416.6 509.4 292.5z\"]\n};\nvar faSyncAlt = faRotate;\nvar faSquareMinus = {\n  prefix: 'fas',\n  iconName: 'square-minus',\n  icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm72 200l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-176 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faAlignJustify = {\n  prefix: 'fas',\n  iconName: 'align-justify',\n  icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"]\n};\nvar faCalendarCheck = {\n  prefix: 'fas',\n  iconName: 'calendar-check',\n  icon: [448, 512, [], \"f274\", \"M320 0c17.7 0 32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32zm22 161.7c-10.7-7.8-25.7-5.4-33.5 5.3L189.1 331.2 137 279.1c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c5 5 11.9 7.5 18.8 7s13.4-4.1 17.5-9.8L347.3 195.2c7.8-10.7 5.4-25.7-5.3-33.5z\"]\n};\nvar faFaceKiss = {\n  prefix: 'fas',\n  iconName: 'face-kiss',\n  icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM240 288l32 0c26.5 0 48 21.5 48 48 0 12.3-4.6 23.5-12.2 32 7.6 8.5 12.2 19.7 12.2 32 0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiss = faFaceKiss;\nvar faKitchenSet = {\n  prefix: 'fas',\n  iconName: 'kitchen-set',\n  icon: [576, 512, [], \"e51a\", \"M240 144a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288 64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112l71.8 0c8.8-9.8 21.6-16 35.8-16l104 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-104 0c-14.2 0-27-6.2-35.8-16l-71.8 0zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24l0 8 96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-240 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0 0-8c0-13.3 10.7-24 24-24zM288 464l0-112 224 0 0 112c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48zM48 320l128 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-80c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0 32 16 0zM24 464l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faDna = {\n  prefix: 'fas',\n  iconName: 'dna',\n  icon: [384, 512, [129516], \"f471\", \"M352 0c17.7 0 32 14.3 32 32 0 57.8-24.4 104.8-57.4 144.5-24.1 28.9-53.8 55.1-83.6 79.5 29.8 24.5 59.5 50.6 83.6 79.5 33 39.6 57.4 86.7 57.4 144.5 0 17.7-14.3 32-32 32s-32-14.3-32-32L64 480c0 17.7-14.3 32-32 32S0 497.7 0 480C0 422.2 24.4 375.2 57.4 335.5 81.5 306.6 111.2 280.5 141 256 111.2 231.5 81.5 205.4 57.4 176.5 24.4 136.8 0 89.8 0 32 0 14.3 14.3 0 32 0S64 14.3 64 32l256 0c0-17.7 14.3-32 32-32zM283.5 384l-182.9 0c-8.2 10.5-15.1 21.1-20.6 32l224.2 0c-5.6-10.9-12.5-21.5-20.6-32zM238 336c-14.3-13-29.8-25.8-46-39-16.2 13.1-31.7 26-46 39l92 0zM100.5 128l182.9 0c8.2-10.5 15.1-21.1 20.6-32L79.9 96c5.6 10.9 12.5 21.5 20.6 32zM146 176c14.3 13 29.8 25.8 46 39 16.2-13.1 31.7-26 46-39l-92 0z\"]\n};\nvar faChildReaching = {\n  prefix: 'fas',\n  iconName: 'child-reaching',\n  icon: [384, 512, [], \"e59d\", \"M256 64a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.3 85.4S11.6 115 21.4 129.8L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4L112 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-258.4c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6-12.6 0-24.9-2-36.6-5.8-.9-.3-1.8-.7-2.7-.9z\"]\n};\nvar faPaste = {\n  prefix: 'fas',\n  iconName: 'paste',\n  icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M64 0C28.7 0 0 28.7 0 64L0 384c0 35.3 28.7 64 64 64l112 0 0-224c0-61.9 50.1-112 112-112l64 0 0-48c0-35.3-28.7-64-64-64L64 0zM248 112l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24zm40 48c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64l0-165.5c0-17-6.7-33.3-18.7-45.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7L288 160z\"]\n};\nvar faFileClipboard = faPaste;\nvar faMeteor = {\n  prefix: 'fas',\n  iconName: 'meteor',\n  icon: [512, 512, [9732], \"f753\", \"M493.7 .9l-194.2 74.7 2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309 0 421.1 90.9 512 203 512 275.4 512 342.3 473.4 378.6 410.7L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3 74.7-194.2c.6-1.5 .9-3.2 .9-4.8 0-7.5-6-13.5-13.5-13.5-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faGears = {\n  prefix: 'fas',\n  iconName: 'gears',\n  icon: [640, 512, [\"cogs\"], \"f085\", \"M415.9 210.5c12.2-3.3 25 2.5 30.5 13.8L465 261.9c10.3 1.4 20.4 4.2 29.9 8.1l35-23.3c10.5-7 24.4-5.6 33.3 3.3l19.2 19.2c8.9 8.9 10.3 22.9 3.3 33.3l-23.3 34.9c1.9 4.7 3.6 9.6 5 14.7 1.4 5.1 2.3 10.1 3 15.2l37.7 18.6c11.3 5.6 17.1 18.4 13.8 30.5l-7 26.2c-3.3 12.1-14.6 20.3-27.2 19.5l-42-2.7c-6.3 8.1-13.6 15.6-21.9 22l2.7 41.9c.8 12.6-7.4 24-19.5 27.2l-26.2 7c-12.2 3.3-24.9-2.5-30.5-13.8l-18.6-37.6c-10.3-1.4-20.4-4.2-29.9-8.1l-35 23.3c-10.5 7-24.4 5.6-33.3-3.3l-19.2-19.2c-8.9-8.9-10.3-22.8-3.3-33.3l23.3-35c-1.9-4.7-3.6-9.6-5-14.7s-2.3-10.2-3-15.2l-37.7-18.6c-11.3-5.6-17-18.4-13.8-30.5l7-26.2c3.3-12.1 14.6-20.3 27.2-19.5l41.9 2.7c6.3-8.1 13.6-15.6 21.9-22l-2.7-41.8c-.8-12.6 7.4-24 19.5-27.2l26.2-7zM448.4 340a44 44 0 1 0 .1 88 44 44 0 1 0 -.1-88zM224.9-45.5l26.2 7c12.1 3.3 20.3 14.7 19.5 27.2l-2.7 41.8c8.3 6.4 15.6 13.8 21.9 22l42-2.7c12.5-.8 23.9 7.4 27.2 19.5l7 26.2c3.2 12.1-2.5 24.9-13.8 30.5l-37.7 18.6c-.7 5.1-1.7 10.2-3 15.2s-3.1 10-5 14.7l23.3 35c7 10.5 5.6 24.4-3.3 33.3L307.3 262c-8.9 8.9-22.8 10.3-33.3 3.3L239 242c-9.5 3.9-19.6 6.7-29.9 8.1l-18.6 37.6c-5.6 11.3-18.4 17-30.5 13.8l-26.2-7c-12.2-3.3-20.3-14.7-19.5-27.2l2.7-41.9c-8.3-6.4-15.6-13.8-21.9-22l-42 2.7c-12.5 .8-23.9-7.4-27.2-19.5l-7-26.2c-3.2-12.1 2.5-24.9 13.8-30.5l37.7-18.6c.7-5.1 1.7-10.1 3-15.2 1.4-5.1 3-10 5-14.7L55.1 46.5c-7-10.5-5.6-24.4 3.3-33.3L77.6-6c8.9-8.9 22.8-10.3 33.3-3.3l35 23.3c9.5-3.9 19.6-6.7 29.9-8.1l18.6-37.6c5.6-11.3 18.3-17 30.5-13.8zM192.4 84a44 44 0 1 0 0 88 44 44 0 1 0 0-88z\"]\n};\nvar faCogs = faGears;\nvar faFileCirclePlus = {\n  prefix: 'fas',\n  iconName: 'file-circle-plus',\n  icon: [576, 512, [58606], \"e494\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faIcicles = {\n  prefix: 'fas',\n  iconName: 'icicles',\n  icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7C.3 33.2 0 30.7 0 28.2 0 12.6 12.6 0 28.2 0L482.4 0c16.3 0 29.6 13.2 29.6 29.6 0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7-9.3 0-17.5-6.2-20-15.2z\"]\n};\nvar faArrowTrendUp = {\n  prefix: 'fas',\n  iconName: 'arrow-trend-up',\n  icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7-169.4 169.4c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160 384 160z\"]\n};\nvar faHexagonNodesBolt = {\n  prefix: 'fas',\n  iconName: 'hexagon-nodes-bolt',\n  icon: [576, 512, [], \"e69a\", \"M248 106.6c18.9-9 32-28.3 32-50.6c0-30.9-25.1-56-56-56s-56 25.1-56 56c0 22.3 13.1 41.6 32 50.6l0 98.8c-2.8 1.3-5.5 2.9-8 4.7l-80.1-45.8c1.6-20.8-8.6-41.6-27.9-52.8C57.2 96 23 105.2 7.5 132S1.2 193 28 208.5c1.3 .8 2.6 1.5 4 2.1l0 90.8c-1.3 .6-2.7 1.3-4 2.1C1.2 319-8 353.2 7.5 380S57.2 416 84 400.5c19.3-11.1 29.4-32 27.8-52.8l50.5-28.9c-11.5-11.2-19.9-25.6-23.8-41.7L88 306.1c-2.6-1.8-5.2-3.3-8-4.7l0-90.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-.1 1.4-.2 2.8-.2 4.3c0 22.3 13.1 41.6 32 50.6l0 98.8c-18.9 9-32 28.3-32 50.6c0 30.9 25.1 56 56 56c30.7 0 55.6-24.7 56-55.2c-7.5-12.9-13.5-26.8-17.6-41.5c-4.2-4-9.1-7.3-14.4-9.9l0-98.8c2.8-1.3 5.5-2.9 8-4.7l10.5 6c5.5-15.3 13.1-29.5 22.4-42.5l-9.1-5.2c.1-1.4 .2-2.8 .2-4.3c0-22.3-13.1-41.6-32-50.6l0-98.8zM440.5 132C425 105.2 390.8 96 364 111.5c-19.3 11.1-29.4 32-27.8 52.8l-50.6 28.9c11.5 11.2 19.9 25.6 23.8 41.7L360 205.9c.4 .3 .8 .6 1.3 .9c21.7-9.5 45.6-14.8 70.8-14.8c2 0 4 0 5.9 .1c12.1-17.3 13.8-40.6 2.6-60.1zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faQuestion = {\n  prefix: 'fas',\n  iconName: 'question',\n  icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M64 160c0-53 43-96 96-96s96 43 96 96c0 42.7-27.9 78.9-66.5 91.4-28.4 9.2-61.5 35.3-61.5 76.6l0 24c0 17.7 14.3 32 32 32s32-14.3 32-32l0-24c0-1.7 .6-4.1 3.5-7.3 3-3.3 7.9-6.5 13.7-8.4 64.3-20.7 110.8-81 110.8-152.3 0-88.4-71.6-160-160-160S0 71.6 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm96 352c22.1 0 40-17.9 40-40s-17.9-40-40-40-40 17.9-40 40 17.9 40 40 40z\"]\n};\nvar faHandsBound = {\n  prefix: 'fas',\n  iconName: 'hands-bound',\n  icon: [576, 512, [], \"e4f9\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32L0 213.9c0 14.2 5.1 27.9 14.3 38.7L99.6 352 96 352c-13.3 0-24 10.7-24 24s10.7 24 24 24l384 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-3.6 0 85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7L576 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112.8-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8-9.7-5.7-12.1-18.7-5.1-27.5L441 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C329 209.7 320 233.4 320 258.1l0 93.9-64 0 0-93.9c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2S124.2 166.4 135 180l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5-8.1 4.8-18.6 2.7-24.2-4.8L64 144.8 64 32zm64 448l0 32 128 0 0-32 64 0 0 32 128 0 0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L96 432c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0z\"]\n};\nvar faPersonWalkingLuggage = {\n  prefix: 'fas',\n  iconName: 'person-walking-luggage',\n  icon: [512, 512, [], \"e554\", \"M264.3 24a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm-8 181.3l-22.6 22.6c-6 6-9.4 14.1-9.4 22.6l0 37.5c0 12.3-7 23-17.2 28.4-.9 4.2-2.4 8.4-4.3 12.3l-69 138.1-.8-.4-27.7 55.3c-9.9 19.8-33.9 27.8-53.7 17.9L14.6 521c-19.8-9.9-27.8-33.9-17.9-53.7L47.3 366.3c9.9-19.8 33.9-27.8 53.7-17.9l30.7 15.3 28.3-56.6c.3-.6 .4-1.2 .4-1.8l0-16.9c0-.2 0-.3 0-.5l0-37.5c0-25.5 10.1-49.9 28.1-67.9l35.1-35.1c22.8-22.8 53.6-35.6 85.8-35.6 36.9 0 71.8 16.8 94.8 45.6L422.1 180c6.1 7.6 15.3 12 25 12l33.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-33.2 0c-29.2 0-56.7-13.3-75-36l-3.8-4.7 0 115.2 34.5 29.6c17.7 15.2 29.3 36.2 32.6 59.3L448 507.5c2.5 17.5-9.7 33.7-27.2 36.2s-33.7-9.7-36.2-27.2L372 428.4c-1.1-7.7-5-14.7-10.9-19.8l-71.4-61.2c-21.3-18.2-33.5-44.9-33.5-72.9l0-69.3zm.1 165.8c2.4 2.3 4.8 4.6 7.4 6.8l46 39.4-2.2 7.6c-4.5 15.7-12.9 30-24.4 41.5l-68.3 68.3c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L238 421.1c3.8-3.8 6.6-8.6 8.1-13.8L256.4 371z\"]\n};\nvar faFileArrowDown = {\n  prefix: 'fas',\n  iconName: 'file-arrow-down',\n  icon: [384, 512, [\"file-download\"], \"f56d\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM175 441c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23 0-86.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 86.1-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64z\"]\n};\nvar faFileDownload = faFileArrowDown;\nvar faPersonBooth = {\n  prefix: 'fas',\n  iconName: 'person-booth',\n  icon: [576, 512, [], \"f756\", \"M40 24A56 56 0 1 1 152 24 56 56 0 1 1 40 24zm51.1 88c23.5 0 45.5 11.3 59.1 30.4l48.7 68.2c6 8.4 15.7 13.4 26 13.4l31.1 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-31.1 0c-31 0-60.1-15-78.1-40.2l-2.8-3.9 0 80.1 41.6 31.2C209.8 373.3 224 401.8 224 432l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80c0-10.1-4.7-19.6-12.8-25.6L70.4 348.8C46.2 330.7 32 302.2 32 272l0-100.9C32 138.5 58.5 112 91.1 112zM32 512l0-132.7c3.1 2.7 6.3 5.4 9.6 7.9L96 428 96 512c0 17.7-14.3 32-32 32s-32-14.3-32-32zm544-88l0 96c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-72-168 0c-7.1 0-13.8-3.1-18.4-8.6s-6.5-12.6-5.3-19.6l30.7-176.7-63.1-137.6 0 72c-5.2-1-10.5-1.6-16-1.6l-32 0 0-120c0-30.9 25.1-56 56-56L520 0c30.9 0 56 25.1 56 56l0 368zM288 336c5.5 0 10.8-.6 16-1.6L304 520c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-184 32 0z\"]\n};\nvar faLocust = {\n  prefix: 'fas',\n  iconName: 'locust',\n  icon: [576, 512, [], \"e520\", \"M328 32c137 0 248 111 248 248l0 40-.4 8.2C571.5 368.5 537.4 400 496 400l-12.3 0 25.2 44.1c6.6 11.5 2.6 26.2-8.9 32.8s-26.2 2.6-32.7-8.9l-38.8-67.9-80.4 0-48.2 69.7c-7.5 10.9-22.5 13.6-33.4 6.1s-13.6-22.5-6.1-33.4l29.3-42.3-74.5 0-51.7 70.2c-7.9 10.7-22.9 12.9-33.6 5.1s-12.9-22.9-5.1-33.6l40.5-55-43-16.4-79.3 100.5c-8.2 10.4-23.3 12.2-33.7 4s-12.2-23.3-4-33.7l240-304 2.1-2.3c5.2-5.1 12.5-7.5 19.9-6.6 8.4 1.1 15.6 6.5 18.9 14.3l21.7 50.7 40.9-55.5 2.1-2.4c5.1-5.3 12.5-8 20-7.2 8.5 1 15.9 6.5 19.3 14.4l41.8 97.5 64.2 0c10.2 0 20 2 29 5.5-16.4-94-98.3-165.5-197-165.5l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0zM488 296a24 24 0 1 0 0 48 24 24 0 1 0 0-48zM43.5 331.1C36.2 321.4 32 309.5 32 296.8 32 265.5 57.5 240 88.9 240l27.6 0-72.9 91.1zM225.1 240l48.2 0 1.4-1.9-16.9-39.5-32.7 41.5zm107.8 0l46.7 0-17.2-40-29.5 40z\"]\n};\nvar faRightLong = {\n  prefix: 'fas',\n  iconName: 'right-long',\n  icon: [576, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M566.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-128 128c-9.2 9.2-22.9 11.9-34.9 6.9S384 396.9 384 384l0-64-336 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48l336 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l128 128z\"]\n};\nvar faLongArrowAltRight = faRightLong;\nvar faTruckDroplet = {\n  prefix: 'fas',\n  iconName: 'truck-droplet',\n  icon: [576, 512, [], \"e58c\", \"M64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64l3.3 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l102.6 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l3.3 0c35.3 0 64-28.7 64-64l0-146.7c0-17-6.7-33.3-18.7-45.3L512 146.7c-12-12-28.3-18.7-45.3-18.7l-50.7 0 0-32c0-35.3-28.7-64-64-64L64 32zM512 237.3l0 50.7-96 0 0-96 50.7 0 45.3 45.3zM152 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm232 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM208 304c-39.8 0-72-32.2-72-72 0-33.2 34.5-78 55.8-102.4 8.7-10 23.8-10 32.5 0 21.2 24.4 55.8 69.1 55.8 102.4 0 48-32.2 72-72 72z\"]\n};\nvar faHandHoldingMedical = {\n  prefix: 'fas',\n  iconName: 'hand-holding-medical',\n  icon: [576, 512, [], \"e05c\", \"M240 24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 56 56 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-56 0 0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56-56 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24l56 0 0-56zM66.7 384l42.5-42.5c24-24 56.6-37.5 90.5-37.5L352 304c17.7 0 32 14.3 32 32s-14.3 32-32 32l-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5s9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l34.7 0z\"]\n};\nvar faHandPointLeft = {\n  prefix: 'fas',\n  iconName: 'hand-point-left',\n  icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0 0-64-208 0zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm-64-64c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32 0 13.2-4 25.4-10.8 35.6 24.9 8.7 42.8 32.5 42.8 60.4 0 11.7-3.1 22.6-8.6 32l8.6 0c88.4 0 160-71.6 160-160l0-61.7c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64l0 88c0 22.1 17.9 40 40 40s40-17.9 40-40l0-56c0-8.8 7.2-16 16-16s16 7.2 16 16l0 56c0 39.8-32.2 72-72 72z\"]\n};\nvar faCalculator = {\n  prefix: 'fas',\n  iconName: 'calculator',\n  icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM96 64l192 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32zm16 168a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM88 352a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM64 424c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 448c-13.3 0-24-10.7-24-24zm232-24c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faMinus = {\n  prefix: 'fas',\n  iconName: 'minus',\n  icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSubtract = faMinus;\nvar faArrowUpZA = {\n  prefix: 'fas',\n  iconName: 'arrow-up-z-a',\n  icon: [512, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80zM288 64c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9S307.1 224 320 224l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9S461 32 448 32L320 32c-17.7 0-32 14.3-32 32zM412.6 273.7C407.2 262.8 396.1 256 384 256s-23.2 6.8-28.6 17.7l-80 160c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-80-160zM384 359.6l20.2 40.4-40.4 0 20.2-40.4z\"]\n};\nvar faSortAlphaUpAlt = faArrowUpZA;\nvar faMicrophoneSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-slash',\n  icon: [576, 512, [], \"f131\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L424.7 358.8C458.9 324.2 480 276.6 480 224l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 39.3-15.7 74.9-41.3 100.9L356.8 291C373.6 273.7 384 250 384 224l0-128c0-53-43-96-96-96s-96 43-96 96l0 30.2-151-151zm298.3 434l-41.4-41.4c-3.3 .2-6.5 .3-9.8 .3-79.5 0-144-64.5-144-144l0-10.2-43.6-43.6c-2.8 3.9-4.4 8.7-4.4 13.8l0 40c0 97.9 73.3 178.7 168 190.5l0 49.5-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-49.5c9.3-1.2 18.4-3 27.3-5.4z\"]\n};\nvar faSquarePen = {\n  prefix: 'fas',\n  iconName: 'square-pen',\n  icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-23.8 23.8-71-71 23.8-23.8c15.6-15.6 40.9-15.6 56.6 0zM119.9 289l91.5-91.6 71 71-91.6 91.5c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPenSquare = faSquarePen;\nvar faPencilSquare = faSquarePen;\nvar faHandFist = {\n  prefix: 'fas',\n  iconName: 'hand-fist',\n  icon: [384, 512, [9994, \"fist-raised\"], \"f6de\", \"M160 0c17.7 0 32 14.3 32 32l0 112-64 0 0-112c0-17.7 14.3-32 32-32zM32 64c0-17.7 14.3-32 32-32S96 46.3 96 64l0 80-64 0 0-80zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6 13.2 0 25.4-4 35.6-10.8 8.7 24.9 32.5 42.8 60.4 42.8 11.7 0 22.6-3.1 32-8.6l0 8.6c0 52.3-25.1 98.8-64 128l0 96c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-78.4c-17.3-7.9-33.2-18.8-46.9-32.5L37.5 357.5C13.5 333.5 0 300.9 0 267l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nvar faFistRaised = faHandFist;\nvar faCommentSms = {\n  prefix: 'fas',\n  iconName: 'comment-sms',\n  icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 480c141.4 0 256-107.5 256-240S397.4 0 256 0 0 107.5 0 240c0 54.3 19.2 104.3 51.6 144.5L2.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7C183.7 472.6 218.9 480 256 480zM140.8 172.8l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-5.3 0-9.6 4.3-9.6 9.6s4.3 9.6 9.6 9.6c23 0 41.6 18.6 41.6 41.6s-18.6 41.6-41.6 41.6l-25.6 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l25.6 0c5.3 0 9.6-4.3 9.6-9.6s-4.3-9.6-9.6-9.6c-23 0-41.6-18.6-41.6-41.6s18.6-41.6 41.6-41.6zm188.8 41.6c0-23 18.6-41.6 41.6-41.6l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-5.3 0-9.6 4.3-9.6 9.6s4.3 9.6 9.6 9.6c23 0 41.6 18.6 41.6 41.6s-18.6 41.6-41.6 41.6l-25.6 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l25.6 0c5.3 0 9.6-4.3 9.6-9.6s-4.3-9.6-9.6-9.6c-23 0-41.6-18.6-41.6-41.6zm-98.3-33.8l24.7 41.1 24.7-41.1c3.7-6.2 11.1-9.1 18-7.2s11.7 8.2 11.7 15.4l0 102.4c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-44.6-8.7 14.5c-2.9 4.8-8.1 7.8-13.7 7.8s-10.8-3-13.7-7.8l-8.7-14.5 0 44.6c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-102.4c0-7.2 4.8-13.5 11.7-15.4s14.3 1 18 7.2z\"]\n};\nvar faSms = faCommentSms;\nvar faSimCard = {\n  prefix: 'fas',\n  iconName: 'sim-card',\n  icon: [384, 512, [], \"f7c4\", \"M0 64C0 28.7 28.7 0 64 0L258.7 0c17 0 33.3 6.7 45.3 18.7L365.3 80c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM96 256c-17.7 0-32 14.3-32 32l0 40 128 0 0-72-96 0zM64 416c0 17.7 14.3 32 32 32l48 0 0-72-80 0 0 40zm256 0l0-40-128 0 0 72 96 0c17.7 0 32-14.3 32-32zm0-128c0-17.7-14.3-32-32-32l-48 0 0 72 80 0 0-40z\"]\n};\nvar faScaleBalanced = {\n  prefix: 'fas',\n  iconName: 'scale-balanced',\n  icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L398.4 96c-5.2 25.8-22.9 47.1-46.4 57.3l0 294.7 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-23.5-10.3-41.2-31.6-46.4-57.3L128 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288L584.4 320 512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1-10.8 44.8-63.1 78.9-126 78.9zM126.8 195.8L54.4 320 199.3 320 126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1-10.8 44.8-63.1 78.9-126 78.9S11.7 382 .9 337.1z\"]\n};\nvar faBalanceScale = faScaleBalanced;\nvar faCar = {\n  prefix: 'fas',\n  iconName: 'car',\n  icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4l-26.1 74.6 293.8 0-26.1-74.6C372.3 104.6 360.2 96 346.6 96L165.4 96c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32l181.2 0c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2l0 192c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-320 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L0 256c0-26.7 16.4-49.6 39.6-59.2zM128 304a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faAutomobile = faCar;\nvar faCropSimple = {\n  prefix: 'fas',\n  iconName: 'crop-simple',\n  icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32-32 0C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l208 0 0-64-208 0 0-352zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-256c0-35.3-28.7-64-64-64l-208 0 0 64 208 0 0 352z\"]\n};\nvar faCropAlt = faCropSimple;\nvar faMedal = {\n  prefix: 'fas',\n  iconName: 'medal',\n  icon: [448, 512, [127941], \"f5a2\", \"M224.3 128L139.7-12.9c-6.5-10.8-20.1-14.7-31.3-9.1L21.8 21.3C9.9 27.2 5.1 41.6 11 53.5L80.6 192.6c-30.1 33.9-48.3 78.5-48.3 127.4 0 106 86 192 192 192s192-86 192-192c0-48.9-18.3-93.5-48.3-127.4L437.6 53.5c5.9-11.9 1.1-26.3-10.7-32.2L340.2-22.1c-11.2-5.6-24.9-1.6-31.3 9.1L224.3 128zm30.8 142.5c1.4 2.8 4 4.7 7 5.1l50.1 7.3c7.7 1.1 10.7 10.5 5.2 16l-36.3 35.4c-2.2 2.2-3.2 5.2-2.7 8.3l8.6 49.9c1.3 7.6-6.7 13.5-13.6 9.9l-44.8-23.6c-2.7-1.4-6-1.4-8.7 0l-44.8 23.6c-6.9 3.6-14.9-2.2-13.6-9.9l8.6-49.9c.5-3-.5-6.1-2.7-8.3l-36.3-35.4c-5.6-5.4-2.5-14.8 5.2-16l50.1-7.3c3-.4 5.7-2.4 7-5.1l22.4-45.4c3.4-7 13.3-7 16.8 0l22.4 45.4z\"]\n};\nvar faScroll = {\n  prefix: 'fas',\n  iconName: 'scroll',\n  icon: [576, 512, [128220], \"f70e\", \"M0 112C0 70.5 31.6 36.4 72 32.4l0-.4 280 0c53 0 96 43 96 96l0 176-176 0c-39.8 0-72 32.2-72 72l0 60c0 24.3-19.7 44-44 44s-44-19.7-44-44l0-228-64 0c-26.5 0-48-21.5-48-48l0-48zM236.8 480c7.1-13.1 11.2-28.1 11.2-44l0-60c0-13.3 10.7-24 24-24l248 0c13.3 0 24 10.7 24 24l0 24c0 44.2-35.8 80-80 80l-227.2 0zM80 80c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32z\"]\n};\nvar faFileExcel = {\n  prefix: 'fas',\n  iconName: 'file-excel',\n  icon: [384, 512, [], \"f1c3\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM164 266.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3L163.2 352 124 410.7c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l28-42 28 42c7.4 11 22.3 14 33.3 6.7s14-22.3 6.7-33.3L220.8 352 260 293.3c7.4-11 4.4-25.9-6.7-33.3s-25.9-4.4-33.3 6.7l-28 42-28-42z\"]\n};\nvar faFilter = {\n  prefix: 'fas',\n  iconName: 'filter',\n  icon: [512, 512, [], \"f0b0\", \"M32 64C19.1 64 7.4 71.8 2.4 83.8S.2 109.5 9.4 118.6L192 301.3 192 416c0 8.5 3.4 16.6 9.4 22.6l64 64c9.2 9.2 22.9 11.9 34.9 6.9S320 492.9 320 480l0-178.7 182.6-182.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 64 480 64L32 64z\"]\n};\nvar faDrum = {\n  prefix: 'fas',\n  iconName: 'drum',\n  icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96 114.6 96 0 128 0 208L0 368c0 31.3 27.4 58.8 72 78.7L72 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 119.4c33 8.9 71.1 14.5 112 16.1L232 376c0-13.3 10.7-24 24-24s24 10.7 24 24l0 103.5c40.9-1.6 79-7.2 112-16.1L392 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 102.7c44.6-19.9 72-47.4 72-78.7l0-160c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5 38.8 15.1 44.4 30.6 44.4 41.3 0 .8-2.7 17.2-46 35.9-38.9 16.8-96 28.1-162 28.1S132.9 260.7 94 243.9c-43.3-18.7-46-35.1-46-35.9 0-10.6 5.6-26.2 44.4-41.3 38.3-14.9 95.4-22.7 163.6-22.7 18 0 35.1 .5 51.4 1.6z\"]\n};\nvar faMapPin = {\n  prefix: 'fas',\n  iconName: 'map-pin',\n  icon: [320, 512, [128205], \"f276\", \"M192 284.4C256.1 269.9 304 212.5 304 144 304 64.5 239.5 0 160 0S16 64.5 16 144c0 68.5 47.9 125.9 112 140.4L128 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-195.6zM168 96c-30.9 0-56 25.1-56 56 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4 46.6-104 104-104 13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faScaleUnbalancedFlip = {\n  prefix: 'fas',\n  iconName: 'scale-unbalanced-flip',\n  icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M118.2 62.4C101.5 56.8 92.4 38.6 98 21.9S121.7-3.9 138.5 1.6l113 37.7c13.9-23.5 39.6-39.3 68.9-39.3 44.2 0 80 35.8 80 80 0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.7 145.2c-4.5 3.2-9.3 5.9-14.4 8.2l0 326.7c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.8 288L128.3 163.8 55.9 288 200.8 288zm-72.4 96c-62.9 0-115.2-34-126-78.9-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1-10.8 44.8-63.1 78.9-126 78.9zm382.8-92.2l-72.4 124.2 144.9 0-72.4-124.2zm126 141.3C626.4 478 574.1 512 511.2 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nvar faBalanceScaleRight = faScaleUnbalancedFlip;\nvar faArrowsToCircle = {\n  prefix: 'fas',\n  iconName: 'arrows-to-circle',\n  icon: [512, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L128 82.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.7 0-73.4-73.4C-3.1 42.1-3.1 21.9 9.4 9.4zM200 256a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM502.6 54.6L429.3 128 448 128c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 18.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-45.3 448L384 429.3 384 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.7 0 73.4 73.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM9.4 457.4L82.7 384 64 384c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3z\"]\n};\nvar faEnvelope = {\n  prefix: 'fas',\n  iconName: 'envelope',\n  icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64c-26.5 0-48 21.5-48 48 0 15.1 7.1 29.3 19.2 38.4l208 156c17.1 12.8 40.5 12.8 57.6 0l208-156c12.1-9.1 19.2-23.3 19.2-38.4 0-26.5-21.5-48-48-48L48 64zM0 196L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-188-198.4 148.8c-34.1 25.6-81.1 25.6-115.2 0L0 196z\"]\n};\nvar faBaby = {\n  prefix: 'fas',\n  iconName: 'baby',\n  icon: [384, 512, [], \"f77c\", \"M120 88a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zM7.7 144.5c13-17.9 38-21.8 55.9-8.8L99.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25l0 36.3-192 0 0-36.3c-15.2-6.7-29.7-15.1-43.3-25L16.5 200.3c-17.9-13-21.8-38-8.8-55.9zM97.5 329.3l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C38 438.6 36.1 417 47.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6l24.3-24.3-26-37.2z\"]\n};\nvar faSquareCaretDown = {\n  prefix: 'fas',\n  iconName: 'square-caret-down',\n  icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9S110.5 192 120 192l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faTent = {\n  prefix: 'fas',\n  iconName: 'tent',\n  icon: [512, 512, [], \"e57d\", \"M26.9 206.9L3.7 444.9C1.8 463.7 16.6 480 35.5 480l172.7 0c26.5 0 48-21.5 48-48l0-129c0-8.3 6.7-15 15-15 5.5 0 10.6 3 13.2 7.9l86.1 159c8.4 15.5 24.6 25.1 42.2 25.1l64.1 0c18.9 0 33.7-16.3 31.8-35.1L485.6 207.1c-1.9-19.6-12.8-37.3-29.5-47.8L280.9 48.3c-15.7-10-35.8-9.9-51.5 .1L56.1 159.2c-16.5 10.6-27.3 28.2-29.2 47.7z\"]\n};\nvar faA = {\n  prefix: 'fas',\n  iconName: 'a',\n  icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7c-93.3 224-146.7 352-160 384-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2l31.8-76.3 197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8c-13.3-32-66.7-160-160-384zM264 320l-144 0 72-172.8 72 172.8z\"]\n};\nvar faParachuteBox = {\n  prefix: 'fas',\n  iconName: 'parachute-box',\n  icon: [512, 512, [], \"f4cd\", \"M128 224C128 152.2 144.3 88.4 169.5 43.4 195.1-2.4 226.6-24 256-24s60.9 21.6 86.5 67.4C367.7 88.4 384 152.2 384 224l-104 0 0 96 8 0c9.3 0 18.1 2 26 5.5l118.4-101.5-.5 0c0-78.4-17.7-150.6-47.6-204-6.1-11-12.9-21.3-20.3-30.9 86.5 35.9 147.8 115.1 147.8 218.9 0 7-3.1 13.7-8.4 18.2L347.4 360.1c3 7.4 4.6 15.4 4.6 23.9l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-64c0-8.4 1.6-16.5 4.6-23.9L8.4 226.2C3.1 221.7 0 215 0 208 0 104.2 61.3 24.9 147.8-10.9 140.5-1.4 133.7 9 127.6 20 97.7 73.4 80 145.6 80 224l-.5 0 118.4 101.5c8-3.5 16.8-5.5 26-5.5l8 0 0-96-104 0z\"]\n};\nvar faCartArrowDown = {\n  prefix: 'fas',\n  iconName: 'cart-arrow-down',\n  icon: [640, 512, [], \"f218\", \"M0 8C0-5.3 10.7-16 24-16l45.3 0c27.1 0 50.3 19.4 55.1 46l.4 2 187.2 0 0 102.1-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1 177.4 0c20 0 35.1 18.2 31.4 37.9L537.8 235.8c-5.7 30.3-32.1 52.2-62.9 52.2l-303.6 0 5.1 28.3c2.1 11.4 12 19.7 23.6 19.7L456 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-255.9 0c-34.8 0-64.6-24.9-70.8-59.1L77.2 38.6c-.7-3.8-4-6.6-7.9-6.6L24 32C10.7 32 0 21.3 0 8zM160 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm224 0a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faBridgeCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'bridge-circle-exclamation',\n  icon: [576, 512, [], \"e4ca\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l8 0 0 64-40 0 0 112c37.6 9.4 64 43.2 64 82l0 94c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96 6.4 0 12.7 .6 18.7 1.8 34.7-49.5 92.2-81.8 157.3-81.8 28.6 0 55.6 6.2 80 17.4l0-65.4-40 0 0-64 8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM424 96l0 64-80 0 0-64 80 0zM296 96l0 64-80 0 0-64 80 0zM88 96l80 0 0 64-80 0 0-64zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nvar faCloudArrowUp = {\n  prefix: 'fas',\n  iconName: 'cloud-arrow-up',\n  icon: [576, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480c-79.5 0-144-64.5-144-144 0-63.4 41-117.2 97.9-136.5-1.3-7.7-1.9-15.5-1.9-23.5 0-79.5 64.5-144 144-144 55.4 0 103.5 31.3 127.6 77.1 14.2-8.3 30.8-13.1 48.4-13.1 53 0 96 43 96 96 0 15.7-3.8 30.6-10.5 43.7 44 20.3 74.5 64.7 74.5 116.3 0 70.7-57.3 128-128 128l-304 0zM305 191c-9.4-9.4-24.6-9.4-33.9 0l-72 72c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l31-31 0 102.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-102.1 31 31c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faCloudUpload = faCloudArrowUp;\nvar faCloudUploadAlt = faCloudArrowUp;\nvar faAt = {\n  prefix: 'fas',\n  iconName: 'at',\n  icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0 512 114.6 512 256l0 32c0 53-43 96-96 96-29.3 0-55.6-13.2-73.2-33.9-22.8 21-53.3 33.9-86.8 33.9-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1 5.7-5 13.1-8.1 21.3-8.1 17.7 0 32 14.3 32 32l0 112c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faIndianRupeeSign = {\n  prefix: 'fas',\n  iconName: 'indian-rupee-sign',\n  icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32l264 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-76.7 0c17.7 19.8 30.1 44.6 34.7 72l42 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-42 0c-10.4 62.2-60.8 110.9-123.8 118.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256l80 0c35.8 0 66.1-23.5 76.3-56L24 200c-13.3 0-24-10.7-24-24s10.7-24 24-24l164.3 0c-10.2-32.5-40.5-56-76.3-56L32 96C14.3 96 0 81.7 0 64z\"]\n};\nvar faIndianRupee = faIndianRupeeSign;\nvar faInr = faIndianRupeeSign;\nvar faTruck = {\n  prefix: 'fas',\n  iconName: 'truck',\n  icon: [576, 512, [128666, 9951], \"f0d1\", \"M0 96C0 60.7 28.7 32 64 32l288 0c35.3 0 64 28.7 64 64l0 32 50.7 0c17 0 33.3 6.7 45.3 18.7L557.3 192c12 12 18.7 28.3 18.7 45.3L576 384c0 35.3-28.7 64-64 64l-3.3 0c-10.4 36.9-44.4 64-84.7 64s-74.2-27.1-84.7-64l-102.6 0c-10.4 36.9-44.4 64-84.7 64s-74.2-27.1-84.7-64L64 448c-35.3 0-64-28.7-64-64L0 96zM512 288l0-50.7-45.3-45.3-50.7 0 0 96 96 0zM192 424a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm232 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faChalkboardUser = {\n  prefix: 'fas',\n  iconName: 'chalkboard-user',\n  icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M192 384c53 0 96 43 96 96 0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32 0-53 43-96 96-96l96 0zM544 32c35.3 0 64 28.7 64 64l0 288c0 33.1-25.2 60.4-57.5 63.7l-6.5 .3-211.1 0c-5.1-24.2-16.3-46.1-32.1-64l51.2 0 0-32c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 32 32 0 0-288-352 0 0 57.3c-14.8-6-31-9.3-48-9.3-5.4 0-10.8 .3-16 1l0-49c0-35.3 28.7-64 64-64l352 0zM144 352a80 80 0 1 1 0-160 80 80 0 1 1 0 160z\"]\n};\nvar faChalkboardTeacher = faChalkboardUser;\nvar faUserCheck = {\n  prefix: 'fas',\n  iconName: 'user-check',\n  icon: [640, 512, [], \"f4fc\", \"M286 304c98.5 0 178.3 79.8 178.3 178.3 0 16.4-13.3 29.7-29.7 29.7L78 512c-16.4 0-29.7-13.3-29.7-29.7 0-98.5 79.8-178.3 178.3-178.3l59.4 0zM585.7 105.9c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5L522.1 274.9c-4.2 5.7-10.7 9.4-17.7 9.8s-14-2.2-18.9-7.3l-46.4-48c-9.2-9.5-9-24.7 .6-33.9 9.5-9.2 24.7-8.9 33.9 .6l26.5 27.4 85.6-117.7zM256.3 248a120 120 0 1 1 0-240 120 120 0 1 1 0 240z\"]\n};\nvar faUserNinja = {\n  prefix: 'fas',\n  iconName: 'user-ninja',\n  icon: [448, 512, [129399], \"f504\", \"M352 128c0 70.7-57.3 128-128 128-57.2 0-105.6-37.5-122-89.3-1.1 1.3-2.2 2.6-3.5 3.8-15.8 15.8-38.8 20.7-53.6 22.1-8.1 .8-14.6-5.7-13.8-13.8 1.4-14.7 6.3-37.8 22.1-53.6 5.8-5.8 12.6-10.1 19.6-13.4-7-3.2-13.8-7.6-19.6-13.4-15.8-15.8-20.7-38.8-22.1-53.6-.8-8.1 5.7-14.6 13.8-13.8 14.7 1.4 37.8 6.3 53.6 22.1 4.8 4.8 8.7 10.4 11.7 16.1 21.3-41.2 64.3-69.4 113.8-69.4 70.7 0 128 57.3 128 128zM144 112c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L160 96c-8.8 0-16 7.2-16 16zm-1.4 211l67 50.2c8.5 6.4 20.3 6.4 28.8 0l67-50.2c6.5-4.9 15.2-6.2 22.6-2.8 61.4 28.2 104.1 90.2 104.1 162.1 0 16.4-13.3 29.7-29.7 29.7L45.7 512c-16.4 0-29.7-13.3-29.7-29.7 0-72 42.7-134 104.1-162.1 7.4-3.4 16.1-2.1 22.6 2.8z\"]\n};\nvar faPlantWilt = {\n  prefix: 'fas',\n  iconName: 'plant-wilt',\n  icon: [512, 512, [], \"e5aa\", \"M344-32c66.3 0 120 53.7 120 120l0 6.2c29.3 12.2 48 41.3 48 76.9 0 27.9-25.3 74.8-66 111.7-3.8 3.5-8.8 5.3-14 5.3s-10.2-1.8-14-5.3c-40.7-36.8-66-83.7-66-111.7 0-35.6 18.7-64.7 48-76.9l0-6.2c0-30.9-25.1-56-56-56s-56 25.1-56 56l0 424c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-296c0-30.9-25.1-56-56-56s-56 25.1-56 56l0 38.2c29.3 12.2 48 41.3 48 76.9 0 27.9-25.3 74.8-66 111.7-3.8 3.5-8.8 5.3-14 5.3s-10.2-1.8-14-5.3C25.3 405.9 0 359 0 331.1 0 295.4 18.7 266.4 48 254.2L48 216c0-66.3 53.7-120 120-120 20.2 0 39.3 5 56 13.8L224 88c0-66.3 53.7-120 120-120z\"]\n};\nvar faWeightScale = {\n  prefix: 'fas',\n  iconName: 'weight-scale',\n  icon: [448, 512, [\"weight\"], \"f496\", \"M116.6 192c-3-10.1-4.6-20.9-4.6-32 0-61.9 50.1-112 112-112S336 98.1 336 160c0 11.1-1.6 21.9-4.6 32l-71 0 24.6-44.3c6.4-11.6 2.3-26.2-9.3-32.6s-26.2-2.3-32.6 9.3l-37.6 67.7-88.8 0zM128 32L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-64 0C293.3 11.9 260 0 224 0s-69.3 11.9-96 32z\"]\n};\nvar faWeight = faWeightScale;\nvar faCaretRight = {\n  prefix: 'fas',\n  iconName: 'caret-right',\n  icon: [256, 512, [], \"f0da\", \"M249.3 235.8c10.2 12.6 9.5 31.1-2.2 42.8l-128 128c-9.2 9.2-22.9 11.9-34.9 6.9S64.5 396.9 64.5 384l0-256c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l128 128 2.2 2.4z\"]\n};\nvar faFlorinSign = {\n  prefix: 'fas',\n  iconName: 'florin-sign',\n  icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224 64 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0-45.1 108.3c-5 11.9-16.6 19.7-29.5 19.7L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l37.3 0c38.8 0 73.7-23.3 88.6-59.1L213.3 288 320 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 45.1-108.3c5-11.9 16.6-19.7 29.5-19.7L352 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-37.3 0z\"]\n};\nvar faBell = {\n  prefix: 'fas',\n  iconName: 'bell',\n  icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32l0 3.2C119 50 64 114.6 64 192l0 21.7c0 48.1-16.4 94.8-46.4 132.4L7.8 358.3C2.7 364.6 0 372.4 0 380.5 0 400.1 15.9 416 35.5 416l376.9 0c19.6 0 35.5-15.9 35.5-35.5 0-8.1-2.7-15.9-7.8-22.2l-9.8-12.2C400.4 308.5 384 261.8 384 213.7l0-21.7c0-77.4-55-142-128-156.8l0-3.2c0-17.7-14.3-32-32-32zM162 464c7.1 27.6 32.2 48 62 48s54.9-20.4 62-48l-124 0z\"]\n};\nvar faLariSign = {\n  prefix: 'fas',\n  iconName: 'lari-sign',\n  icon: [384, 512, [], \"e1c8\", \"M144 0c13.3 0 24 10.7 24 24l0 41.5c7.9-1 15.9-1.5 24-1.5s16.1 .5 24 1.5L216 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 54c58.9 23.8 103.2 76 116.2 139.7 3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.7-33.2-26.4-61.8-53.4-80.2l0 81.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-101.8c-7.8-1.5-15.8-2.2-24-2.2s-16.2 .8-24 2.2L168 232c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-81.8c-33.8 23-56 61.9-56 105.8 0 70.7 57.3 128 128 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l16.9 0C18.5 350 0 305.2 0 256 0 175.4 49.6 106.4 120 78l0-54c0-13.3 10.7-24 24-24z\"]\n};\nvar faMillSign = {\n  prefix: 'fas',\n  iconName: 'mill-sign',\n  icon: [384, 512, [], \"e1ed\", \"M297-22.2c12.3 5 18.2 19 13.2 31.3l-29 71.3C338.8 85.1 384 133.3 384 192l0 208c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-208c0-26.5-21.5-48-48-48-6.4 0-12.5 1.2-18 3.5l-30 73.8 0 178.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-21.2-57.8 142.2c-5 12.3-19 18.2-31.3 13.2s-18.2-19-13.2-31.3L160 251.3 160 192c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 208c0 17.7-14.3 32-32 32S0 417.7 0 400L0 112c0-17.7 14.3-32 32-32 10.9 0 20.5 5.4 26.3 13.7 16-8.7 34.3-13.7 53.7-13.7 31.3 0 59.7 12.9 80 33.6 9.6-9.8 20.9-17.8 33.5-23.5L265.8-9c5-12.3 19-18.2 31.3-13.2z\"]\n};\nvar faPersonSnowboarding = {\n  prefix: 'fas',\n  iconName: 'person-snowboarding',\n  icon: [576, 512, [127938, \"snowboarding\"], \"f7ce\", \"M424.5 16a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM166.4 45.5c10.2-14.4 30.2-17.9 44.6-7.7l272 192c14.4 10.2 17.9 30.2 7.7 44.6s-30.2 17.9-44.6 7.7l-92.2-65.1-62.2 53.3 32.1 26.7c18.2 15.2 28.8 37.7 28.8 61.5l0 87.8 77.5 15.2c6.2 1.2 12.6 .9 18.7-.8l41.2-11.8c12.7-3.6 26 3.7 29.7 16.5s-3.7 26-16.5 29.7l-41.2 11.8c-13.4 3.8-27.4 4.4-41.1 1.8L87.1 443.3c-17.2-3.4-33-11.8-45.3-24.1L15.5 393c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l26.2 26.2c5.6 5.6 12.8 9.4 20.6 11l64.2 12.6 0-123.7c0-27.7 12-54 32.8-72.2l69-60.4-88.2-62.3C159.6 80 156.2 60 166.4 45.5zm58.1 375.7l64 12.5 0-75.3c0-4.7-2.1-9.3-5.8-12.3l-58.2-48.5 0 123.6z\"]\n};\nvar faSnowboarding = faPersonSnowboarding;\nvar faTty = {\n  prefix: 'fas',\n  iconName: 'tty',\n  icon: [512, 512, [\"teletype\"], \"f1e4\", \"M450.2 266.8c15.8 6.5 34.1 .3 42.6-14.6l2.4-4.2c27.9-48.9 23.6-118.8-31.3-154.5-126-82-289.6-82-415.6 0-54.9 35.7-59.3 105.7-31.3 154.5l2.4 4.2c8.5 14.9 26.7 21.1 42.6 14.6l81.9-33.7c13.9-5.7 22.4-19.9 20.9-34.9l-5.1-51c62.5-21 130.8-19.9 192.6 3.3l-4.8 47.7c-1.5 15 7 29.2 20.9 34.9l81.9 33.7zM32 352a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm96 0a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM64 416a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm352 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM256 320a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm64 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm128-32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM128 448c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32z\"]\n};\nvar faTeletype = faTty;\nvar faUsersRectangle = {\n  prefix: 'fas',\n  iconName: 'users-rectangle',\n  icon: [576, 512, [], \"e594\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm224 72a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm0 152c53 0 96 43 96 96l0 24c0 13.3-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24l0-24c0-53 43-96 96-96zm96-64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM168 272.3c-15.2 22.8-24 50.2-24 79.7l0 24c0 8.4 1.4 16.5 4.1 24l-46.8 0C89.6 400 80 390.4 80 378.7L80 368c0-50.3 38.7-91.6 88-95.7zM427.9 400c2.7-7.5 4.1-15.6 4.1-24l0-24c0-29.5-8.8-56.9-24-79.7 49.3 4.1 88 45.3 88 95.7l0 10.7c0 11.8-9.6 21.3-21.3 21.3l-46.8 0zM96 192a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faMobile = {\n  prefix: 'fas',\n  iconName: 'mobile',\n  icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zm72 416l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMobileAndroid = faMobile;\nvar faMobilePhone = faMobile;\nvar faArrowsTurnToDots = {\n  prefix: 'fas',\n  iconName: 'arrows-turn-to-dots',\n  icon: [448, 512, [], \"e4c1\", \"M265.4-6.6c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L285.3 64 352 64c53 0 96 43 96 96l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7-14.3-32-32-32l-66.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm-82.7 272l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L162.7 400 96 400c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32S0 481.7 0 464l0-32c0-53 43-96 96-96l66.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM320 368a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 160a64 64 0 1 1 0-128 64 64 0 1 1 0 128z\"]\n};\nvar faExclamation = {\n  prefix: 'fas',\n  iconName: 'exclamation',\n  icon: [128, 512, [10069, 10071, 61738], \"21\", \"M64 432c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40c0-22.1 17.9-40 40-40zM64 0c26.5 0 48 21.5 48 48 0 .6 0 1.1 0 1.7l-16 304c-.9 17-15 30.3-32 30.3S33 370.7 32 353.7L16 49.7c0-.6 0-1.1 0-1.7 0-26.5 21.5-48 48-48z\"]\n};\nvar faChurch = {\n  prefix: 'fas',\n  iconName: 'church',\n  icon: [512, 512, [9962], \"f51d\", \"M280-8c0-13.3-10.7-24-24-24S232-21.3 232-8l0 24-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 48-98.6 65.8C120 186.7 112 201.6 112 217.7l0 38.3-79.8 45.6C12.3 313 0 334.2 0 357.1L0 448c0 35.3 28.7 64 64 64 74.7 0 85.4 0 320 0l64 0c35.3 0 64-28.7 64-64l0-90.9c0-23-12.3-44.2-32.2-55.6L400 256 400 217.7c0-16-8-31-21.4-39.9l-98.6-65.8 0-48 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-24zM256 320c35.3 0 64 28.7 64 64l0 80-128 0 0-80c0-35.3 28.7-64 64-64z\"]\n};\nvar faToggleOff = {\n  prefix: 'fas',\n  iconName: 'toggle-off',\n  icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128S454.7 384 384 384l-192 0c-70.7 0-128-57.3-128-128s57.3-128 128-128l192 0zM576 256c0-106-86-192-192-192L192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192zM192 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faShoePrints = {\n  prefix: 'fas',\n  iconName: 'shoe-prints',\n  icon: [576, 512, [], \"f54b\", \"M296 192c-21.1-12.1-42.3-24.2-72-29.3l0-140.3C257.7 13 311.4 0 352 0 448 0 576 48 576 128s-119.6 96-176 96c-48 0-76-16-104-32zM128 32l48 0 0 128-48 0c-35.3 0-64-28.7-64-64s28.7-64 64-64zM232 320c28-16 56-32 104-32 56.4 0 176 16 176 96S384 512 288 512c-40.5 0-94.3-13-128-22.4l0-140.3c29.7-5.2 50.9-17.3 72-29.4zM64 480c-35.3 0-64-28.7-64-64s28.7-64 64-64l48 0 0 128-48 0z\"]\n};\nvar faFileCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'file-circle-exclamation',\n  icon: [576, 512, [], \"e4eb\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nvar faWallet = {\n  prefix: 'fas',\n  iconName: 'wallet',\n  icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64L72 128c-13.3 0-24-10.7-24-24S58.7 80 72 80l384 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L64 32zM416 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faMessage = {\n  prefix: 'fas',\n  iconName: 'message',\n  icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M0 352L0 128C0 75 43 32 96 32l320 0c53 0 96 43 96 96l0 224c0 53-43 96-96 96l-120 0c-5.2 0-10.2 1.7-14.4 4.8L166.4 539.2c-4.2 3.1-9.2 4.8-14.4 4.8-13.3 0-24-10.7-24-24l0-72-32 0c-53 0-96-43-96-96z\"]\n};\nvar faCommentAlt = faMessage;\nvar faTrophy = {\n  prefix: 'fas',\n  iconName: 'trophy',\n  icon: [512, 512, [127942], \"f091\", \"M144.3 0l224 0c26.5 0 48.1 21.8 47.1 48.2-.2 5.3-.4 10.6-.7 15.8l49.6 0c26.1 0 49.1 21.6 47.1 49.8-7.5 103.7-60.5 160.7-118 190.5-15.8 8.2-31.9 14.3-47.2 18.8-20.2 28.6-41.2 43.7-57.9 51.8l0 73.1 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 0-73.1c-16-7.7-35.9-22-55.3-48.3-18.4-4.8-38.4-12.1-57.9-23.1-54.1-30.3-102.9-87.4-109.9-189.9-1.9-28.1 21-49.7 47.1-49.7l49.6 0c-.3-5.2-.5-10.4-.7-15.8-1-26.5 20.6-48.2 47.1-48.2zM101.5 112l-52.4 0c6.2 84.7 45.1 127.1 85.2 149.6-14.4-37.3-26.3-86-32.8-149.6zM380 256.8c40.5-23.8 77.1-66.1 83.3-144.8L411 112c-6.2 60.9-17.4 108.2-31 144.8z\"]\n};\nvar faFaceDizzy = {\n  prefix: 'fas',\n  iconName: 'face-dizzy',\n  icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM134.1 153.9l25.9 25.9 25.9-25.9c7.8-7.8 20.5-7.8 28.3 0s7.8 20.5 0 28.3l-25.9 25.9 25.9 25.9c7.8 7.8 7.8 20.5 0 28.3s-20.5 7.8-28.3 0l-25.9-25.9-25.9 25.9c-7.8 7.8-20.5 7.8-28.3 0s-7.8-20.5 0-28.3l25.9-25.9-25.9-25.9c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0zm192 0l25.9 25.9 25.9-25.9c7.8-7.8 20.5-7.8 28.3 0s7.8 20.5 0 28.3l-25.9 25.9 25.9 25.9c7.8 7.8 7.8 20.5 0 28.3s-20.5 7.8-28.3 0l-25.9-25.9-25.9 25.9c-7.8 7.8-20.5 7.8-28.3 0s-7.8-20.5 0-28.3l25.9-25.9-25.9-25.9c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0zM256 304a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faBacteria = {\n  prefix: 'fas',\n  iconName: 'bacteria',\n  icon: [640, 512, [], \"e059\", \"M256-32c13.3 0 24 10.7 24 24l0 11c8.6 2.2 16.9 5.6 24.8 10.3L311 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-6.3 6.3c4.6 7.8 8 16.2 10.3 24.8l11 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-11 0c-2.2 8.6-5.6 16.9-10.3 24.8L345 151c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-4.1-4.1-30.1 30.1 4.1 4.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-4.1-4.1c-10 10-20 20-30.1 30.1L217 279c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-6.3-6.3c-7.8 4.6-16.2 8-24.8 10.3l0 11c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-11c-8.6-2.2-16.9-5.6-24.8-10.3L73 313c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l6.3-6.3c-4.6-7.8-8-16.2-10.3-24.8l-11 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l11 0c2.2-8.6 5.6-16.9 10.3-24.8L39 169c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l4.1 4.1c10-10 20-20 30.1-30.1L103 105c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l4.1 4.1 30.1-30.1-4.1-4.1c-9.4-9.4-9.4-24.6 0-33.9S191.6-2.3 201 7l6.3 6.3c7.8-4.6 16.2-8 24.8-10.3l0-11c0-13.3 10.7-24 24-24zM128 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM240 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm296 40l0 11c8.6 2.2 16.9 5.6 24.8 10.3L567 199c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-6.3 6.3c4.6 7.8 8 16.2 10.3 24.8l11 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-11 0c-2.2 8.6-5.6 16.9-10.3 24.8L601 343c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-4.1-4.1-30.1 30.1 4.1 4.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-4.1-4.1c-10 10-20 20-30.1 30.1L473 471c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-6.3-6.3c-7.8 4.6-16.2 8-24.8 10.3l0 11c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-11c-8.6-2.2-16.9-5.6-24.8-10.3L329 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l6.3-6.3c-4.6-7.8-8-16.2-10.3-24.8l-11 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l11 0c2.2-8.6 5.6-16.9 10.3-24.8L295 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l4.1 4.1c10-10 20-20 30.1-30.1L359 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l4.1 4.1 30.1-30.1-4.1-4.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l6.3 6.3c7.8-4.6 16.2-8 24.8-10.3l0-11c0-13.3 10.7-24 24-24s24 10.7 24 24zM448 384a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faEarDeaf = {\n  prefix: 'fas',\n  iconName: 'ear-deaf',\n  icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3c9.7-88 84.3-156.5 174.9-156.5 97.2 0 176 78.8 176 176 0 46-17.7 87.9-46.6 119.3-12 13-17.4 24.8-17.4 34.7l0 6.1c0 61.9-50.1 112-112 112-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48l0-6.1c0-32.9 17.4-59.6 34.4-78 18.4-20 29.6-46.6 29.6-75.9 0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faDeaf = faEarDeaf;\nvar faDeafness = faEarDeaf;\nvar faHardOfHearing = faEarDeaf;\nvar faPeopleArrows = {\n  prefix: 'fas',\n  iconName: 'people-arrows',\n  icon: [512, 512, [\"people-arrows-left-right\"], \"e068\", \"M32 64A64 64 0 1 1 160 64 64 64 0 1 1 32 64zM0 224c0-35.3 28.7-64 64-64l64 0c3.2 0 6.4 .2 9.5 .7L93.1 205.1C65 233.2 65 278.8 93.1 306.9l56 56c3.4 3.4 7 6.4 10.9 9l0 92.1c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-120.6C12.9 332.4 0 311.7 0 288l0-64zM352 64a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm66.9 141.1l-44.4-44.4c3.1-.5 6.3-.7 9.5-.7l64 0c35.3 0 64 28.7 64 64l0 64c0 23.7-12.9 44.4-32 55.4L480 464c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-92.1c3.9-2.6 7.5-5.6 10.9-9l56-56c28.1-28.1 28.1-73.7 0-101.8zM302.8 177.8c9-3.7 19.3-1.7 26.2 5.2l56 56c9.4 9.4 9.4 24.6 0 33.9l-56 56c-6.9 6.9-17.2 8.9-26.2 5.2S288 321.7 288 312l0-24-64 0 0 24c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-56-56c-9.4-9.4-9.4-24.6 0-33.9l56-56c6.9-6.9 17.2-8.9 26.2-5.2S224 190.3 224 200l0 24 64 0 0-24c0-9.7 5.8-18.5 14.8-22.2z\"]\n};\nvar faPeopleArrowsLeftRight = faPeopleArrows;\nvar faHandsClapping = {\n  prefix: 'fas',\n  iconName: 'hands-clapping',\n  icon: [512, 512, [], \"e1a8\", \"M344 8l0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-64c0-13.3 10.7-24 24-24S344-5.3 344 8zM220 10.7l32 48c7.4 11 4.4 25.9-6.7 33.3s-25.9 4.4-33.3-6.7l-32-48c-7.4-11-4.4-25.9 6.7-33.3S212.6-.3 220 10.7zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1 48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4zM453.3 4c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7z\"]\n};\nvar faVirusCovidSlash = {\n  prefix: 'fas',\n  iconName: 'virus-covid-slash',\n  icon: [576, 512, [], \"e4a9\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-83-83 11.4-11.4c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-11.3 11.3-23.8-23.8c17.9-23.5 29.9-51.7 34.1-82.3l33.6 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-33.6 0c-4.2-30.7-16.3-58.8-34.1-82.3l23.8-23.8 11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L440.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l11.3 11.3-23.8 23.8C370.8 97.9 342.7 85.8 312 81.6l0-33.6 16 0c13.3 0 24-10.7 24-24S341.3 0 328 0L248 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.6c-30.7 4.2-58.8 16.3-82.3 34.1L157.9 92 169.2 80.6c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L123.9 58.1 41-24.9zM113.6 232l-33.6 0 0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 33.6 0c4.2 30.7 16.3 58.8 34.1 82.3l-23.8 23.8-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.3-11.3 23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1l0 33.6-16 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0-33.6c13.4-1.8 26.4-5.2 38.7-9.9L123.5 193.3c-4.7 12.3-8 25.2-9.9 38.7z\"]\n};\nvar faCalendarDays = {\n  prefix: 'fas',\n  iconName: 'calendar-days',\n  icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zM64 240l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm128 0l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faDiamondTurnRight = {\n  prefix: 'fas',\n  iconName: 'diamond-turn-right',\n  icon: [512, 512, [\"directions\"], \"f5eb\", \"M215 17L17 215C6.1 225.9 0 240.6 0 256s6.1 30.1 17 41L215 495c10.9 10.9 25.6 17 41 17s30.1-6.1 41-17L495 297c10.9-10.9 17-25.6 17-41s-6.1-30.1-17-41L297 17C286.1 6.1 271.4 0 256 0s-30.1 6.1-41 17zM385 257l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-78.1 0c-13.3 0-24 10.7-24 24l0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40c0-39.8 32.2-72 72-72l78.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9z\"]\n};\nvar faDirections = faDiamondTurnRight;\nvar faHandPointUp = {\n  prefix: 'fas',\n  iconName: 'hand-point-up',\n  icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32l0 208-64 0 0-208zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-64-64c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6 13.2 0 25.4-4 35.6-10.8 8.7 24.9 32.5 42.8 60.4 42.8 11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nvar faBezierCurve = {\n  prefix: 'fas',\n  iconName: 'bezier-curve',\n  icon: [640, 512, [], \"f55b\", \"M296 136l0-48 48 0 0 48-48 0zM288 32c-26.5 0-48 21.5-48 48l0 4-118.4 0C111.2 62.7 89.3 48 64 48 28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36l66.9 0c-58.9 39.6-98.9 105-104 180L80 320c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-3.3 0c5.9-67 48.5-123.4 107.5-149.1 8.6 12.7 23.2 21.1 39.8 21.1l64 0c16.6 0 31.1-8.4 39.8-21.1 59 25.7 101.6 82.1 107.5 149.1l-3.3 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-4.5 0c-5-75-45.1-140.4-104-180l66.9 0c10.4 21.3 32.3 36 57.6 36 35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36l-118.4 0 0-4c0-26.5-21.5-48-48-48l-64 0zM88 376l48 0 0 48-48 0 0-48zm416 48l0-48 48 0 0 48-48 0z\"]\n};\nvar faPersonHalfDress = {\n  prefix: 'fas',\n  iconName: 'person-half-dress',\n  icon: [384, 512, [], \"e548\", \"M143.4-3.9c9.7-16.8 27.8-28.1 48.6-28.1 30.9 0 56 25.1 56 56 0 25.4-16.9 46.8-40 53.7l0 0c-5.1 1.5-10.4 2.3-16 2.3-30.9 0-56-25.1-56-56l0 0c0-10.1 2.7-19.7 7.4-27.9zM318.3 299.1L272 236.7 272 512c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160 0-.4 0-238.6c36.2 4.4 69.2 23.4 91.2 53l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6zM176 113l0 399c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-25.8 0c-10.9 0-18.6-10.7-15.2-21.1l43-129-48.3 65.1c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95c22-29.6 55.1-48.6 91.2-53z\"]\n};\nvar faSquarePollHorizontal = {\n  prefix: 'fas',\n  iconName: 'square-poll-horizontal',\n  icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 152c0 13.3-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l112 0c13.3 0 24 10.7 24 24zm72 80c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l208 0zM192 360c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24z\"]\n};\nvar faPollH = faSquarePollHorizontal;\nvar faSchoolCircleXmark = {\n  prefix: 'fas',\n  iconName: 'school-circle-xmark',\n  icon: [640, 512, [], \"e56d\", \"M64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l276 0c-10.5-14.6-19-30.7-25.1-48l-90.9 0 0-88c0-22.1 17.9-40 40-40l48 0c1 0 1.9 0 2.9 .1 26.3-74.6 97.5-128.1 181.1-128.1 28.6 0 55.6 6.2 80 17.4l0-33.4c0-35.3-28.7-64-64-64l-64 0-127.9-115.1c-18.3-16.4-46-16.4-64.2 0L128 128 64 128zm64 240c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 256l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM288 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faHandLizard = {\n  prefix: 'fas',\n  iconName: 'hand-lizard',\n  icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64l238.5 0c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8l0 76c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-13.8-78.1-50.2-161.9 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l128 0c26.5 0 48-21.5 48-48s-21.5-48-48-48L48 160c-26.5 0-48-21.5-48-48z\"]\n};\nvar faChalkboard = {\n  prefix: 'fas',\n  iconName: 'chalkboard',\n  icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 64c-35.3 0-64 28.7-64 64l0 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-256c0-35.3-28.7-64-64-64L96 64zM480 384l-64 0 0-32c0-17.7-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32l0 32-160 0 0-256 384 0 0 256z\"]\n};\nvar faBlackboard = faChalkboard;\nvar faUpRightFromSquare = {\n  prefix: 'fas',\n  iconName: 'up-right-from-square',\n  icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M290.4 19.8C295.4 7.8 307.1 0 320 0L480 0c17.7 0 32 14.3 32 32l0 160c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9L400 157.3 246.6 310.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L354.7 112 297.4 54.6c-9.2-9.2-11.9-22.9-6.9-34.9zM0 176c0-44.2 35.8-80 80-80l80 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-80 0c-8.8 0-16 7.2-16 16l0 256c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-80c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80c0 44.2-35.8 80-80 80L80 512c-44.2 0-80-35.8-80-80L0 176z\"]\n};\nvar faExternalLinkAlt = faUpRightFromSquare;\nvar faSquareFull = {\n  prefix: 'fas',\n  iconName: 'square-full',\n  icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 64C0 28.7 28.7 0 64 0L448 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64z\"]\n};\nvar faClover = {\n  prefix: 'fas',\n  iconName: 'clover',\n  icon: [512, 512, [], \"e139\", \"M310.4 16C346.6 16 376 45.4 376 81.7l0 5.2c0 11.2-2.7 22.3-7.8 32.2l-2.3 4.2-20.1 33.5c-1.1 1.9-1.2 3.4-1.1 4.5 .2 1.3 .9 2.7 2.1 3.9s2.6 1.9 3.9 2.1c1.1 .2 2.6 .1 4.5-1.1l33.5-20.1 4.2-2.3c10-5.1 21-7.8 32.2-7.8l5.2 0c36.2 0 65.6 29.4 65.6 65.7 0 17.4-6.9 34.1-19.2 46.4l-1.3 1.3c-3.7 3.7-3.7 9.6 0 13.3l1.3 1.3c12.3 12.3 19.2 29 19.2 46.4 0 36.2-29.4 65.6-65.6 65.6l-5.2 0c-12.8 0-25.5-3.5-36.5-10.1l-33.5-20.1c-1.9-1.1-3.4-1.2-4.5-1.1-1.3 .2-2.7 .9-3.9 2.1s-1.9 2.6-2.1 3.9c-.2 1.1-.1 2.6 1.1 4.5l20.1 33.5c6.6 11 10.1 23.6 10.1 36.5l0 5.2c0 36.2-29.4 65.6-65.6 65.6-17.4 0-34.1-6.9-46.4-19.2l-1.3-1.3c-3.7-3.7-9.6-3.7-13.3 0l-1.3 1.3c-12.3 12.3-29 19.2-46.4 19.2-36.2 0-65.6-29.4-65.7-65.6l0-5.2c0-12.8 3.5-25.5 10.1-36.5l20.1-33.5c1.1-1.9 1.2-3.4 1.1-4.5-.2-1.3-.9-2.7-2.1-3.9s-2.6-1.9-3.9-2.1c-.5-.1-1.2-.1-1.9 0l-2.5 1-33.5 20.1c-11 6.6-23.6 10.1-36.5 10.1l-5.2 0C45.4 376 16 346.6 16 310.4 16 293 22.9 276.3 35.2 264l1.3-1.3 1.2-1.5c2.1-3.1 2.1-7.2 0-10.3l-1.2-1.5-1.3-1.3C22.9 235.8 16 219.1 16 201.7 16 165.4 45.4 136 81.7 136l5.2 0c12.8 0 25.5 3.5 36.5 10.1l33.5 20.1 2.5 1c.7 .1 1.4 .1 1.9 .1 1.3-.2 2.7-.9 3.9-2.1s1.9-2.6 2.1-3.9c.1-.5 .1-1.2-.1-1.9l-1-2.5-20.1-33.5c-6.6-11-10.1-23.6-10.1-36.5l0-5.2c0-36.2 29.4-65.7 65.7-65.7 17.4 0 34.1 6.9 46.4 19.2l1.3 1.3c3.7 3.6 9.6 3.7 13.3 0l1.3-1.3 4.8-4.4C280.5 21.3 295.1 16 310.4 16z\"]\n};\nvar faTeethOpen = {\n  prefix: 'fas',\n  iconName: 'teeth-open',\n  icon: [512, 512, [], \"f62f\", \"M64 32C28.7 32 0 60.7 0 96l0 80c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-80c0-35.3-28.7-64-64-64L64 32zm0 272c-35.3 0-64 28.7-64 64l0 48c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-48c0-35.3-28.7-64-64-64L64 304zm80-160c0-26.5 21.5-48 48-48s48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24zm128 0c0-26.5 21.5-48 48-48s48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24zM80 112c17.7 0 32 14.3 32 32l0 24c0 13.3-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24l0-24c0-17.7 14.3-32 32-32zm320 32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 24c0 13.3-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24l0-24zM48 384l0-16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32zm144 48c-26.5 0-48-21.5-48-48l0-16c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 16c0 26.5-21.5 48-48 48zm128 0c-26.5 0-48-21.5-48-48l0-16c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 16c0 26.5-21.5 48-48 48zm112-16c-17.7 0-32-14.3-32-32l0-16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 16c0 17.7-14.3 32-32 32z\"]\n};\nvar faBarsStaggered = {\n  prefix: 'fas',\n  iconName: 'bars-staggered',\n  icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faReorder = faBarsStaggered;\nvar faStream = faBarsStaggered;\nvar faWarehouse = {\n  prefix: 'fas',\n  iconName: 'warehouse',\n  icon: [576, 512, [], \"f494\", \"M0 142.1L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-240c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32l0 240c0 17.7 14.3 32 32 32s32-14.3 32-32l0-337.9c0-27.5-17.6-52-43.8-60.7L303.2 5.1c-9.9-3.3-20.5-3.3-30.4 0L43.8 81.4C17.6 90.1 0 114.6 0 142.1zM464 256l-352 0 0 64 352 0 0-64zM112 416l352 0 0-64-352 0 0 64zm352 32l-352 0 0 64 352 0 0-64z\"]\n};\nvar faSwatchbook = {\n  prefix: 'fas',\n  iconName: 'swatchbook',\n  icon: [512, 512, [], \"f5c3\", \"M0 48C0 21.5 21.5 0 48 0l96 0c26.5 0 48 21.5 48 48l0 368c0 53-43 96-96 96S0 469 0 416L0 48zM240 409.6l0-271.5 48.1-48.1c18.7-18.7 49.1-18.7 67.9 0l67.9 67.9c18.7 18.7 18.7 49.1 0 67.9L240 409.6zM205.5 512l192-192 66.6 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-258.5 0zM80 64c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 64zM64 208l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faCampground = {\n  prefix: 'fas',\n  iconName: 'campground',\n  icon: [512, 512, [9978], \"f6bb\", \"M344.8 52.3c11.2-13.7 9.2-33.8-4.5-45s-33.8-9.2-45 4.5l-39.2 48-39.2-48C205.6-1.9 185.4-4 171.7 7.2s-15.7 31.4-4.5 45l47.4 58-202 246.9C4.5 367.1 0 379.6 0 392.6L0 432c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-39.4c0-12.9-4.5-25.5-12.7-35.5l-202-246.9 47.4-58zM256 288l112 128-224 0 112-128z\"]\n};\nvar faPersonWalkingArrowRight = {\n  prefix: 'fas',\n  iconName: 'person-walking-arrow-right',\n  icon: [576, 512, [], \"e552\", \"M104.5 24a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm-8 181.3L73.9 227.9c-6 6-9.4 14.1-9.4 22.6l0 37.5c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-37.5c0-25.5 10.1-49.9 28.1-67.9l35.1-35.1c22.8-22.8 53.6-35.6 85.8-35.6 36.9 0 71.8 16.8 94.8 45.6L262.3 180c6.1 7.6 15.3 12 25 12l33.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-33.2 0c-29.2 0-56.7-13.3-75-36l-3.8-4.7 0 115.2 34.5 29.6c17.7 15.2 29.3 36.2 32.6 59.3l12.6 88.1c2.5 17.5-9.7 33.7-27.2 36.2s-33.7-9.7-36.2-27.2l-12.6-88.1c-1.1-7.7-5-14.7-10.9-19.8L130 347.5c-21.3-18.2-33.5-44.9-33.5-72.9l0-69.3zM96.6 371c2.4 2.3 4.8 4.6 7.4 6.8l46 39.4-2.2 7.6c-4.5 15.7-12.9 30-24.4 41.5L55.1 534.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l68.3-68.3c3.8-3.8 6.6-8.6 8.1-13.8L96.6 371zM505.5 345c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-102.1 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l102.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72z\"]\n};\nvar faGlasses = {\n  prefix: 'fas',\n  iconName: 'glasses',\n  icon: [576, 512, [], \"f530\", \"M143.3 96c-14 0-26.5 9.2-30.6 22.6L70.4 256 224 256c17.7 0 32 14.3 32 32l64 0c0-17.7 14.3-32 32-32l153.6 0-42.3-137.4C459.2 105.2 446.8 96 432.7 96L400 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l32.7 0c42.1 0 79.4 27.5 91.8 67.8l45.4 147.5c4.1 13.2 6.1 26.9 6.1 40.7l0 96c0 53-43 96-96 96l-64 0c-53 0-96-43-96-96l0-32-64 0 0 32c0 53-43 96-96 96l-64 0c-53 0-96-43-96-96l0-96c0-13.8 2.1-27.5 6.1-40.7L51.5 99.8C63.9 59.5 101.1 32 143.3 32L176 32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.7 0zM64 320l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64-128 0zm416 96c17.7 0 32-14.3 32-32l0-64-128 0 0 64c0 17.7 14.3 32 32 32l64 0z\"]\n};\nvar faCirclePause = {\n  prefix: 'fas',\n  iconName: 'circle-pause',\n  icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 192l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faMemory = {\n  prefix: 'fas',\n  iconName: 'memory',\n  icon: [512, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128l0 7.4C0 142.2 4.4 148 10.1 151.7 23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6l0 55.4 512 0 0-55.4c0-6.8-4.4-12.6-10.1-16.3-13.2-8.6-21.9-23.4-21.9-40.3s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3l0-7.4c0-35.3-28.7-64-64-64L64 64zM512 416l0-64-512 0 0 64c0 17.7 14.3 32 32 32l64 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 24 88 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 24 88 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 24 64 0c17.7 0 32-14.3 32-32zM160 160l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faGift = {\n  prefix: 'fas',\n  iconName: 'gift',\n  icon: [512, 512, [127873], \"f06b\", \"M321.5 68.8C329.1 55.9 342.9 48 357.8 48l2.2 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-73.3 0 34.8-59.2zm-131 0l34.8 59.2-73.3 0c-22.1 0-40-17.9-40-40s17.9-40 40-40l2.2 0c14.9 0 28.8 7.9 36.3 20.8zm89.6-24.3l-24.1 41-24.1-41C215.7 16.9 186.1 0 154.2 0L152 0c-48.6 0-88 39.4-88 88 0 14.4 3.5 28 9.6 40L32 128c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l448 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-41.6 0c6.1-12 9.6-25.6 9.6-40 0-48.6-39.4-88-88-88l-2.2 0c-31.9 0-61.5 16.9-77.7 44.4zM480 272l-200 0 0 208 136 0c35.3 0 64-28.7 64-64l0-144zm-248 0l-200 0 0 144c0 35.3 28.7 64 64 64l136 0 0-208z\"]\n};\nvar faMoneyBillWheat = {\n  prefix: 'fas',\n  iconName: 'money-bill-wheat',\n  icon: [512, 512, [], \"e52a\", \"M176-16c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80 0-8.8 7.2-16 16-16zM56 0l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 48C42.7 48 32 37.3 32 24S42.7 0 56 0zM24 72l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 120C10.7 120 0 109.3 0 96S10.7 72 24 72zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 0c0-8.8 7.2-16 16-16 44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80zM400-16c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80 0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80 8.8 0 16 7.2 16 16zM352 112c8.8 0 16 7.2 16 16 0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80 8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faDungeon = {\n  prefix: 'fas',\n  iconName: 'dungeon',\n  icon: [512, 512, [], \"f6d9\", \"M347.5 144.8c6.5 5.4 12.5 11.3 18 17.7 8.7 10.2 23.7 14 35.1 6.9l54.1-33.8c11.2-7 14.7-21.7 6.9-32.2-15.3-20.5-33.5-38.6-54.1-53.8-10.4-7.6-24.7-4.3-31.8 6.4l-35.1 52.6c-7.8 11.6-3.8 27.3 7 36.2zM327.8 41.1c8.6-12.9 2.9-30.5-12.2-34.1-19.1-4.6-39.1-7-59.6-7s-40.4 2.4-59.6 7c-15.1 3.6-20.8 21.2-12.2 34.1l40 60c5.2 7.8 14.5 11.7 23.9 11.2 5.2-.3 10.6-.3 15.8 0 9.4 .5 18.7-3.4 23.9-11.2l40-60zM50.5 103.3c-7.9 10.5-4.3 25.3 6.9 32.2l54.1 33.8c11.4 7.1 26.3 3.3 35.1-6.9 5.5-6.4 11.5-12.3 18-17.7 10.8-8.9 14.8-24.6 7-36.2L136.4 55.9c-7.1-10.7-21.5-14-31.8-6.4-20.6 15.1-38.8 33.3-54.1 53.8zm62 141.1c.8-9.9-3.3-19.9-11.8-25.1L41 182c-12.9-8-29.9-2.3-33.6 12.5-4.9 19.7-7.5 40.3-7.5 61.6l0 24c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-24c0-3.9 .2-7.8 .5-11.6zm287.1 0c.3 3.8 .5 7.7 .5 11.6l0 24c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-24c0-21.2-2.6-41.8-7.5-61.6-3.6-14.7-20.7-20.5-33.6-12.5l-59.7 37.3c-8.4 5.3-12.6 15.2-11.8 25.1zM88 352l-64 0c-13.3 0-24 10.7-24 24L0 488c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm400 0l-64 0c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zM280 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 304c0 13.3 10.7 24 24 24s24-10.7 24-24l0-304zm-80 32c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272zm160 0c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272z\"]\n};\nvar faSuitcaseMedical = {\n  prefix: 'fas',\n  iconName: 'suitcase-medical',\n  icon: [512, 512, [\"medkit\"], \"f0fa\", \"M192 56l0 40 128 0 0-40c0-4.4-3.6-8-8-8L200 48c-4.4 0-8 3.6-8 8zm-48 8l0-8c0-30.9 25.1-56 56-56L312 0c30.9 0 56 25.1 56 56l0 424-224 0 0-416zM96 176l0 304-32 0c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64l32 0 0 80zM416 480l0-384 32 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64l-32 0zM244 208c-8.8 0-16 7.2-16 16l0 36-36 0c-8.8 0-16 7.2-16 16l0 24c0 8.8 7.2 16 16 16l36 0 0 36c0 8.8 7.2 16 16 16l24 0c8.8 0 16-7.2 16-16l0-36 36 0c8.8 0 16-7.2 16-16l0-24c0-8.8-7.2-16-16-16l-36 0 0-36c0-8.8-7.2-16-16-16l-24 0z\"]\n};\nvar faMedkit = faSuitcaseMedical;\nvar faPersonCane = {\n  prefix: 'fas',\n  iconName: 'person-cane',\n  icon: [448, 512, [], \"e53c\", \"M232-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM144 236.7L97.7 299.1c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95C142 132 181.7 112 224 112s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6L304 236.7 304 512c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-275.3zM392 384c-4.4 0-8 3.6-8 8 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 128c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-128c0-4.4-3.6-8-8-8z\"]\n};\nvar faGauge = {\n  prefix: 'fas',\n  iconName: 'gauge',\n  icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm320 96c0-26.9-16.5-49.9-40-59.3L280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 172.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faDashboard = faGauge;\nvar faGaugeMed = faGauge;\nvar faTachometerAltAverage = faGauge;\nvar faEnvelopeOpenText = {\n  prefix: 'fas',\n  iconName: 'envelope-open-text',\n  icon: [576, 512, [], \"f658\", \"M288 33.9L96.4 175.8 254.5 293c5.3 3.9 11.2 6.9 17.5 8.7L272 464c0 5.5 .5 10.8 1.3 16L96 480c-35.3 0-64-28.7-64-64l0-239.9c0-20.3 9.6-39.4 25.9-51.4L254.5-21c9.7-7.2 21.4-11 33.5-11s23.8 3.9 33.5 11L518.1 124.7c7.2 5.3 13.1 12 17.4 19.6-2.5-.2-5-.3-7.5-.3L436.6 144 288 33.9zM320 240c0-26.5 21.5-48 48-48l160 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0c-26.5 0-48-21.5-48-48l0-224zm80 16c-13.3 0-24 10.7-24 24s10.7 24 24 24l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-96 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0z\"]\n};\nvar faToolbox = {\n  prefix: 'fas',\n  iconName: 'toolbox',\n  icon: [512, 512, [129520], \"f552\", \"M176 56l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 48c-4.4 0-8 3.6-8 8zM128 96l0-40c0-30.9 25.1-56 56-56L328 0c30.9 0 56 25.1 56 56l0 40 28.1 0c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9l0 76.1-136 0 0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-144 0 0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-136 0 0-76.1c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1L128 96zM0 416l0-96 136 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 144 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 136 0 0 96c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64z\"]\n};\nvar faPowerOff = {\n  prefix: 'fas',\n  iconName: 'power-off',\n  icon: [512, 512, [9211], \"f011\", \"M288 0c0-17.7-14.3-32-32-32S224-17.7 224 0l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32L288 0zM146.3 98.4c14.5-10.1 18-30.1 7.9-44.6s-30.1-18-44.6-7.9C43.4 92.1 0 169 0 256 0 397.4 114.6 512 256 512S512 397.4 512 256c0-87-43.4-163.9-109.7-210.1-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6c49.8 34.8 82.3 92.4 82.3 157.6 0 106-86 192-192 192S64 362 64 256c0-65.2 32.5-122.9 82.3-157.6z\"]\n};\nvar faSignal = {\n  prefix: 'fas',\n  iconName: 'signal',\n  icon: [512, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M488 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24s24-10.7 24-24l0-400zM360 128c-13.3 0-24 10.7-24 24l0 304c0 13.3 10.7 24 24 24s24-10.7 24-24l0-304c0-13.3-10.7-24-24-24zM280 248c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 208c0 13.3 10.7 24 24 24s24-10.7 24-24l0-208zM152 320c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zM48 384c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-13.3-10.7-24-24-24z\"]\n};\nvar faSignal5 = faSignal;\nvar faSignalPerfect = faSignal;\nvar faArrowsSpin = {\n  prefix: 'fas',\n  iconName: 'arrows-spin',\n  icon: [512, 512, [], \"e4bb\", \"M481.7 240.1c-17.6-1.2-32.9 12-34.2 29.7-3.3 47-23.6 89.4-54.8 121L361 359c-6.9-6.9-17.2-8.9-26.2-5.2S320 366.3 320 376l0 112c0 13.3 10.7 24 24 24l112 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-35-35c41.7-42.2 68.9-98.8 73.4-161.8 1.2-17.6-12-32.9-29.7-34.2zM39 41L74 76c-41.7 42.2-68.9 98.8-73.4 161.8-1.2 17.6 12 32.9 29.7 34.2s32.9-12 34.2-29.7c3.3-47 23.6-89.4 54.8-121L151 153c6.9 6.9 17.2 8.9 26.2 5.2S192 145.7 192 136l0-112c0-13.3-10.7-24-24-24L56 0C46.3 0 37.5 5.8 33.8 14.8S32.2 34.1 39 41zm201-10.7c-1.2 17.6 12 32.9 29.7 34.2 47 3.3 89.4 23.6 121 54.8L359 151c-6.9 6.9-8.9 17.2-5.2 26.2S366.3 192 376 192l112 0c13.3 0 24-10.7 24-24l0-112c0-9.7-5.8-18.5-14.8-22.2S477.9 32.2 471 39L436 74c-42.2-41.7-98.8-68.9-161.8-73.4-17.6-1.2-32.9 12-34.2 29.7zM41 473l35-35c42.2 41.7 98.8 68.9 161.8 73.4 17.6 1.2 32.9-12 34.2-29.7s-12-32.9-29.7-34.2c-47-3.3-89.4-23.6-121-54.8L153 361c6.9-6.9 8.9-17.2 5.2-26.2S145.7 320 136 320L24 320c-13.3 0-24 10.7-24 24L0 456c0 9.7 5.8 18.5 14.8 22.2S34.1 479.8 41 473z\"]\n};\nvar faJoint = {\n  prefix: 'fas',\n  iconName: 'joint',\n  icon: [576, 512, [], \"f595\", \"M360 0c13.3 0 24 10.7 24 24l0 19c0 40.3 16 79 44.5 107.5l21 21C469 191 480 217.4 480 245l0 19c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-19c0-14.9-5.9-29.1-16.4-39.6l-21-21C357.1 146.9 336 96 336 43l0-19c0-13.3 10.7-24 24-24zM552 288c-13.3 0-24-10.7-24-24l0-19c0-40.3-16-79-44.5-107.5l-21-21C443 97 432 70.6 432 43l0-19c0-13.3 10.7-24 24-24s24 10.7 24 24l0 19c0 14.9 5.9 29.1 16.4 39.6l21 21C554.9 141.1 576 192 576 245l0 19c0 13.3-10.7 24-24 24zM292.7 320c5.6 0 10.7 2.9 13.6 7.6L394.6 471c1.3 2.1 0 4.9-2.4 5.2-16.1 2.5-32.4 3.7-48.7 3.7l-38.1 0c-5.6 0-10.7-2.9-13.6-7.6l-79-128.4c-6-9.8 0-22.6 11.5-23.3 6.7-.4 13.4-.6 20.2-.6l48.3 0zM459.3 465.9c-6.4 1-12.7-1.9-16.1-7.4L374.1 346.1c-6.7-10.9 1.5-24.7 14.2-22.9 1.3 .2 2.6 .4 3.8 .6l136.4 21c27.3 4.2 47.4 27.7 47.4 55.3s-20.1 51.1-47.4 55.3l-69.2 10.6zM138.7 336c6.7-1.5 13.6 1.4 17.2 7.2l68.9 112c6.6 10.7-1.2 24.4-13.8 23.1-13-1.4-25.9-3.5-38.6-6.5L31.2 439.2C12.9 435 0 418.7 0 400s12.9-35 31.2-39.2L138.7 336z\"]\n};\nvar faBraille = {\n  prefix: 'fas',\n  iconName: 'braille',\n  icon: [384, 512, [], \"f2a1\", \"M80 144a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0 136c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0 56c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm248-80c0 13.3-10.7 24-24 24s-24-10.7-24-24 10.7-24 24-24 24 10.7 24 24zm56 0c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zM304 232a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0 104a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-192a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faBasketShopping = {\n  prefix: 'fas',\n  iconName: 'basket-shopping',\n  icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M288 0c6.6 0 12.9 2.7 17.4 7.5l144 152 .5 .5 78.1 0c17.7 0 32 14.3 32 32 0 14.5-9.6 26.7-22.8 30.7L491.1 429.9c-6.5 29.3-32.5 50.1-62.5 50.1l-281.3 0c-30 0-56-20.8-62.5-50.1l-46-207.2c-13.2-3.9-22.8-16.2-22.8-30.7 0-17.7 14.3-32 32-32l78.1 0 .5-.5 144-152C275.1 2.7 281.4 0 288 0zm0 58.9L192.2 160 383.8 160 288 58.9zM208 264c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112zm80-24c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm128 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112z\"]\n};\nvar faShoppingBasket = faBasketShopping;\nvar faBridge = {\n  prefix: 'fas',\n  iconName: 'bridge',\n  icon: [512, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l8 0 0 64-40 0 0 112c37.6 9.4 64 43.2 64 82l0 94c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96s96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-94c0-38.8 26.4-72.6 64-82l0-112-40 0 0-64 8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM424 96l0 64-80 0 0-64 80 0zM296 96l0 64-80 0 0-64 80 0zM88 96l80 0 0 64-80 0 0-64z\"]\n};\nvar faPlaneArrival = {\n  prefix: 'fas',\n  iconName: 'plane-arrival',\n  icon: [576, 512, [128748], \"f5af\", \"M386.6 193.1L265.9 3.7c-4.8-7.6-12.6-12.8-21.4-14.3l-43.1-7.6c-10.8-1.9-20.2 7.3-18.6 18.1l24 161.6-105-18.5-33.8-61.8C64.5 74.7 58.2 70.2 51.1 69L34 66c-9.8-1.7-18.8 5.9-18.8 15.8l.6 106.3c.2 30.9 22.4 57.3 52.9 62.7l13.5 2.4 0 0 417.6 73.6c30.5 5.4 59.5-15 64.9-45.4s-15-59.5-45.4-64.9L386.6 193.1zM224 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm131.2-15.3a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448z\"]\n};\nvar faCashRegister = {\n  prefix: 'fas',\n  iconName: 'cash-register',\n  icon: [512, 512, [], \"f788\", \"M96 0C60.7 0 32 28.7 32 64s28.7 64 64 64l48 0 0 32-57 0c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-69.6c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160l-217 0 0-32 48 0c35.3 0 64-28.7 64-64S291.3 0 256 0L96 0zm0 48l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L96 80c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 424c0-13.3 10.7-24 24-24l336 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 448c-13.3 0-24-10.7-24-24zm48-160a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nvar faRing = {\n  prefix: 'fas',\n  iconName: 'ring',\n  icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3 45.4-24.2 107.7-38.3 174.9-38.3s129.5 14.1 174.9 38.3c12.8-11.6 17.1-22.5 17.1-30.3 0-12.3-10.8-32-47.9-50.6-35.2-17.6-86.1-29.4-144.1-29.4s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7 33.2 12.4 75.7 20.3 122.9 20.3s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208C0 158.4 39.4 122.2 83.3 100.2 129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8l0 96c0 49.6-39.4 85.8-83.3 107.8-45.9 22.9-107 36.2-172.7 36.2S129.1 434.7 83.3 411.8C39.4 389.8 0 353.6 0 304l0-96z\"]\n};\nvar faAquarius = {\n  prefix: 'fas',\n  iconName: 'aquarius',\n  icon: [576, 512, [], \"e845\", \"M401.7 291.4c9-4.5 19.6-4.5 28.6 0l128 64c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L416 355.8 302.3 412.6c-9 4.5-19.6 4.5-28.6 0L160 355.8 46.3 412.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9l128-64c9-4.5 19.6-4.5 28.6 0L288 348.2 401.7 291.4zm3.4-193.5c8.2-3 17.3-2.5 25.2 1.5l128 64c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L416 163.8 302.3 220.6c-9 4.5-19.6 4.5-28.6 0L160 163.8 46.3 220.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9l128-64 3.4-1.5c8.2-3 17.3-2.5 25.2 1.5l113.7 56.8 113.7-56.8 3.4-1.5z\"]\n};\nvar faShareNodes = {\n  prefix: 'fas',\n  iconName: 'share-nodes',\n  icon: [512, 512, [\"share-alt\"], \"f1e0\", \"M384 192c53 0 96-43 96-96s-43-96-96-96-96 43-96 96c0 5.4 .5 10.8 1.3 16L159.6 184.1c-16.9-15-39.2-24.1-63.6-24.1-53 0-96 43-96 96s43 96 96 96c24.4 0 46.6-9.1 63.6-24.1L289.3 400c-.9 5.2-1.3 10.5-1.3 16 0 53 43 96 96 96s96-43 96-96-43-96-96-96c-24.4 0-46.6 9.1-63.6 24.1L190.7 272c.9-5.2 1.3-10.5 1.3-16s-.5-10.8-1.3-16l129.7-72.1c16.9 15 39.2 24.1 63.6 24.1z\"]\n};\nvar faShareAlt = faShareNodes;\nvar faPersonCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'person-circle-exclamation',\n  icon: [640, 512, [], \"e53f\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nvar faBinoculars = {\n  prefix: 'fas',\n  iconName: 'binoculars',\n  icon: [512, 512, [], \"f1e5\", \"M128 32l32 0c17.7 0 32 14.3 32 32l0 32-96 0 0-32c0-17.7 14.3-32 32-32zm64 96l0 320c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32l0-59.1c0-34.6 9.4-68.6 27.2-98.3 13.7-22.8 22.5-48.2 25.8-74.6L60.5 156c2-16 15.6-28 31.8-28l99.8 0zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6 17.8 29.7 27.2 63.7 27.2 98.3l0 59.1c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-320 99.8 0zM320 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 32-96 0 0-32zm-32 64l0 160-64 0 0-160 64 0z\"]\n};\nvar faKipSign = {\n  prefix: 'fas',\n  iconName: 'kip-sign',\n  icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4 128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 168-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 168c0 17.7 14.3 32 32 32s32-14.3 32-32l0-122.4 171.2 146.7c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L173.2 280 352 280c13.3 0 24-10.7 24-24s-10.7-24-24-24L173.2 232 340.8 88.3z\"]\n};\nvar faHardDrive = {\n  prefix: 'fas',\n  iconName: 'hard-drive',\n  icon: [448, 512, [128436, \"hdd\"], \"f0a0\", \"M64 32C28.7 32 0 60.7 0 96L0 260.1C18.1 247.4 40.2 240 64 240l320 0c23.8 0 45.9 7.4 64 20.1L448 96c0-35.3-28.7-64-64-64L64 32zM448 352c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64zM224 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHdd = faHardDrive;\nvar faRankingStar = {\n  prefix: 'fas',\n  iconName: 'ranking-star',\n  icon: [576, 512, [], \"e561\", \"M321.8 54.1L298.2 6.3c-3.9-8.3-16.1-8.6-20.4 0l-23.6 47.8-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-26.5 0-48 21.5-48 48l0 160c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0zM48 320c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-64 0zM416 432l0 32c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48l-64 0c-26.5 0-48 21.5-48 48z\"]\n};\nvar faUserTie = {\n  prefix: 'fas',\n  iconName: 'user-tie',\n  icon: [448, 512, [], \"f508\", \"M224 248a120 120 0 1 1 0-240 120 120 0 1 1 0 240zm-30.5 56l61 0c9.7 0 17.5 7.8 17.5 17.5 0 4.2-1.5 8.2-4.2 11.4l-27.4 32 31 115.1 .6 0 34.6-138.5c2.2-8.7 11.1-14 19.5-10.8 61.9 23.6 105.9 83.6 105.9 153.8 0 15.1-12.3 27.4-27.4 27.4L43.4 512c-15.1 0-27.4-12.3-27.4-27.4 0-70.2 44-130.2 105.9-153.8 8.4-3.2 17.3 2.1 19.5 10.8l34.6 138.5 .6 0 31-115.1-27.4-32c-2.7-3.2-4.2-7.2-4.2-11.4 0-9.7 7.8-17.5 17.5-17.5z\"]\n};\nvar faEllipsis = {\n  prefix: 'fas',\n  iconName: 'ellipsis',\n  icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M0 256a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm168 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm224-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faEllipsisH = faEllipsis;\nvar faStoreSlash = {\n  prefix: 'fas',\n  iconName: 'store-slash',\n  icon: [576, 512, [], \"e071\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-58.6-58.6c1.1-4 1.6-8.2 1.6-12.5l0-151.2c-12.5 4.6-26.1 7.2-40.5 7.2-8.1 0-15.9-.8-23.5-2.4l0 66.4-30.2 0-137.5-137.5c2.9-3.6 5.5-7.4 7.6-11.5 11.6 22 34.7 37 61.3 37 26.8 0 49.8-15.1 61.4-37.1 11.4 22.1 34.5 37.1 60.8 37.1 45.6 0 78.4-43.7 65.6-87.5L513.8 72.3C506.8 48.4 484.9 32 460 32L116 32c-5.5 0-10.8 .8-15.9 2.3L41-24.9zM151.5 221.3L48.7 118.6 38.9 152.5c-12.8 43.7 20 87.5 65.6 87.5 18.1 0 34.7-7.1 47-18.7zM410.2 480l-128-128-154.2 0 0-66.4c-7.6 1.6-15.5 2.4-23.5 2.4-14.4 0-28-2.6-40.5-7.2L64 432c0 26.5 21.5 48 48 48l298.2 0z\"]\n};\nvar faPercent = {\n  prefix: 'fas',\n  iconName: 'percent',\n  icon: [448, 512, [62101, 62785, \"percentage\"], \"25\", \"M192 128a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM448 384a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM438.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-384 384c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l384-384z\"]\n};\nvar faPercentage = faPercent;\nvar faFileZipper = {\n  prefix: 'fas',\n  iconName: 'file-zipper',\n  icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM64 72c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 48C74.7 48 64 58.7 64 72zm0 96c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zm64 72l-32 0c-17.7 0-32 14.3-32 32l0 48c0 26.5 21.5 48 48 48s48-21.5 48-48l0-48c0-17.7-14.3-32-32-32zm-16 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faDisplay = {\n  prefix: 'fas',\n  iconName: 'display',\n  icon: [512, 512, [], \"e163\", \"M448 96l0 256-384 0 0-256 384 0zM64 32C28.7 32 0 60.7 0 96L0 352c0 35.3 28.7 64 64 64l144 0-16 48-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0-16-48 144 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 32z\"]\n};\nvar faIcons = {\n  prefix: 'fas',\n  iconName: 'icons',\n  icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M174.9 272c10.7 0 20.7 5.3 26.6 14.2l11.8 17.8 26.7 0c26.5 0 48 21.5 48 48l0 112c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 352c0-26.5 21.5-48 48-48l26.7 0 11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2l61.7 0zm278.6-12c5.6-4.9 13.9-5.3 19.9-.9s8.3 12.4 5.3 19.3L440.3 368 496 368c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.3-12.4-5.3-19.3l38.5-89.7-55.8 0c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112zM144 360a48 48 0 1 0 0 96 48 48 0 1 0 0-96zM483.8 .4c6.5-1.1 13.1 .4 18.5 4.4 6.1 4.5 9.7 11.7 9.7 19.2l0 152-.3 4.9c-3.3 24.2-30.5 43.1-63.7 43.1-35.3 0-64-21.5-64-48s28.7-48 64-48c5.5 0 10.9 .6 16 1.6l0-49.3-112 33.6 0 110.2-.3 4.9c-3.3 24.2-30.5 43.1-63.7 43.1-35.3 0-64-21.5-64-48s28.7-48 64-48c5.5 0 10.9 .6 16 1.6L304 72c0-10.6 7-20 17.1-23l160-48 2.7-.6zM188.9 0C226 0 256 30 256 67.1l0 6.1c0 56.1-75.2 112.1-110.3 135.3-10.8 7.1-24.6 7.1-35.4 0-35.1-23.1-110.3-79.2-110.3-135.3l0-6.1C0 30 30 0 67.1 0 88.2 0 108 9.9 120.7 26.8l7.3 9.8 7.3-9.8C148 9.9 167.8 0 188.9 0z\"]\n};\nvar faHeartMusicCameraBolt = faIcons;\nvar faRulerVertical = {\n  prefix: 'fas',\n  iconName: 'ruler-vertical',\n  icon: [256, 512, [], \"f548\", \"M0 16C0-10.5 21.5-32 48-32l160 0c26.5 0 48 21.5 48 48l0 24-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0 0 48-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 0 48-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0 0 48-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 0 48-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0 0 24c0 26.5-21.5 48-48 48L48 544c-26.5 0-48-21.5-48-48L0 16z\"]\n};\nvar faMapLocationDot = {\n  prefix: 'fas',\n  iconName: 'map-location-dot',\n  icon: [640, 512, [\"map-marked-alt\"], \"f5a0\", \"M576 48c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4L413.5 77.5 234.1 17.6c-8.1-2.7-16.8-2.1-24.4 1.7l-128 64C70.8 88.8 64 99.9 64 112l0 352c0 11.1 5.7 21.4 15.2 27.2s21.2 6.4 31.1 1.4l116.1-58.1 173.3 57.8c-4.3-6.4-8.5-13.1-12.6-19.9-11-18.3-21.9-39.3-30-61.8l-101.2-33.7 0-284.5 128 42.7 0 99.3c31-35.8 77-58.4 128-58.4 22.6 0 44.2 4.4 64 12.5L576 48zM512 224c-66.3 0-120 52.8-120 117.9 0 68.9 64.1 150.4 98.6 189.3 11.6 13 31.3 13 42.9 0 34.5-38.9 98.6-120.4 98.6-189.3 0-65.1-53.7-117.9-120-117.9zM472 344a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nvar faMapMarkedAlt = faMapLocationDot;\nvar faHeartCrack = {\n  prefix: 'fas',\n  iconName: 'heart-crack',\n  icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M133.1 32c17.3 0 34.2 3.4 49.9 9.7l54.8 85.2-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.4 60.6C319.6 42.3 348.6 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 112.2-139.9 242.5-212.9 298.2-12.4 9.4-27.6 14.1-43.1 14.1s-30.8-4.6-43.1-14.1C139.9 410.2 0 279.9 0 167.7l0-2.6C0 91.6 59.6 32 133.1 32z\"]\n};\nvar faHeartBroken = faHeartCrack;\nvar faCow = {\n  prefix: 'fas',\n  iconName: 'cow',\n  icon: [640, 512, [128004], \"f6c8\", \"M96 224l0 192c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-88.2c9.9 6.6 20.6 12 32 16.1l0 24.2c0 8.8 7.2 16 16 16s16-7.2 16-16l0-16.9c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9l0 16.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-24.2c11.4-4 22.1-9.4 32-16.1l0 88.2c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-160 32 32 0 49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21 22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5 0-81.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 14.4-52.9-74.1C496 86.5 452.4 64 405.9 64L144 64C77.7 64 24 117.7 24 184l0 54C9.4 249.8 0 267.8 0 288l0 17.6c0 8 6.4 14.4 14.4 14.4 31.8 0 57.6-25.8 57.6-57.6L72 184c0-24.3 12.1-45.8 30.5-58.9-4.2 10.8-6.5 22.6-6.5 34.9l0 64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16 0-12.5 10.1-22.6 22.6-22.6l178.7 0c12.5 0 22.6 10.1 22.6 22.6 0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nvar faRss = {\n  prefix: 'fas',\n  iconName: 'rss',\n  icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 160c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFeed = faRss;\nvar faMagnifyingGlass = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass',\n  icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nvar faSearch = faMagnifyingGlass;\nvar faCloudMoon = {\n  prefix: 'fas',\n  iconName: 'cloud-moon',\n  icon: [640, 512, [], \"f6c3\", \"M480 0c14.6 0 28.8 1.6 42.5 4.7 7.4 1.7 13 7.8 13.9 15.4s-3 14.9-9.8 18.3c-45.4 22.6-76.6 69.5-76.6 123.6 0 76.2 61.8 138 138 138 3.7 0 7.4-.1 11.1-.4 7.6-.6 14.7 3.6 17.8 10.6s1.5 15.1-3.9 20.4c-26 25-59.1 42.7-95.9 49.9-11.1-25.3-30.2-46.3-54.1-59.8-7.6-63.4-61.6-112.6-127.1-112.6-11.2 0-22.1 1.5-32.5 4.2-4.8-4.2-9.9-8.2-15.2-11.8-.1-2.8-.2-5.6-.2-8.4 0-106 86-192 192-192zm-.1 431.9c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96 0-47.6 34.6-87 80-94.6-.4-52.8 42.9-97.3 96-97.3 34.9 0 65.4 18.6 82.2 46.4 13-9.1 28.8-14.4 45.8-14.4 44.2 0 80 35.8 80 80 0 5.9-.6 11.7-1.9 17.2 37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faBoxesStacked = {\n  prefix: 'fas',\n  iconName: 'boxes-stacked',\n  icon: [512, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M224 0l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64 32 0c35.3 0 64 28.7 64 64l0 128c0 5.5-.7 10.9-2 16l-252 0c-1.3-5.1-2-10.5-2-16l0-128c0-35.3 28.7-64 64-64l32 0zm96 512c-11.2 0-21.8-2.9-31-8 9.5-16.5 15-35.6 15-56l0-128c0-20.4-5.5-39.5-15-56 9.2-5.1 19.7-8 31-8l32 0 0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64 32 0c35.3 0 64 28.7 64 64l0 128c0 35.3-28.7 64-64 64l-128 0zM0 320c0-35.3 28.7-64 64-64l32 0 0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64 32 0c35.3 0 64 28.7 64 64l0 128c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 320z\"]\n};\nvar faBoxes = faBoxesStacked;\nvar faBoxesAlt = faBoxesStacked;\nvar faCodeBranch = {\n  prefix: 'fas',\n  iconName: 'code-branch',\n  icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 70.7 176 0c26.5 0 48-21.5 48-48l0-22.7c-28.3-12.3-48-40.5-48-73.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 22.7c0 61.9-50.1 112-112 112l-176 0 0 70.7c28.3 12.3 48 40.5 48 73.3 0 44.2-35.8 80-80 80S0 476.2 0 432c0-32.8 19.7-61 48-73.3l0-205.3C19.7 141 0 112.8 0 80 0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBan = {\n  prefix: 'fas',\n  iconName: 'ban',\n  icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8c-22.4 31.4-35.5 69.8-35.5 111.2 0 106 86 192 192 192 41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3c22.4-31.4 35.5-69.8 35.5-111.2 0-106-86-192-192-192-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n};\nvar faCancel = faBan;\nvar faJugDetergent = {\n  prefix: 'fas',\n  iconName: 'jug-detergent',\n  icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24l0 24 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 96C74.7 96 64 85.3 64 72S74.7 48 88 48l8 0 0-24zM0 256c0-70.7 57.3-128 128-128l128 0c70.7 0 128 57.3 128 128l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256zm256 0l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faReply = {\n  prefix: 'fas',\n  iconName: 'reply',\n  icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M204.2 18.4c12 5 19.8 16.6 19.8 29.6l0 80 112 0c97.2 0 176 78.8 176 176 0 113.3-81.5 163.9-100.2 174.1-2.5 1.4-5.3 1.9-8.1 1.9-10.9 0-19.7-8.9-19.7-19.7 0-7.5 4.3-14.4 9.8-19.5 9.4-8.8 22.2-26.4 22.2-56.7 0-53-43-96-96-96l-96 0 0 80c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-160-160c-12.5-12.5-12.5-32.8 0-45.3l160-160c9.2-9.2 22.9-11.9 34.9-6.9z\"]\n};\nvar faMailReply = faReply;\nvar faSunPlantWilt = {\n  prefix: 'fas',\n  iconName: 'sun-plant-wilt',\n  icon: [640, 512, [], \"e57a\", \"M160 0c-5.5 0-10.6 2.8-13.5 7.4l-1.1 2.1-24.8 55.4-56.7-21.7c-5.9-2.2-12.5-.8-17 3.7S41 58 43.2 63.9l21.7 56.7-55.4 24.8C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8-21.7 56.7c-2.2 5.9-.8 12.5 3.7 17s11.1 5.9 17 3.7l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.8 21.7c5.9 2.2 12.5 .8 17-3.7s5.9-11.1 3.7-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7 .7-2.2c1.2-5.3-.4-10.9-4.3-14.8s-9.5-5.5-14.8-4.3l-2.2 .7-56.8 21.7-24.8-55.4C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm376 16l0 53.4c-14.8 7.7-24 23.1-24 44.6 0 16.8 16 44 37.4 67.2 5.8 6.2 15.5 6.2 21.2 0 21.4-23.3 37.4-50.6 37.4-67.2 0-21.5-9.2-37-24-44.6l0-53.4c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 22.7c-9.8-4.3-20.6-6.7-32-6.7-44.2 0-80 35.8-80 80l0 21.4c-14.8 7.6-24 23.1-24 44.6 0 16.8 16 44 37.4 67.2 5.8 6.2 15.5 6.2 21.2 0 21.4-23.3 37.4-50.6 37.4-67.2 0-21.5-9.2-37-24-44.6l0-21.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176-424 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-104 0 0-272c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faBacterium = {\n  prefix: 'fas',\n  iconName: 'bacterium',\n  icon: [576, 512, [], \"e05a\", \"M408 16c0-13.3-10.7-24-24-24S360 2.7 360 16l0 23.4c-13.9 5.3-26.9 13.5-38.2 24.5L305 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l16.8 16.8-30.1 30.1-16.8-16.8c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l16.8 16.8c-10 10-20 20-30.1 30.1L177 175c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l16.8 16.8-30.1 30.1-16.8-16.8c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l16.8 16.8c-11 11.3-19.2 24.3-24.5 38.2L48 328c-13.3 0-24 10.7-24 24s10.7 24 24 24l16.3 0c1.3 18.3 7.1 36.4 17.4 52.4L71 439c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l10.6-10.6c16 10.3 34.1 16.1 52.4 17.4l0 16.3c0 13.3 10.7 24 24 24s24-10.7 24-24l0-23.4c13.9-5.3 26.9-13.5 38.2-24.5L271 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-16.8-16.8 30.1-30.1 16.8 16.8c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-16.8-16.8c10-10 20-20 30.1-30.1L399 337c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-16.8-16.8 30.1-30.1 16.8 16.8c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-16.8-16.8c11-11.3 19.2-24.3 24.5-38.2l23.4 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16.3 0c-1.3-18.3-7.1-36.4-17.4-52.4L505 73c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L460.4 49.7c-16-10.3-34.1-16.1-52.4-17.4L408 16zM160 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM272 240a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faRecordVinyl = {\n  prefix: 'fas',\n  iconName: 'record-vinyl',\n  icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 240a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-112a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFloppyDisk = {\n  prefix: 'fas',\n  iconName: 'floppy-disk',\n  icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-242.7c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32L64 32zm32 96c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-64zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSave = faFloppyDisk;\nvar faToiletsPortable = {\n  prefix: 'fas',\n  iconName: 'toilets-portable',\n  icon: [512, 512, [], \"e584\", \"M64 0l96 0c35.3 0 64 28.7 64 64l0 16-224 0 0-16C0 28.7 28.7 0 64 0zM0 128l224 0 0 360c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-128 0 0 8c0 13.3-10.7 24-24 24S0 501.3 0 488L0 128zM128 248l0 48c0 13.3 10.7 24 24 24l24 0 0-96-24 0c-13.3 0-24 10.7-24 24zM352 0l96 0c35.3 0 64 28.7 64 64l0 16-224 0 0-16c0-35.3 28.7-64 64-64zM288 128l224 0 0 360c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-128 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-360zM416 248l0 48c0 13.3 10.7 24 24 24l24 0 0-96-24 0c-13.3 0-24 10.7-24 24z\"]\n};\nvar faO = {\n  prefix: 'fas',\n  iconName: 'o',\n  icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256a224 224 0 1 1 -448 0 224 224 0 1 1 448 0z\"]\n};\nvar faPalette = {\n  prefix: 'fas',\n  iconName: 'palette',\n  icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7-.4 36.5-33.6 61.3-70.1 61.3L344 320c-26.5 0-48 21.5-48 48 0 3.4 .4 6.7 1 9.9 2.1 10.2 6.5 20 10.8 29.9 6.1 13.8 12.1 27.5 12.1 42 0 31.8-21.6 60.7-53.4 62-3.5 .1-7 .2-10.6 .2-141.4 0-256-114.6-256-256S114.6 0 256 0 512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faUnlock = {\n  prefix: 'fas',\n  iconName: 'unlock',\n  icon: [384, 512, [128275], \"f09c\", \"M128 96c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96l0 64c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64l-192 0 0-64z\"]\n};\nvar faEarListen = {\n  prefix: 'fas',\n  iconName: 'ear-listen',\n  icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M379.6 .3c-8.9 1.2-17.2 6.2-22.4 14.1-6.8 10.4-7 24.1-.4 34.6 5.6 8.9 15.5 12.7 23.8 18.5 7.5 5.2 17.6 13.2 27.7 24.2 20 21.7 39.5 54.3 39.5 100.3 0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7-13.9-15.1-27.8-26.1-38.3-33.3-11-7.6-23.5-16.6-37.6-14.7zM240 128c-57.6 0-105.1 43.6-111.3 99.5-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3c9.7-88 84.3-156.5 174.9-156.5 97.2 0 176 78.8 176 176 0 46-17.7 87.9-46.6 119.3-12 13-17.4 24.8-17.4 34.7l0 6.1c0 61.9-50.1 112-112 112-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48l0-6.1c0-32.9 17.4-59.6 34.4-78 18.4-20 29.6-46.6 29.6-75.9 0-61.9-50.1-112-112-112zM0 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm160-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64zM240 208c-17.7 0-32 14.3-32 32 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faAssistiveListeningSystems = faEarListen;\nvar faCodePullRequest = {\n  prefix: 'fas',\n  iconName: 'code-pull-request',\n  icon: [512, 512, [], \"e13c\", \"M328 24c0-9.7-5.8-18.5-14.8-22.2S293.9 .2 287 7L231 63c-9.4 9.4-9.4 24.6 0 33.9l56 56c6.9 6.9 17.2 8.9 26.2 5.2S328 145.7 328 136l0-24 24 0c17.7 0 32 14.3 32 32l0 214.7c-28.3 12.3-48 40.5-48 73.3 0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3L448 144c0-53-43-96-96-96l-24 0 0-24zM72 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm56 73.3c28.3-12.3 48-40.5 48-73.3 0-44.2-35.8-80-80-80S16 35.8 16 80c0 32.8 19.7 61 48 73.3l0 205.3c-28.3 12.3-48 40.5-48 73.3 0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-205.3zM72 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm344-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faKey = {\n  prefix: 'fas',\n  iconName: 'key',\n  icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0 160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faSkull = {\n  prefix: 'fas',\n  iconName: 'skull',\n  icon: [512, 512, [128128], \"f54c\", \"M416 427.4c58.5-44 96-111.6 96-187.4 0-132.5-114.6-240-256-240S0 107.5 0 240c0 75.8 37.5 143.4 96 187.4L96 464c0 26.5 21.5 48 48 48l32 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 64 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 32 0c26.5 0 48-21.5 48-48l0-36.6zM96 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMarsStrokeUp = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-up',\n  icon: [384, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M192 256a112 112 0 1 0 0 224 112 112 0 1 0 0-224zM16 368c0-86.3 62.1-158.1 144.1-173.1-.1-.9-.1-1.9-.1-2.9l0-16-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-61.4-28 22.4c-13.8 11-33.9 8.8-45-5s-8.8-33.9 5-45l80-64c11.7-9.3 28.3-9.3 40 0l80 64c13.8 11 16 31.2 5 45s-31.2 16-45 5l-28-22.4 0 61.4 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 16c0 1 0 1.9-.1 2.9 82 15 144.1 86.8 144.1 173.1 0 97.2-78.8 176-176 176S16 465.2 16 368z\"]\n};\nvar faMarsStrokeV = faMarsStrokeUp;\nvar faFireFlameSimple = {\n  prefix: 'fas',\n  iconName: 'fire-flame-simple',\n  icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6 0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5 0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nvar faBurn = faFireFlameSimple;\nvar faTree = {\n  prefix: 'fas',\n  iconName: 'tree',\n  icon: [448, 512, [127794], \"f1bb\", \"M224-32c7 0 13.7 3.1 18.3 8.5l136 160c6.1 7.1 7.4 17.1 3.5 25.6S369.4 176 360 176l-24.9 0 75.2 88.5c6.1 7.1 7.4 17.1 3.5 25.6S401.4 304 392 304l-38.5 0 88.8 104.5c6.1 7.1 7.4 17.1 3.5 25.6S433.4 448 424 448l-168 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64-168 0c-9.4 0-17.9-5.4-21.8-13.9s-2.6-18.5 3.5-25.6L94.5 304 56 304c-9.4 0-17.9-5.4-21.8-13.9s-2.6-18.5 3.5-25.6L112.9 176 88 176c-9.4 0-17.9-5.4-21.8-13.9s-2.6-18.5 3.5-25.6l136-160C210.3-28.9 217-32 224-32z\"]\n};\nvar faSmog = {\n  prefix: 'fas',\n  iconName: 'smog',\n  icon: [576, 512, [], \"f75f\", \"M176 288C96.5 288 32 223.5 32 144S96.5 0 176 0c27.2 0 52.6 7.5 74.3 20.6 20.1-13 44-20.6 69.7-20.6 47.4 0 88.7 25.7 110.9 64l1.1 0c61.9 0 112 50.1 112 112 0 60.3-47.6 109.4-107.2 111.9-22.6 20-52.3 32.1-84.8 32.1-32.5 0-62.1-12.1-84.7-32L176 288zM512 392c0 13.3-10.7 24-24 24L24 416c-13.3 0-24-10.7-24-24s10.7-24 24-24l464 0c13.3 0 24 10.7 24 24zM88 464l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm176 0l288 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faS = {\n  prefix: 'fas',\n  iconName: 's',\n  icon: [320, 512, [115], \"53\", \"M0 157.5C0 88.2 56.2 32 125.5 32L272 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L125.5 96c-34 0-61.5 27.5-61.5 61.5 0 31 23.1 57.2 53.9 61L210.1 230C272.9 237.9 320 291.2 320 354.5 320 423.8 263.8 480 194.5 480L48 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l146.5 0c34 0 61.5-27.5 61.5-61.5 0-31-23.1-57.2-53.9-61L109.9 282C47.1 274.1 0 220.8 0 157.5z\"]\n};\nvar faJedi = {\n  prefix: 'fas',\n  iconName: 'jedi',\n  icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9-.1 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5c59.8-10.8 105.1-63.1 105.1-126 0-37-15.7-70.4-40.8-93.7-7-6.5-6.5-18.6 1-24.4 34-26.3 55.8-67.5 55.8-113.9 0-16.8-2.9-33-8.2-48-4.6-13 10.2-30 21.4-22 53.5 38 92.7 94.8 107.8 160.7 .5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9l26 0c3.4 0 6.2 2.6 6.3 6 .1 3.3 .2 6.6 .2 10 0 17.5-1.7 34.7-4.8 51.3-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9l14.6 0c4.6 0 7.7 4.8 5.7 9-44.5 89.5-136.9 151-243.7 151S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9l14.6 0c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3-3.2-16.6-4.8-33.8-4.8-51.3 0-3.3 .1-6.7 .2-10 .1-3.4 2.9-6 6.3-6l26 0c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9 15.2-66 54.3-122.8 107.8-160.7 11.3-8 26 8.9 21.4 22-5.3 15-8.2 31.2-8.2 48 0 46.3 21.9 87.5 55.8 113.9 7.5 5.8 8 17.9 1 24.4-25.1 23.4-40.8 56.7-40.8 93.7 0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nvar faPersonHiking = {\n  prefix: 'fas',\n  iconName: 'person-hiking',\n  icon: [448, 512, [\"hiking\"], \"f6ec\", \"M192-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM128 173.6c0-34 27.6-61.6 61.6-61.6 20.3 0 39.7 8.1 54 22.4l48.2 48.2c6 6 14.1 9.4 22.6 9.4l37.5 0c5.8 0 11.3 1.6 16 4.3l0-76.3c0-13.3 10.7-24 24-24s24 10.7 24 24l0 400c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-268.3c-4.7 2.7-10.2 4.3-16 4.3l-37.5 0c-25.5 0-49.9-10.1-67.9-28.1l-6.6-6.6 0 109.2 34.5 29.6c17.7 15.2 29.3 36.2 32.6 59.3l12.6 88.1c2.5 17.5-9.7 33.7-27.2 36.2s-33.7-9.7-36.2-27.2l-12.6-88.1c-1.1-7.7-5-14.7-10.9-19.8l-71.4-61.2c-21.3-18.2-33.5-44.9-33.5-72.9l0-101zm-4.8 203.7c2.3 2.3 4.7 4.4 7.1 6.5l44.9 38.5c-3.6 8.4-8.5 16.3-14.4 23.4L88.6 532.5c-11.3 13.6-31.5 15.4-45.1 4.1s-15.4-31.5-4.1-45.1l72.3-86.7c2.6-3.1 4.5-6.6 5.8-10.4l5.7-17.1zM0 160c0-35.3 28.7-64 64-64 17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96z\"]\n};\nvar faHiking = faPersonHiking;\nvar faArrowsUpToLine = {\n  prefix: 'fas',\n  iconName: 'arrows-up-to-line',\n  icon: [448, 512, [], \"e4c2\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l384 0c17.7 0 32-14.3 32-32S433.7 0 416 0L32 0zm86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L64 237.3 64 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-242.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64zm256 0c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4 0 242.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-242.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faMarsDouble = {\n  prefix: 'fas',\n  iconName: 'mars-double',\n  icon: [640, 512, [9891], \"f227\", \"M288 32c0-17.7 14.3-32 32-32L448 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50.7-95 95c19.5 28.4 31 62.7 31 99.8 0 97.2-78.8 176-176 176S0 401.2 0 304 78.8 128 176 128c37 0 71.4 11.4 99.8 31l95-95-50.7 0c-17.7 0-32-14.3-32-32zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm160 64c-6.8 0-13.4-.4-20-1.1 23.6-18.9 43.3-42.5 57.6-69.4 43.3-15.5 74.4-56.9 74.4-105.5 0-25.2-8.3-48.5-22.4-67.2 7.1 2.1 14.6 3.2 22.4 3.2 17 0 32.7-5.3 45.7-14.3 11.7 23.6 18.3 50.2 18.3 78.3 0 97.2-78.8 176-176 176zM528 157.3L528 32c0-11.4-2.4-22.2-6.7-32L608 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50.7-48 48z\"]\n};\nvar faThermometer = {\n  prefix: 'fas',\n  iconName: 'thermometer',\n  icon: [512, 512, [], \"f491\", \"M96 382.1l0-88.8c0-14.9 5.9-29.1 16.4-39.6l21.7-21.7 41 41c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-41-41 46.1-46.1 41 41c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-41-41 46.1-46.1 41 41c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-41-41 7.8-7.8c19.4-19.4 45.6-30.2 73-30.2 57 0 103.2 46.2 103.2 103.2 0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0-89 89c-9.4 9.4-24.6 9.4-33.9 0S-2.3 480.4 7 471l89-89z\"]\n};\nvar faPaintbrush = {\n  prefix: 'fas',\n  iconName: 'paintbrush',\n  icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M480.5 10.3L259.1 158c-29.1 19.4-47.6 50.9-50.6 85.3 62.3 12.8 111.4 61.9 124.3 124.3 34.5-3 65.9-21.5 85.3-50.6L565.7 95.5c6.7-10.1 10.3-21.9 10.3-34.1 0-33.9-27.5-61.4-61.4-61.4-12.1 0-24 3.6-34.1 10.3zM288 400c0-61.9-50.1-112-112-112S64 338.1 64 400c0 3.9 .2 7.8 .6 11.6 1.8 17.5-10.2 36.4-27.8 36.4L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0c61.9 0 112-50.1 112-112z\"]\n};\nvar faPaintBrush = faPaintbrush;\nvar faNeuter = {\n  prefix: 'fas',\n  iconName: 'neuter',\n  icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zM223.9 349.1C305.9 334.1 368 262.3 368 176 368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144.1 173.1-.1 1-.1 1.9-.1 2.9l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-1 0-1.9-.1-2.9z\"]\n};\nvar faSquarePhoneFlip = {\n  prefix: 'fas',\n  iconName: 'square-phone-flip',\n  icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm232 96.7l2.8 .8c32.3 8.8 59.9 40.1 51.8 78.2-18.5 87.5-87.4 156.3-174.9 174.9-38.1 8.1-69.4-19.5-78.2-51.8l-.8-2.8c-2.7-9.8 2.4-20.1 11.8-24l48.7-20.3c8.3-3.4 17.8-1.1 23.5 5.9l19.3 23.6c35.1-17.4 63.4-46.6 79.6-82.4l-22.1-18c-6.9-5.7-9.3-15.2-5.9-23.5l20.3-48.7c3.9-9.4 14.2-14.4 24-11.8z\"]\n};\nvar faPhoneSquareAlt = faSquarePhoneFlip;\nvar faFaceGrinTongueSquint = {\n  prefix: 'fas',\n  iconName: 'face-grin-tongue-squint',\n  icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256c0 104.4 62.5 194.2 152.2 234.1-5.3-13-8.2-27.2-8.2-42.1l0-61.7c-16.9-16.5-30.1-36.7-38.3-59.3-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1c11.9-3.7 23.9 6.3 19.6 18.1-8.3 22.6-21.5 42.8-38.3 59.3l0 61.7c0 14.9-2.9 29.1-8.2 42.1 89.7-39.8 152.2-129.6 152.2-234.1 0-141.4-114.6-256-256-256S0 114.6 0 256zm125.8-91.7c-6.2-5.2-7.6-14.3-3.1-21.1s13.3-9.2 20.6-5.5l79.6 40c5.4 2.7 8.8 8.2 8.8 14.3s-3.4 11.6-8.8 14.3l-79.6 40c-7.3 3.6-16.1 1.3-20.6-5.5s-3.1-15.9 3.1-21.1L159 192 125.8 164.3zm263.6-21.1c4.5 6.8 3.1 15.9-3.1 21.1L353 192 386.2 219.7c6.2 5.2 7.6 14.3 3.1 21.1s-13.3 9.2-20.6 5.5l-79.6-40c-5.4-2.7-8.8-8.2-8.8-14.3s3.4-11.6 8.8-14.3l79.6-40c7.3-3.6 16.1-1.3 20.6 5.5zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9-2.8 12.6-20.8 12.6-23.6 0-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faCommentDollar = {\n  prefix: 'fas',\n  iconName: 'comment-dollar',\n  icon: [512, 512, [], \"f651\", \"M256 480c141.4 0 256-107.5 256-240S397.4 0 256 0 0 107.5 0 240c0 54.3 19.2 104.3 51.6 144.5L2.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7C183.7 472.6 218.9 480 256 480zm4-352c11 0 20 9 20 20l0 4 8 0c11 0 20 9 20 20s-9 20-20 20l-47.5 0c-6.9 0-12.5 5.6-12.5 12.5 0 6.1 4.4 11.3 10.4 12.3l41.7 7c25.3 4.2 43.9 26.1 43.9 51.8 0 26.1-19 47.7-44 51.8l0 4.7c0 11-9 20-20 20s-20-9-20-20l0-4-24 0c-11 0-20-9-20-20s9-20 20-20l55.5 0c6.9 0 12.5-5.6 12.5-12.5 0-6.1-4.4-11.3-10.4-12.3l-41.7-7c-25.3-4.2-43.9-26.1-43.9-51.8 0-28.8 23.2-52.2 52-52.5l0-4c0-11 9-20 20-20z\"]\n};\nvar faHippo = {\n  prefix: 'fas',\n  iconName: 'hippo',\n  icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2l32 0c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1 0 10.2 7.4 18.8 16.7 23 27.9 12.5 47.3 40.5 47.3 73 0 26.2-12.6 49.4-32 64l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-16-64 0 0 16c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-17.6c-11.8-2.4-22.7-7.4-32-14.4-1.5-1.1-2.9-2.3-4.3-3.5-17-14.7-27.7-36.4-27.7-60.5 0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2l0 10.8c0 17.7 14.3 32 32 32l32 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-76c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12l0 76c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-118.9-18.1 40.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7 0-107.5 85.2-195.2 191.8-199.1l.2-.1 64 0c41.7 0 83.4 12.1 117.2 25.7 1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faBowlFood = {\n  prefix: 'fas',\n  iconName: 'bowl-food',\n  icon: [512, 512, [], \"e4c6\", \"M0 176c0-35.3 28.7-64 64-64 .5 0 1.1 0 1.6 0 7.4-36.5 39.7-64 78.4-64 15 0 29 4.1 40.9 11.2 13.3-25.7 40.1-43.2 71.1-43.2s57.8 17.6 71.1 43.2c12-7.1 26-11.2 40.9-11.2 38.7 0 71 27.5 78.4 64 .5 0 1.1 0 1.6 0 35.3 0 64 28.7 64 64 0 11.7-3.1 22.6-8.6 32L8.6 208C3.1 198.6 0 187.7 0 176zM0 283.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4 0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nvar faSquareVirus = {\n  prefix: 'fas',\n  iconName: 'square-virus',\n  icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm160 80c13.3 0 24 10.7 24 24 0 22.9 27.7 34.4 43.9 18.2 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-16.2 16.2-4.7 43.9 18.2 43.9 13.3 0 24 10.7 24 24s-10.7 24-24 24c-22.9 0-34.4 27.7-18.2 43.9 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-16.2-16.2-43.9-4.7-43.9 18.2 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-22.9-27.7-34.4-43.9-18.2-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c16.2-16.2 4.7-43.9-18.2-43.9-13.3 0-24-10.7-24-24s10.7-24 24-24c22.9 0 34.4-27.7 18.2-43.9-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c16.2 16.2 43.9 4.7 43.9-18.2 0-13.3 10.7-24 24-24zM192 248a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCloudSunRain = {\n  prefix: 'fas',\n  iconName: 'cloud-sun-rain',\n  icon: [640, 512, [127782], \"f743\", \"M254.9 448.2c4.2-12.6 17.8-19.4 30.3-15.2 12.6 4.2 19.4 17.8 15.2 30.4l-21.4 64.1c-4.2 12.6-17.8 19.4-30.4 15.2s-19.4-17.8-15.2-30.3l21.4-64.2zm120 0c4.2-12.6 17.8-19.4 30.3-15.2 12.6 4.2 19.4 17.8 15.2 30.4l-21.4 64.1c-4.2 12.6-17.8 19.4-30.4 15.2s-19.4-17.8-15.2-30.3l21.4-64.2zm120 0c4.2-12.6 17.8-19.4 30.3-15.2 12.6 4.2 19.4 17.8 15.2 30.4l-21.4 64.1c-4.2 12.6-17.8 19.4-30.4 15.2s-19.4-17.8-15.2-30.3l21.4-64.2zM448.3 128c44.2 0 80 35.8 80 80 0 7.5-1.1 14.7-3 21.5 29.8 11.6 51 40.6 51 74.5 0 44.2-35.8 80-80 80l-192 0-8.2-.4c-40.3-4.1-71.8-38.2-71.8-79.6 0-39 27.9-71.5 64.9-78.5-.5-3.1-.9-6.2-.9-9.5 0-30.9 25.1-56 56-56 12.4 0 23.9 4.1 33.2 10.9 13.4-25.5 40.1-42.9 70.8-42.9zM240.3-31.8c5.3 0 10.3 2.7 13.3 7.1l47.3 70.4 83.3-16.3c5.2-1 10.6 .7 14.3 4.4 3.8 3.8 5.4 9.2 4.4 14.4l-8.6 43.8c-11.9 5.5-22.8 12.9-32.4 21.6-5.7-1-11.7-1.5-17.7-1.5-14.3 0-28 3-40.4 8.2-16.9-15-39.2-24.2-63.6-24.2-53 0-96 43-96 96 0 30.9 14.6 58.2 37.2 75.8-3.4 11.5-5.2 23.6-5.2 36.2 0 13.2 2 25.9 5.7 37.9l-2.4-3.5-83.2 16.3c-5.2 1-10.6-.7-14.3-4.4-3.8-3.8-5.4-9.2-4.4-14.4l16.3-83.3-70.4-47.4c-4.4-3-7.1-8-7.1-13.3 0-5.3 2.6-10.3 7-13.2l70.4-47.4-16.3-83.2-.2-2c-.3-4.6 1.3-9.1 4.6-12.4 3.8-3.8 9.2-5.4 14.4-4.4l83.2 16.3 47.3-70.4 1.2-1.6c3-3.5 7.4-5.5 12.1-5.5zm0 175.8c8.6 0 16.6 2.3 23.6 6.2-9.7 11.9-16.9 25.9-20.7 41.3-15 8.1-28.2 19.2-38.8 32.3-7.5-8.5-12.2-19.6-12.2-31.8 0-26.5 21.5-48 48-48z\"]\n};\nvar faArrowRightLong = {\n  prefix: 'fas',\n  iconName: 'arrow-right-long',\n  icon: [576, 512, [\"long-arrow-right\"], \"f178\", \"M566.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L466.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l434.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLongArrowRight = faArrowRightLong;\nvar faBuildingUn = {\n  prefix: 'fas',\n  iconName: 'building-un',\n  icon: [512, 512, [], \"e4d9\", \"M32 64C32 28.7 60.7 0 96 0L352 0c35.3 0 64 28.7 64 64l0 272-112 0c-20.9 0-39.5 10.1-51.2 25.6-8-6-18-9.6-28.8-9.6-26.5 0-48 21.5-48 48l0 64 64 0 0 48-144 0c-35.3 0-64-28.7-64-64L32 64zM144 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM144 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM427.4 380.5c9-2.1 18.3 2.2 22.5 10.5l26.1 52.2 0-43.3c0-11 9-20 20-20s20 9 20 20l0 128c0 9.3-6.4 17.3-15.4 19.5s-18.3-2.2-22.5-10.5L452 484.7 452 528c0 11-9 20-20 20s-20-9-20-20l0-128c0-9.3 6.4-17.3 15.4-19.5zM324 400l0 96c0 6.6 5.4 12 12 12s12-5.4 12-12l0-96c0-11 9-20 20-20s20 9 20 20l0 96c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-96c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faTemperatureLow = {\n  prefix: 'fas',\n  iconName: 'temperature-low',\n  icon: [512, 512, [], \"f76b\", \"M96 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144S48 447.5 48 368c0-42.6 18.5-81 48-107.3L96 96zm96 336c35.3 0 64-28.7 64-64 0-26.9-16.5-49.9-40-59.3l0-28.7c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 28.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64zM464 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM352 80a80 80 0 1 1 160 0 80 80 0 1 1 -160 0z\"]\n};\nvar faDoorOpen = {\n  prefix: 'fas',\n  iconName: 'door-open',\n  icon: [448, 512, [], \"f52b\", \"M288 64l64 0 0 416c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-384c0-35.3-28.7-64-64-64l-96 0 0 0-160 0C60.7 0 32 28.7 32 64l0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-416zM160 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faAlignLeft = {\n  prefix: 'fas',\n  iconName: 'align-left',\n  icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faCamera = {\n  prefix: 'fas',\n  iconName: 'camera',\n  icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96 64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0-10.4-31.2C356.4 45.2 338.1 32 317.4 32L194.6 32c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faCameraAlt = faCamera;\nvar faUsersRays = {\n  prefix: 'fas',\n  iconName: 'users-rays',\n  icon: [640, 512, [], \"e593\", \"M31-33C21.7-23.6 21.7-8.4 31 1L87 57c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L65-33c-9.4-9.4-24.6-9.4-33.9 0zM609-33c-9.4-9.4-24.6-9.4-33.9 0L519 23c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L609 1c9.4-9.4 9.4-24.6 0-33.9zM65 545l56-56c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L31 511c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0zm544 0c9.4-9.4 9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56 56c9.4 9.4 24.6 9.4 33.9 0zM320 208a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm0 32c-61.9 0-112 50.1-112 112l0 8c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24l0-8c0-61.9-50.1-112-112-112zm216-80a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zM451.2 260.4C469.4 286.3 480 317.9 480 352l0 8c0 8.4-1.4 16.5-4.1 24l78.8 0c11.8 0 21.3-9.6 21.3-21.3l0-10.7c0-53-43-96-96-96-10 0-19.7 1.5-28.8 4.4zm-262.4 0c-9.1-2.9-18.8-4.4-28.8-4.4-53 0-96 43-96 96l0 10.7c0 11.8 9.6 21.3 21.3 21.3l78.8 0c-2.7-7.5-4.1-15.6-4.1-24l0-8c0-34.1 10.6-65.7 28.8-91.6zM216 160a56 56 0 1 0 -112 0 56 56 0 1 0 112 0z\"]\n};\nvar faRainbow = {\n  prefix: 'fas',\n  iconName: 'rainbow',\n  icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352l0 64c0 17.7-14.3 32-32 32S0 433.7 0 416l0-64C0 175.3 143.3 32 320 32S640 175.3 640 352l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64C576 210.6 461.4 96 320 96zm0 112c-79.5 0-144 64.5-144 144l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-114.9 93.1-208 208-208s208 93.1 208 208l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-79.5-64.5-144-144-144zM288 352l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-53 43-96 96-96s96 43 96 96l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faSitemap = {\n  prefix: 'fas',\n  iconName: 'sitemap',\n  icon: [512, 512, [], \"f0e8\", \"M192 64c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-8 0 0 64 120 0c39.8 0 72 32.2 72 72l0 56 8 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l8 0 0-56c0-13.3-10.7-24-24-24l-120 0 0 80 8 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l8 0 0-80-120 0c-13.3 0-24 10.7-24 24l0 56 8 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l8 0 0-56c0-39.8 32.2-72 72-72l120 0 0-64-8 0c-17.7 0-32-14.3-32-32l0-64z\"]\n};\nvar faFaceGrinStars = {\n  prefix: 'fas',\n  iconName: 'face-grin-stars',\n  icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M256 512c141.4 0 256-114.6 256-256 0-24.4-3.4-48.1-9.8-70.5 18.6-36.1-2.7-83.6-46.7-90-46.9-58.3-118.9-95.5-199.5-95.5S103.4 37.3 56.5 95.5c-44 6.4-65.3 53.9-46.7 90-6.4 22.4-9.8 46-9.8 70.5 0 141.4 114.6 256 256 256zM386.7 324.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 404.2 105.7 342.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zm-31.6-231c5.3-10.7 20.5-10.7 25.8 0l20.9 42.4 46.7 6.8c11.8 1.7 16.5 16.2 8 24.5l-33.8 33 8 46.6c2 11.7-10.3 20.7-20.9 15.2l-41.8-22-41.8 22c-10.5 5.5-22.9-3.4-20.9-15.2l8-46.6-33.8-33c-8.5-8.3-3.8-22.8 8-24.5l46.7-6.8 20.9-42.4zm-198.2 0l20.9 42.4 46.7 6.8c11.8 1.7 16.5 16.2 8 24.5l-33.8 33 8 46.6c2 11.7-10.3 20.7-20.9 15.2l-41.8-22-41.8 22c-10.5 5.5-22.9-3.4-20.9-15.2l8-46.6-33.8-33c-8.5-8.3-3.8-22.8 8-24.5l46.7-6.8 20.9-42.4c5.3-10.7 20.5-10.7 25.8 0z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faSortUp = {\n  prefix: 'fas',\n  iconName: 'sort-up',\n  icon: [384, 512, [\"sort-asc\"], \"f0de\", \"M32 224c-12.9 0-24.6-7.8-29.6-19.8S.2 178.5 9.4 169.4l160-160c12.5-12.5 32.8-12.5 45.3 0l160 160c9.2 9.2 11.9 22.9 6.9 34.9S364.9 224 352 224L32 224z\"]\n};\nvar faSortAsc = faSortUp;\nvar faEye = {\n  prefix: 'fas',\n  iconName: 'eye',\n  icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6-46.8 43.5-78.1 95.4-93 131.1-3.3 7.9-3.3 16.7 0 24.6 14.9 35.7 46.2 87.7 93 131.1 47.1 43.7 111.8 80.6 192.6 80.6s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1 3.3-7.9 3.3-16.7 0-24.6-14.9-35.7-46.2-87.7-93-131.1-47.1-43.7-111.8-80.6-192.6-80.6zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64-11.5 0-22.3-3-31.7-8.4-1 10.9-.1 22.1 2.9 33.2 13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-12.2-45.7-55.5-74.8-101.1-70.8 5.3 9.3 8.4 20.1 8.4 31.7z\"]\n};\nvar faCaretLeft = {\n  prefix: 'fas',\n  iconName: 'caret-left',\n  icon: [256, 512, [], \"f0d9\", \"M7.7 235.8c-10.3 12.6-9.5 31.1 2.2 42.8l128 128c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-256c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-128 128-2.2 2.4z\"]\n};\nvar faAppleWhole = {\n  prefix: 'fas',\n  iconName: 'apple-whole',\n  icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80l16 0c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80l-16 0zM0 288c0-76.3 35.7-160 112-160 27.3 0 59.7 10.3 82.7 19.3 18.8 7.3 39.9 7.3 58.7 0 22.9-8.9 55.4-19.3 82.7-19.3 76.3 0 112 83.7 112 160 0 128-80 224-160 224-16.5 0-38.1-6.6-51.5-11.3-8.1-2.8-16.9-2.8-25 0-13.4 4.7-35 11.3-51.5 11.3-80 0-160-96-160-224z\"]\n};\nvar faAppleAlt = faAppleWhole;\nvar faScrollTorah = {\n  prefix: 'fas',\n  iconName: 'scroll-torah',\n  icon: [576, 512, [\"torah\"], \"f6a0\", \"M0 48C0 21.5 21.5 0 48 0 68.9 0 86.7 13.4 93.3 32l389.5 0c6.6-18.6 24.4-32 45.3-32 26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48-20.9 0-38.7-13.4-45.3-32L93.3 480c-6.6 18.6-24.4 32-45.3 32-26.5 0-48-21.5-48-48L0 48zM177.9 301c-1.2 2-1.9 4.2-1.9 6.6 0 6.9 5.6 12.5 12.5 12.5l56.9 0 30.5 49.2c2.6 4.2 7.2 6.8 12.2 6.8s9.6-2.6 12.2-6.8l30.5-49.2 56.9 0c6.9 0 12.5-5.6 12.5-12.5 0-2.3-.6-4.6-1.9-6.6l-27.8-45 27.8-45c1.2-2 1.9-4.2 1.9-6.6 0-6.9-5.6-12.5-12.5-12.5l-56.9 0-30.5-49.2c-2.6-4.2-7.2-6.8-12.2-6.8s-9.6 2.6-12.2 6.8l-30.5 49.2-56.9 0c-6.9 0-12.5 5.6-12.5 12.5 0 2.3 .6 4.6 1.9 6.6l27.8 45-27.8 45z\"]\n};\nvar faTorah = faScrollTorah;\nvar faHouseLock = {\n  prefix: 'fas',\n  iconName: 'house-lock',\n  icon: [640, 512, [], \"e510\", \"M528 224.1c44.2 0 80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l185 171.8C440.2 195 400 244.8 400 304l0 24.4c-19.6 17.6-32 43.1-32 71.5l0 96c0 5.5 .5 10.9 1.3 16.1L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM272 320c-26.5 0-48 21.5-48 48l0 96 96 0 0-87.3c0-16.5 7-31.5 18.4-42.1-8.7-9-20.9-14.6-34.4-14.6l-32 0zm256-47.9c-17.7 0-32 14.3-32 32l0 47.9 64 0 0-47.9c0-17.7-14.3-32-32-32z\"]\n};\nvar faArrowsLeftRightToLine = {\n  prefix: 'fas',\n  iconName: 'arrows-left-right-to-line',\n  icon: [576, 512, [], \"e4ba\", \"M32 96C14.3 96 0 110.3 0 128L0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256c0-17.7-14.3-32-32-32zM390.6 342.6l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4-133.5 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4 133.5 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0zM576 128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256z\"]\n};\nvar faTrash = {\n  prefix: 'fas',\n  iconName: 'trash',\n  icon: [448, 512, [], \"f1f8\", \"M136.7 5.9L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-8.7-26.1C306.9-7.2 294.7-16 280.9-16L167.1-16c-13.8 0-26 8.8-30.4 21.9zM416 144L32 144 53.1 467.1C54.7 492.4 75.7 512 101 512L347 512c25.3 0 46.3-19.6 47.9-44.9L416 144z\"]\n};\nvar faFaceSadTear = {\n  prefix: 'fas',\n  iconName: 'face-sad-tear',\n  icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm271 98c5.5-1.3 11.1-2 17-2 24.1 0 45.4 11.8 58.5 30 7.7 10.8 22.7 13.2 33.5 5.5s13.2-22.7 5.5-33.5c-21.7-30.2-57.3-50-97.5-50-12.5 0-24.6 1.9-35.9 5.5 9.8 12.7 16.5 27.9 18.9 44.6zM176 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM185.4 292.8c-2.4-2.9-5.7-4.8-9.4-4.8s-7 1.9-9.4 4.8c-6.5 7.8-12.6 16.1-18.3 24.6-9 13.4-20.3 30.2-20.3 47.4 0 28.3 21.5 51.2 48 51.2s48-22.9 48-51.2c0-17.2-11.2-34-20.3-47.4-5.7-8.5-11.9-16.7-18.3-24.6z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faFax = {\n  prefix: 'fas',\n  iconName: 'fax',\n  icon: [512, 512, [128224, 128439], \"f1ac\", \"M160 64l0 80 64 0 0-80 146.7 0 45.3 45.3 0 34.7 64 0 0-34.7c0-17-6.7-33.3-18.7-45.3L416 18.7C404 6.7 387.7 0 370.7 0L224 0c-35.3 0-64 28.7-64 64zM32 128c-17.7 0-32 14.3-32 32L0 448c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-288c0-17.7-14.3-32-32-32l-48 0zm448 64l-320 0 0 256c0 17.7 14.3 32 32 32l288 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32zM224 288a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm0 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM336 264a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM312 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM424 264a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM400 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faPersonCirclePlus = {\n  prefix: 'fas',\n  iconName: 'person-circle-plus',\n  icon: [640, 512, [], \"e541\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faHamsa = {\n  prefix: 'fas',\n  iconName: 'hamsa',\n  icon: [512, 512, [], \"f665\", \"M34.6 288L80 288c8.8 0 16-7.2 16-16L96 72c0-22.1 17.9-40 40-40s40 17.9 40 40l0 132c0 11 9 20 20 20s20-9 20-20l0-164c0-22.1 17.9-40 40-40s40 17.9 40 40l0 164c0 11 9 20 20 20s20-9 20-20l0-132c0-22.1 17.9-40 40-40s40 17.9 40 40l0 200c0 8.8 7.2 16 16 16l45.4 0c19.1 0 34.6 15.5 34.6 34.6 0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71S136.6 486.2 95.4 441L9 345.9c-5.8-6.4-9-14.7-9-23.3 0-19.1 15.5-34.6 34.6-34.6zM256 288c-38.4 0-76.8 35.8-90.6 50.2-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonCircleQuestion = {\n  prefix: 'fas',\n  iconName: 'person-circle-question',\n  icon: [640, 512, [], \"e542\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-100c-11.6 0-21.3 8.2-23.5 19.2-1.8 8.7-10.2 14.3-18.9 12.5s-14.3-10.2-12.5-18.9c5.2-25.6 27.8-44.8 54.9-44.8 30.9 0 56 25.1 56 56 0 19.8-11.7 37.8-29.8 45.9l-10.4 4.6c-1.2 7.7-7.8 13.5-15.8 13.5-8.8 0-16-7.2-16-16 0-11.2 6.6-21.3 16.8-25.9l12.4-5.5c6.6-2.9 10.8-9.4 10.8-16.6 0-13.3-10.7-24-24-24z\"]\n};\nvar faClipboardCheck = {\n  prefix: 'fas',\n  iconName: 'clipboard-check',\n  icon: [384, 512, [], \"f46c\", \"M256 0c23.7 0 44.4 12.9 55.4 32l8.6 0c35.3 0 64 28.7 64 64l0 352c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l8.6 0C83.6 12.9 104.3 0 128 0L256 0zm26.9 212.6c-10.7-7.8-25.7-5.4-33.5 5.3l-85.6 117.7-26.5-27.4c-9.2-9.5-24.4-9.8-33.9-.6s-9.8 24.4-.6 33.9l46.4 48c4.9 5.1 11.8 7.8 18.9 7.3s13.6-4.1 17.8-9.8L288.2 246.1c7.8-10.7 5.4-25.7-5.3-33.5zM136 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L136 64z\"]\n};\nvar faShareFromSquare = {\n  prefix: 'fas',\n  iconName: 'share-from-square',\n  icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M384.5 24l0 72-64 0c-79.5 0-144 64.5-144 144 0 93.4 82.8 134.8 100.6 142.6 2.2 1 4.6 1.4 7.1 1.4l2.5 0c9.8 0 17.8-8 17.8-17.8 0-8.3-5.9-15.5-12.8-20.3-8.9-6.2-19.2-18.2-19.2-40.5 0-45 36.5-81.5 81.5-81.5l30.5 0 0 72c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l136-136c9.4-9.4 9.4-24.6 0-33.9L425.5 7c-6.9-6.9-17.2-8.9-26.2-5.2S384.5 14.3 384.5 24zm-272 72c-44.2 0-80 35.8-80 80l0 256c0 44.2 35.8 80 80 80l256 0c44.2 0 80-35.8 80-80l0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32c0 8.8-7.2 16-16 16l-256 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faReceipt = {\n  prefix: 'fas',\n  iconName: 'receipt',\n  icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.2-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6S384 14.6 384 24l0 464c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6l-40.4-34.6-40.4 34.6c-9 7.7-22.2 7.7-31.2 0l-40.4-34.6-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488L0 24C0 14.6 5.5 6.1 14 2.2zM104 136c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0zM80 352c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24zm24-120c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0z\"]\n};\nvar faEquals = {\n  prefix: 'fas',\n  iconName: 'equals',\n  icon: [448, 512, [62764], \"3d\", \"M32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 128zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320z\"]\n};\nvar faChevronUp = {\n  prefix: 'fas',\n  iconName: 'chevron-up',\n  icon: [448, 512, [], \"f077\", \"M201.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 173.3 54.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nvar faVirusSlash = {\n  prefix: 'fas',\n  iconName: 'virus-slash',\n  icon: [576, 512, [], \"e075\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-88.6-88.6c1.7-12.1-2-24.8-11.3-34-31.2-31.2-9.1-84.5 35-84.5 22.1 0 40-17.9 40-40s-17.9-40-40-40c-44.1 0-66.1-53.3-35-84.5 15.6-15.6 15.6-40.9 0-56.6s-40.9-15.6-56.6 0c-31.2 31.2-84.5 9.1-84.5-35 0-22.1-17.9-40-40-40s-40 17.9-40 40c0 44.1-53.3 66.1-84.5 35-9.3-9.3-22-13-34-11.3L41-24.9zM72 216c-22.1 0-40 17.9-40 40s17.9 40 40 40c44.1 0 66.1 53.3 35 84.5-15.6 15.6-15.6 40.9 0 56.6s40.9 15.6 56.6 0c31.2-31.2 84.5-9.1 84.5 35 0 22.1 17.9 40 40 40s40-17.9 40-40c0-21.4 12.6-37.6 29.1-45.1l-240-240C109.6 203.4 93.4 216 72 216z\"]\n};\nvar faSlash = {\n  prefix: 'fas',\n  iconName: 'slash',\n  icon: [576, 512, [], \"f715\", \"M7-25c9.4-9.4 24.6-9.4 33.9 0L569 503c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9C-2.3-.4-2.3-15.6 7-25z\"]\n};\nvar faExpand = {\n  prefix: 'fas',\n  iconName: 'expand',\n  icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32S0 334.3 0 352l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z\"]\n};\nvar faNoteSticky = {\n  prefix: 'fas',\n  iconName: 'note-sticky',\n  icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 213.5c0 17-6.7 33.3-18.7 45.3L322.7 461.3c-12 12-28.3 18.7-45.3 18.7L64 480zM389.5 304L296 304c-13.3 0-24 10.7-24 24l0 93.5 117.5-117.5z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faTableColumns = {\n  prefix: 'fas',\n  iconName: 'table-columns',\n  icon: [448, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 64l0 256 128 0 0-256-128 0zm320 0l-128 0 0 256 128 0 0-256z\"]\n};\nvar faColumns = faTableColumns;\nvar faPersonShelter = {\n  prefix: 'fas',\n  iconName: 'person-shelter',\n  icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32L64 178.6 256 68.9 448 178.6 448 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 192l16 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-174.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-33.2-61.7C329.7 245.1 294.4 224 256 224s-73.7 21.1-91.9 54.9l-33.2 61.7c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5 200 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-88z\"]\n};\nvar faCircleNotch = {\n  prefix: 'fas',\n  iconName: 'circle-notch',\n  icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8-79.3 23.6-137.1 97.1-137.1 184.1 0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256 512 397.4 397.4 512 256 512S0 397.4 0 256c0-116 77.1-213.9 182.9-245.4 16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nvar faWater = {\n  prefix: 'fas',\n  iconName: 'water',\n  icon: [512, 512, [], \"f773\", \"M410.6 124.1c20.7 15.6 46 30.7 74.2 34.5 13.1 1.8 25.2-7.5 27-20.6s-7.5-25.2-20.6-27c-15.9-2.1-33.2-11.3-51.7-25.2-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-18.5 13.9-35.8 23.1-51.7 25.2-13.1 1.8-22.4 13.8-20.6 27s13.8 22.4 27 20.6c28.2-3.8 53.6-18.9 74.2-34.5 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zm0 144c20.7 15.6 46 30.7 74.2 34.5 13.1 1.8 25.2-7.5 27-20.6s-7.5-25.2-20.6-27c-15.9-2.1-33.2-11.3-51.7-25.2-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-18.5 13.9-35.8 23.1-51.7 25.2-13.1 1.7-22.4 13.8-20.6 27s13.8 22.4 27 20.6c28.2-3.8 53.6-18.9 74.2-34.5 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zm-71.2 144c21.3-16.1 49.9-16.1 71.2 0 20.7 15.6 46 30.7 74.2 34.5 13.1 1.8 25.2-7.5 27-20.6s-7.5-25.2-20.6-27c-15.9-2.1-33.2-11.3-51.7-25.2-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-18.5 13.9-35.8 23.1-51.7 25.2-13.1 1.8-22.4 13.8-20.6 27s13.8 22.4 27 20.6c28.2-3.8 53.6-18.9 74.2-34.5 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n};\nvar faDeleteLeft = {\n  prefix: 'fas',\n  iconName: 'delete-left',\n  icon: [640, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64L205.3 64c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7L512 448c35.3 0 64-28.7 64-64l0-256zM284.1 188.1c9.4-9.4 24.6-9.4 33.9 0l33.9 33.9 33.9-33.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-33.9 33.9 33.9 33.9c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-33.9-33.9-33.9 33.9c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l33.9-33.9-33.9-33.9c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faBackspace = faDeleteLeft;\nvar faBroomBall = {\n  prefix: 'fas',\n  iconName: 'broom-ball',\n  icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M496 544a80 80 0 1 1 0-160 80 80 0 1 1 0 160zM106.8 277.2c30.6-30.6 73.1-45.9 115.8-42.2L341 353.3c3.7 42.8-11.6 85.2-42.2 115.9-27.4 27.4-64.6 42.8-103.3 42.8L22.1 512c-12.2 0-22.1-9.9-22.1-22.1 0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2 0-31.5 12.5-61.8 34.8-84l8-8zm417-270c12.6-10.3 31.1-9.5 42.8 2.2s12.4 30.2 2.2 42.8l-2.2 2.4-192 192 34.8 34.7c4.2 4.2 6.6 10 6.6 16 0 12.5-10.1 22.6-22.6 22.6l-29.1 0-108.3-108.3 0-29.1c0-12.5 10.1-22.6 22.6-22.6 6 0 11.8 2.4 16 6.6l34.8 34.7 192-192 2.4-2.2z\"]\n};\nvar faQuidditch = faBroomBall;\nvar faQuidditchBroomBall = faBroomBall;\nvar faJ = {\n  prefix: 'fas',\n  iconName: 'j',\n  icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32l0 256c0 88.4-71.6 160-160 160S0 408.4 0 320l0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 53 43 96 96 96s96-43 96-96l0-256c0-17.7 14.3-32 32-32z\"]\n};\nvar faShuttleSpace = {\n  prefix: 'fas',\n  iconName: 'shuttle-space',\n  icon: [576, 512, [\"space-shuttle\"], \"f197\", \"M0 368l0 64c0 26.5 21.5 48 48 48l50 0c40.6 0 80.4-11 115.2-31.9l133.5-80.1-93.3 0-64.9 38.9c-14 8.4-28.9 14.7-44.5 19l0-66.4c9.7-5.6 17.8-13.7 23.4-23.4l198.8 0c67.1 0 127.8-20.6 170.3-70.6 4.6-5.4 4.6-13.3 0-18.8-42.5-50.1-103.2-70.6-170.3-70.6l-198.8 0c-5.6-9.7-13.7-17.8-23.4-23.4l0-66.4c15.6 4.2 30.6 10.6 44.5 19l64.9 38.9 93.3 0-133.5-80.1C178.4 43 138.6 32 98 32L48 32C21.5 32 0 53.5 0 80L0 368zm96 0l0 64-48 0 0-64 48 0zM96 80l0 64-48 0 0-64 48 0zM416 224c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nvar faSpaceShuttle = faShuttleSpace;\nvar faYinYang = {\n  prefix: 'fas',\n  iconName: 'yin-yang',\n  icon: [512, 512, [9775], \"f6ad\", \"M224 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 352a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm0-448c53 0 96 43 96 96s-43 96-96 96-96 43-96 96 43 96 96 96C150 448 64 362 64 256S150 64 256 64zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faStop = {\n  prefix: 'fas',\n  iconName: 'stop',\n  icon: [448, 512, [9209], \"f04d\", \"M64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32z\"]\n};\nvar faTrowel = {\n  prefix: 'fas',\n  iconName: 'trowel',\n  icon: [576, 512, [], \"e589\", \"M407.9 181.4L277.3 312 342.6 377.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9s-11.5-20.8-7.9-32.2l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L232 266.7 362.6 136.1c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nvar faHandBackFist = {\n  prefix: 'fas',\n  iconName: 'hand-back-fist',\n  icon: [384, 512, [\"hand-rock\"], \"f255\", \"M7.4 253.6C2.6 245.9 0 237.1 0 228l0-36c0-26.5 21.5-48 48-48l16 0 0-80c0-26.5 21.5-48 48-48 17.3 0 32.4 9.1 40.9 22.8 4.3-22.1 23.8-38.8 47.1-38.8 23.4 0 42.9 16.8 47.1 38.9 7.3-4.4 15.8-6.9 24.9-6.9 22.1 0 40.8 15 46.3 35.4 5.5-2.2 11.4-3.4 17.7-3.4 26.5 0 48 21.5 48 48l0 96.9c0 9.9-2.3 19.7-6.8 28.6l-39.6 79.1c-10.8 21.7-33 35.4-57.2 35.4L96 352c-16.5 0-31.8-8.4-40.6-22.4l-48-76zM32 480l0-48c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faTemperatureHigh = {\n  prefix: 'fas',\n  iconName: 'temperature-high',\n  icon: [512, 512, [], \"f769\", \"M96 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144S48 447.5 48 368c0-42.6 18.5-81 48-107.3L96 96zm96 336c35.3 0 64-28.7 64-64 0-26.9-16.5-49.9-40-59.3L216 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 212.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64zM464 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM352 80a80 80 0 1 1 160 0 80 80 0 1 1 -160 0z\"]\n};\nvar faGreaterThan = {\n  prefix: 'fas',\n  iconName: 'greater-than',\n  icon: [512, 512, [62769], \"3e\", \"M34.9 50.6c-7.4 16-.4 35.1 15.6 42.5L403.6 256 50.6 419c-16 7.4-23.1 26.4-15.6 42.5s26.4 23 42.5 15.6l416-192c11.3-5.2 18.6-16.6 18.6-29.1s-7.3-23.8-18.6-29.1L77.4 35c-16-7.4-35.1-.4-42.5 15.6z\"]\n};\nvar faCrutch = {\n  prefix: 'fas',\n  iconName: 'crutch',\n  icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-1.4-1.4-158.6 158.6c-18 18-42.4 28.1-67.9 28.1l-59 0c-8.5 0-16.6 3.4-22.6 9.4-61.7 61.7-92.8 92.8-93.3 93.3-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l16-16 0 0 77.3-77.3c6-6 9.4-14.1 9.4-22.6l0-59c0-25.5 10.1-49.9 28.1-67.9L298.7 56 297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zM344 101.3L261.3 184 328 250.7 410.7 168 344 101.3zm-128 128l-30.6 30.6c-6 6-9.4 14.1-9.4 22.6l0 53.5 53.5 0c8.5 0 16.6-3.4 22.6-9.4L282.7 296 216 229.3z\"]\n};\nvar faSeptagon = {\n  prefix: 'fas',\n  iconName: 'septagon',\n  icon: [576, 512, [\"heptagon\"], \"e820\", \"M267.4-31.5c15.9-5.5 33.5-4.6 48.8 2.7l172.4 83 6.3 3.5c14.2 9 24.5 23.3 28.3 39.9l42.6 186.5 1.2 7.2c1.6 14.3-1.7 28.8-9.4 41.1l-4.2 5.9-119.3 149.6c-12.1 15.2-30.6 24.1-50 24.1l-191.3 0c-19.5 0-37.9-8.9-50-24.1L23.5 338.4c-12.1-15.2-16.7-35.2-12.3-54.2l42.6-186.5 2-7c5.6-15.9 17.2-29 32.6-36.4l172.4-83 6.7-2.7z\"]\n};\nvar faHeptagon = faSeptagon;\nvar faStreetView = {\n  prefix: 'fas',\n  iconName: 'street-view',\n  icon: [512, 512, [], \"f21d\", \"M256 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 160l64 0c35.3 0 64 28.7 64 64l0 48c0 17.7-14.3 32-32 32l-1.8 0-11.1 99.5c-1.8 16.2-15.5 28.5-31.8 28.5l-38.7 0c-16.3 0-30-12.3-31.8-28.5l-11.1-99.5-1.8 0c-17.7 0-32-14.3-32-32l0-48c0-35.3 28.7-64 64-64zM412.4 400.2c-16.1-4.2-34.8-7.6-55.4-10.2l5.3-47.7c22.7 2.9 43.7 6.7 62.1 11.5 22.4 5.8 42.6 13.3 57.8 23.3 14.7 9.6 29.8 24.9 29.8 47s-15.1 37.4-29.8 47c-15.2 9.9-35.5 17.5-57.8 23.3-45.1 11.7-105.3 17.8-168.4 17.8s-123.3-6.1-168.4-17.8C65.2 488.4 45 480.9 29.8 471 15.1 461.4 0 446.1 0 424s15.1-37.4 29.8-47c15.2-9.9 35.5-17.5 57.8-23.3 18.5-4.8 39.5-8.6 62.1-11.5L155 390c-20.6 2.6-39.3 6.1-55.4 10.2-56.6 14.6-56.6 32.9 0 47.5 39.9 10.3 95.8 16.2 156.4 16.2s116.5-5.9 156.4-16.2c56.6-14.6 56.6-32.9 0-47.5z\"]\n};\nvar faWaveSquare = {\n  prefix: 'fas',\n  iconName: 'wave-square',\n  icon: [512, 512, [], \"f83e\", \"M64 96c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 288 96 0 0-128c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-288-96 0 0 128c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-128z\"]\n};\nvar faAngleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-left',\n  icon: [256, 512, [8249], \"f104\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faScrewdriver = {\n  prefix: 'fas',\n  iconName: 'screwdriver',\n  icon: [576, 512, [129691], \"f54a\", \"M352.1 146.7l0-49.6c0-10.7 5.3-20.7 14.2-26.6L485.2-8.7c6.3-4.2 14.8-3.4 20.2 2l45.4 45.5c5.4 5.4 6.2 13.8 2 20.2L473.6 177.8c-5.9 8.9-15.9 14.2-26.6 14.2l-49.6 0-90.7 90.7c15 33.3 8.9 73.9-18.5 101.3L162.1 510.1c-18.7 18.7-49.1 18.7-67.9 0L34.1 449.9c-18.7-18.7-18.7-49.1 0-67.9L160.1 256c27.4-27.4 67.9-33.6 101.3-18.5l90.7-90.7z\"]\n};\nvar faTractor = {\n  prefix: 'fas',\n  iconName: 'tractor',\n  icon: [576, 512, [128668], \"f722\", \"M160 96l0 96 133.4 0-57.6-96-75.8 0zM96 223L96 64c0-17.7 14.3-32 32-32l107.8 0c22.5 0 43.3 11.8 54.9 31.1l77.4 128.9 64 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 48 0c26.5 0 48 21.5 48 48l0 41.5c0 14.2-6.3 27.8-17.3 36.9l-35 29.2c26.5 15.2 44.3 43.7 44.3 76.4 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-14.4 3.5-28 9.6-40l-101.2 0c-3 13.4-7.9 26-14.4 37.7 7.7 9.4 7.2 23.4-1.6 32.2l-22.6 22.6c-8.8 8.8-22.7 9.3-32.2 1.6-9.3 5.2-19.3 9.3-29.8 12.3-1.2 12.1-11.4 21.6-23.9 21.6l-32 0c-12.4 0-22.7-9.5-23.9-21.6-10.5-3-20.4-7.2-29.8-12.3-9.4 7.7-23.4 7.2-32.2-1.6L35.5 453.8c-8.8-8.8-9.3-22.7-1.6-32.2-5.2-9.3-9.3-19.3-12.3-29.8-12.1-1.2-21.6-11.4-21.6-23.9l0-32c0-12.4 9.5-22.7 21.6-23.9 3-10.5 7.2-20.4 12.3-29.8-7.7-9.4-7.2-23.4 1.6-32.2l22.6-22.6c8.8-8.8 22.7-9.3 32.2-1.6 1.9-1 3.7-2 5.7-3zm64 65a64 64 0 1 0 0 128 64 64 0 1 0 0-128zM440 424a40 40 0 1 0 80 0 40 40 0 1 0 -80 0z\"]\n};\nvar faBridgeCircleXmark = {\n  prefix: 'fas',\n  iconName: 'bridge-circle-xmark',\n  icon: [576, 512, [], \"e4cb\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l8 0 0 64-40 0 0 112c37.6 9.4 64 43.2 64 82l0 94c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96 6.4 0 12.7 .6 18.7 1.8 34.7-49.5 92.2-81.8 157.3-81.8 28.6 0 55.6 6.2 80 17.4l0-65.4-40 0 0-64 8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM424 96l0 64-80 0 0-64 80 0zM296 96l0 64-80 0 0-64 80 0zM88 96l80 0 0 64-80 0 0-64zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faVials = {\n  prefix: 'fas',\n  iconName: 'vials',\n  icon: [512, 512, [], \"f493\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 352c0 53 43 96 96 96s96-43 96-96l0-352 64 0 0 352c0 53 43 96 96 96s96-43 96-96l0-352c17.7 0 32-14.3 32-32S497.7 0 480 0L32 0zM160 64l0 128-64 0 0-128 64 0zm256 0l0 128-64 0 0-128 64 0z\"]\n};\nvar faStethoscope = {\n  prefix: 'fas',\n  iconName: 'stethoscope',\n  icon: [576, 512, [129658], \"f0f1\", \"M32 48C32 21.5 53.5 0 80 0l48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 128c0 53 43 96 96 96s96-43 96-96l0-128-32 0c-17.7 0-32-14.3-32-32S238.3 0 256 0l48 0c26.5 0 48 21.5 48 48l0 144c0 77.4-55 142-128 156.8l0 19.2c0 61.9 50.1 112 112 112s112-50.1 112-112l0-85.5c-37.3-13.2-64-48.7-64-90.5 0-53 43-96 96-96s96 43 96 96c0 41.8-26.7 77.4-64 90.5l0 85.5c0 97.2-78.8 176-176 176S160 465.2 160 368l0-19.2C87 334 32 269.4 32 192L32 48zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faPodcast = {\n  prefix: 'fas',\n  iconName: 'podcast',\n  icon: [448, 512, [], \"f2ce\", \"M336 359.8c39.1-32.3 64-81.1 64-135.8 0-97.2-78.8-176-176-176S48 126.8 48 224C48 278.7 72.9 327.5 112 359.8 112.4 377.4 115.2 400.2 118.4 421.6 48 383.9 0 309.5 0 224 0 100.3 100.3 0 224 0S448 100.3 448 224c0 85.6-48 159.9-118.5 197.6 3.3-21.4 6-44.2 6.4-61.8zm-14-53.4c-8.3-12.6-19.2-21.6-30.4-27.8-2.1-1.1-4.2-2.2-6.3-3.2 11.7-13.9 18.8-31.9 18.8-51.5 0-44.2-35.8-80-80-80s-80 35.8-80 80c0 19.6 7.1 37.6 18.8 51.5-2.1 1-4.2 2-6.3 3.2-11.2 6.2-22.1 15.2-30.4 27.8-18.8-22.3-30.1-51-30.1-82.4 0-70.7 57.3-128 128-128s128 57.3 128 128c0 31.4-11.3 60.2-30.1 82.4zM224 312c32.9 0 64 8.6 64 43.8 0 33-12.9 104.1-20.6 132.9-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8 0-35.1 31.1-43.8 64-43.8zm0-128a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faArrowUpRightDots = {\n  prefix: 'fas',\n  iconName: 'arrow-up-right-dots',\n  icon: [512, 512, [], \"e4b7\", \"M96 32C78.3 32 64 46.3 64 64S78.3 96 96 96L114.7 96 9.4 201.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.3 160 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L96 32zM403.8 70.1a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zM279.7 194.2a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zm162.2-38.1a38.1 38.1 0 1 0 0 76.2 38.1 38.1 0 1 0 0-76.2zM156.2 317.8a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zm161.6-38.1a38.1 38.1 0 1 0 0 76.2 38.1 38.1 0 1 0 0-76.2zm86.1 38.1a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zM70.1 403.8a38.1 38.1 0 1 0 0 76.2 38.1 38.1 0 1 0 0-76.2zm86.1 38.1a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0zm161.6-38.1a38.1 38.1 0 1 0 0 76.2 38.1 38.1 0 1 0 0-76.2zm86.1 38.1a38.1 38.1 0 1 0 76.2 0 38.1 38.1 0 1 0 -76.2 0z\"]\n};\nvar faChessQueen = {\n  prefix: 'fas',\n  iconName: 'chess-queen',\n  icon: [512, 512, [9819], \"f445\", \"M256 80a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM5.5 185L128 384 71.8 454.3c-5 6.3-7.8 14.1-7.8 22.2 0 19.6 15.9 35.5 35.5 35.5l312.9 0c19.6 0 35.5-15.9 35.5-35.5 0-8.1-2.7-15.9-7.8-22.2L384 384 506.5 185c3.6-5.9 5.5-12.7 5.5-19.6l0-.6c0-20.3-16.5-36.8-36.8-36.8-7.3 0-14.4 2.2-20.4 6.2l-16.9 11.3c-12.7 8.5-29.6 6.8-40.4-4l-34.1-34.1C356.1 100.1 346.2 96 336 96s-20.1 4.1-27.3 11.3l-30.1 30.1c-12.5 12.5-32.8 12.5-45.3 0l-30.1-30.1C196.1 100.1 186.2 96 176 96s-20.1 4.1-27.3 11.3l-34.1 34.1c-10.8 10.8-27.7 12.5-40.4 4L57.3 134.2c-6.1-4-13.2-6.2-20.4-6.2-20.3 0-36.8 16.5-36.8 36.8l0 .6c0 6.9 1.9 13.7 5.5 19.6z\"]\n};\nvar faAnchorCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'anchor-circle-exclamation',\n  icon: [640, 512, [], \"e4ab\", \"M320.5 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-32-96c-53 0-96 43-96 96 0 41.8 26.7 77.4 64 90.5l0 257.9c-62.9-14.3-110.2-69.7-111.9-136.5l16.1 14.1c10 8.7 25.1 7.7 33.9-2.3s7.7-25.1-2.3-33.9l-64-56c-9-7.9-22.6-7.9-31.6 0l-64 56c-10 8.7-11 23.9-2.3 33.9s23.9 11 33.9 2.3l16.2-14.2c2.1 113.1 94.4 204.1 208 204.1 16.6 0 32.7-1.9 48.2-5.6-20.3-30.5-32.2-67-32.2-106.4 0-27.3 5.7-53.3 16-76.9l0-136.6c37.3-13.2 64-48.7 64-90.5 0-53-43-96-96-96zm208 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nvar faEllipsisVertical = {\n  prefix: 'fas',\n  iconName: 'ellipsis-vertical',\n  icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 144a56 56 0 1 1 0-112 56 56 0 1 1 0 112zm0 224c30.9 0 56 25.1 56 56s-25.1 56-56 56-56-25.1-56-56 25.1-56 56-56zm56-112c0 30.9-25.1 56-56 56s-56-25.1-56-56 25.1-56 56-56 56 25.1 56 56z\"]\n};\nvar faEllipsisV = faEllipsisVertical;\nvar faHeartCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'heart-circle-exclamation',\n  icon: [576, 512, [], \"e4fe\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM432 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 228a20 20 0 1 0 0-40 20 20 0 1 0 0 40zm0-180c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nvar faBuildingCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'building-circle-exclamation',\n  icon: [576, 512, [], \"e4d3\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-10.5-14.6-19-30.7-25.1-48l-74.9 0 0-80c0-17.7 14.3-32 32-32l32 0c2 0 4 .2 5.9 .5 6-23.6 16.3-45.4 30.1-64.5l-4 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 4c27.5-19.8 60.3-32.4 96-35.4L416 64c0-35.3-28.7-64-64-64L96 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nvar faPersonArrowUpFromLine = {\n  prefix: 'fas',\n  iconName: 'person-arrow-up-from-line',\n  icon: [576, 512, [], \"e539\", \"M192-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM318.3 299.1l-46.3-62.4 0 243.3 272 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 544c-17.7 0-32-14.3-32-32s14.3-32 32-32l80 0 0-243.3-46.3 62.4c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95C110 132 149.7 112 192 112s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6zM208 480l0-128c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 128 32 0zM566.6 102.6c-12.5 12.5-32.8 12.5-45.3 0L496 77.3 496 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-146.7-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l80-80c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3z\"]\n};\nvar faNotEqual = {\n  prefix: 'fas',\n  iconName: 'not-equal',\n  icon: [448, 512, [], \"f53e\", \"M378.6 81.8c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L270.9 128 32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l196.2 0-85.3 128-110.9 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l68.2 0-30.8 46.2c-9.8 14.7-5.8 34.6 8.9 44.4s34.6 5.8 44.4-8.9L177.1 384 416 384c17.7 0 32-14.3 32-32s-14.3-32-32-32l-196.2 0 85.3-128 110.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-68.2 0 30.8-46.2z\"]\n};\nvar faTrainTram = {\n  prefix: 'fas',\n  iconName: 'train-tram',\n  icon: [384, 512, [128650], \"e5b4\", \"M0 8C0-5.3 10.7-16 24-16l336 0c13.3 0 24 10.7 24 24l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-120 0 0 64 40 0c53 0 96 43 96 96l0 160c0 31.2-14.9 59-38 76.5l64.3 76c8.6 10.1 7.3 25.3-2.8 33.8s-25.3 7.3-33.8-2.8l-74.6-88.1c-3.6 .4-7.3 .6-11.1 .6l-128 0c-3.8 0-7.5-.2-11.1-.6L42.3 535.5c-8.6 10.1-23.7 11.4-33.8 2.8s-11.4-23.7-2.8-33.8l64.3-76C46.9 411 32 383.2 32 352l0-160c0-53 43-96 96-96l40 0 0-64-120 0 0 8c0 13.3-10.7 24-24 24S0 53.3 0 40L0 8zM128 160c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-128 0zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faPlaneDeparture = {\n  prefix: 'fas',\n  iconName: 'plane-departure',\n  icon: [576, 512, [128747], \"f5b0\", \"M372 143.9L172.7 40.2c-8-4.1-17.3-4.8-25.7-1.7l-41.1 15c-10.3 3.7-13.8 16.4-7.1 25L200.3 206.4 100.1 242.8 40 206.2c-6.2-3.8-13.8-4.5-20.7-2.1L3 210.1c-9.4 3.4-13.4 14.5-8.3 23.1l53.6 91.8c15.6 26.7 48.1 38.4 77.1 27.8l12.9-4.7 0 0 398.4-145c29.1-10.6 44-42.7 33.5-71.8s-42.7-44-71.8-33.5L372 143.9zM32.2 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-512 0z\"]\n};\nvar faRightToBracket = {\n  prefix: 'fas',\n  iconName: 'right-to-bracket',\n  icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M345 273c9.4-9.4 9.4-24.6 0-33.9L201 95c-6.9-6.9-17.2-8.9-26.2-5.2S160 102.3 160 112l0 80-112 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l112 0 0 80c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2L345 273zm7 143c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0z\"]\n};\nvar faSignInAlt = faRightToBracket;\nvar faSdCard = {\n  prefix: 'fas',\n  iconName: 'sd-card',\n  icon: [384, 512, [], \"f7c2\", \"M384 64c0-35.3-28.7-64-64-64L125.3 0C108.3 0 92 6.7 80 18.7L18.7 80C6.7 92 0 108.3 0 125.3L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384zM160 88l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm88 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm88 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHouseCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'house-circle-exclamation',\n  icon: [640, 512, [], \"e50a\", \"M496 544a144 144 0 1 1 0-288 144 144 0 1 1 0 288zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l217.6 202c-10.2-1.7-20.7-2.6-31.3-2.6-78.6 0-146.1 47.2-175.8 114.8-5.1-1.8-10.5-2.8-16.2-2.8l-32 0c-26.5 0-48 21.5-48 48l0 96 91 0c6.1 17.3 14.6 33.4 25.1 48L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM496 444a20 20 0 1 0 0 40 20 20 0 1 0 0-40zm0-140c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16 8.8 0 16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nvar faShekelSign = {\n  prefix: 'fas',\n  iconName: 'shekel-sign',\n  icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 128 0c35.3 0 64 28.7 64 64l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-70.7-57.3-128-128-128L32 32zM320 480c70.7 0 128-57.3 128-128l0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288c0 35.3-28.7 64-64 64l-128 0 0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l160 0z\"]\n};\nvar faIls = faShekelSign;\nvar faShekel = faShekelSign;\nvar faSheqel = faShekelSign;\nvar faSheqelSign = faShekelSign;\nvar faRadio = {\n  prefix: 'fas',\n  iconName: 'radio',\n  icon: [512, 512, [128251], \"f8d7\", \"M494.8 15c12.7-3.7 20-17.1 16.3-29.8S494-34.8 481.3-31L51.8 94.9C42.4 97.6 33.9 102.1 26.6 108 10.5 119.7 0 138.6 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L218.5 96 494.8 15zM368 208a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM64 248c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 272c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 368c-13.3 0-24-10.7-24-24z\"]\n};\nvar faHandDots = {\n  prefix: 'fas',\n  iconName: 'hand-dots',\n  icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4S-3.6 325.7 12.4 341L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208zM200 352a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 88a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm-88 24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faAllergies = faHandDots;\nvar faBookSkull = {\n  prefix: 'fas',\n  iconName: 'book-skull',\n  icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48L96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32zM272 163.2l0 12.8c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16l0-12.8c-19.4-11.7-32-30.3-32-51.2 0-35.3 35.8-64 80-64s80 28.7 80 64c0 20.9-12.6 39.5-32 51.2zM208 112a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm74.2 95.7c4.6 10.1 .1 21.9-9.9 26.5l-47.9 21.8 47.9 21.8c10.1 4.6 14.5 16.4 9.9 26.5s-16.4 14.5-26.5 9.9L224 294 144.3 330.2c-10.1 4.6-21.9 .1-26.5-9.9s-.1-21.9 9.9-26.5l47.9-21.8-47.9-21.8c-10.1-4.6-14.5-16.4-9.9-26.5s16.4-14.5 26.5-9.9L224 250 303.7 213.8c10.1-4.6 21.9-.1 26.5 9.9z\"]\n};\nvar faBookDead = faBookSkull;\nvar faUnlockKeyhole = {\n  prefix: 'fas',\n  iconName: 'unlock-keyhole',\n  icon: [384, 512, [\"unlock-alt\"], \"f13e\", \"M192 32c-35.3 0-64 28.7-64 64l0 64 192 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l0-64c0-70.7 57.3-128 128-128 63.5 0 116.1 46.1 126.2 106.7 2.9 17.4-8.8 33.9-26.3 36.9s-33.9-8.8-36.9-26.3C250 55.1 223.7 32 192 32zm40 328c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0z\"]\n};\nvar faUnlockAlt = faUnlockKeyhole;\nvar faFileArrowUp = {\n  prefix: 'fas',\n  iconName: 'file-arrow-up',\n  icon: [384, 512, [\"file-upload\"], \"f574\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM209 263c-9.4-9.4-24.6-9.4-33.9 0l-64 64c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l23-23 0 86.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-86.1 23 23c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-64-64z\"]\n};\nvar faFileUpload = faFileArrowUp;\nvar faFaceGrinTears = {\n  prefix: 'fas',\n  iconName: 'face-grin-tears',\n  icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M554.8 203.4l16.3 2.3C547.7 88.4 444.2 0 320 0S92.3 88.4 68.9 205.7l16.3-2.3c37-5.3 68.6 26.4 63.4 63.4l-6.7 46.7c-4.1 29-21.6 53.2-45.8 66.8 43.7 78.5 127.6 131.7 223.8 131.7s180.1-53.1 223.8-131.7c-24.1-13.5-41.6-37.8-45.8-66.8l-6.7-46.7c-5.3-37 26.4-68.6 63.4-63.4zM470.3 326.9C447.9 388.2 389.1 432 320 432S192.1 388.2 169.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1c11.9-3.7 23.9 6.3 19.6 18.1zM212 208l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28zm188-28c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zM640 300.6c0-25.6-18.8-47.3-44.1-50.9L549.1 243c-10.6-1.5-19.6 7.5-18.1 18.1l6.7 46.7c3.6 25.3 25.3 44.1 50.9 44.1 28.4 0 51.4-23 51.4-51.4zm-640 0C0 329 23 352 51.4 352 77 352 98.7 333.2 102.3 307.9l6.7-46.7c1.5-10.6-7.5-19.6-18.1-18.1l-46.7 6.7C18.8 253.3 0 275 0 300.6z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faPenToSquare = {\n  prefix: 'fas',\n  iconName: 'pen-to-square',\n  icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L368 46.1 465.9 144 490.3 119.6c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L432 177.9 334.1 80 172.4 241.7zM96 64C43 64 0 107 0 160L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 64z\"]\n};\nvar faEdit = faPenToSquare;\nvar faEarthEurope = {\n  prefix: 'fas',\n  iconName: 'earth-europe',\n  icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M256.2 48c114.8 .1 207.8 93.2 207.8 208 0 22.1-3.4 43.4-9.8 63.4-2 .4-4.1 .6-6.2 .6l-2.7 0c-8.5 0-16.6-3.4-22.6-9.4l-29.3-29.3c-6-6-9.4-14.1-9.4-22.6l0-50.7c0-8.8 7.2-16 16-16s16-7.2 16-16-7.2-16-16-16l-24 0c-13.3 0-24 10.7-24 24s-10.7 24-24 24l-56 0c-8.8 0-16 7.2-16 16s-7.2 16-16 16l-25.4 0c-12.5 0-22.6-10.1-22.6-22.6 0-6 2.4-11.8 6.6-16l70.1-70.1c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3l-14.1 0c-12.5 0-22.6-10.1-22.6-22.6 0-6 2.4-11.8 6.6-16l23.1-23.1c.8-.8 1.6-1.5 2.5-2.2zM438.4 356.1c-32.8 59.6-93.9 101.4-165.2 107.2-.7-2.3-1.1-4.8-1.1-7.3 0-13.3-10.7-24-24-24l-26.7 0c-8.5 0-16.6-3.4-22.6-9.4l-29.3-29.3c-6-6-9.4-14.1-9.4-22.6l0-66.7c0-17.7 14.3-32 32-32l98.7 0c8.5 0 16.6 3.4 22.6 9.4l29.3 29.3c6 6 14.1 9.4 22.6 9.4l5.5 0c8.5 0 16.6 3.4 22.6 9.4l16 16c4.2 4.2 10 6.6 16 6.6 4.8 0 9.3 1.5 13 4.1zM256 512l26.2-1.3c-8.6 .9-17.3 1.3-26.2 1.3zm26.2-1.3C411.3 497.6 512 388.6 512 256 512 114.6 397.4 0 256 0l0 0C114.6 0 0 114.6 0 256 0 383.5 93.2 489.3 215.3 508.8 228.5 510.9 242.1 512 256 512zM187.3 123.3l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGlobeEurope = faEarthEurope;\nvar faFaceGrinBeamSweat = {\n  prefix: 'fas',\n  iconName: 'face-grin-beam-sweat',\n  icon: [576, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M546.2-.1c14.7 17.8 29.8 40.1 29.8 64.1 0 36.4-27.6 64-64 64s-64-27.6-64-64c0-24 15.2-46.3 29.8-64.1 8.8-10.7 18.5-20.8 29-30 3-2.6 7.4-2.6 10.4 0 10.5 9.1 20.1 19.3 29 30zM288 0c42.5 0 82.6 10.4 117.8 28.7-3.6 10.9-5.8 22.7-5.8 35.3 0 62.9 49.1 112 112 112 6.4 0 12.7-.5 18.8-1.5 8.6 25.6 13.2 53 13.2 81.5 0 141.4-114.6 256-256 256S32 397.4 32 256 146.6 0 288 0zM418.7 308.9C379.5 321.1 335.1 328 288 328s-91.5-6.9-130.7-19.1c-11.9-3.7-23.9 6.3-19.6 18.1 22.4 61.3 81.3 105.1 150.3 105.1s127.9-43.8 150.3-105.1c4.3-11.8-7.7-21.8-19.6-18.1zM208 180c15.5 0 28 12.5 28 28l0 8c0 11 9 20 20 20s20-9 20-20l0-8c0-37.6-30.4-68-68-68s-68 30.4-68 68l0 8c0 11 9 20 20 20s20-9 20-20l0-8c0-15.5 12.5-28 28-28zm132 28c0-15.5 12.5-28 28-28s28 12.5 28 28l0 8c0 11 9 20 20 20s20-9 20-20l0-8c0-37.6-30.4-68-68-68s-68 30.4-68 68l0 8c0 11 9 20 20 20s20-9 20-20l0-8z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faCircleHalfStroke = {\n  prefix: 'fas',\n  iconName: 'circle-half-stroke',\n  icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n};\nvar faAdjust = faCircleHalfStroke;\nvar faPersonMilitaryToPerson = {\n  prefix: 'fas',\n  iconName: 'person-military-to-person',\n  icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8 0 9.3 7.5 16.8 16.7 16.9l111.4 0c8.8-.1 15.9-7.2 15.9-16L200 16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1l-122.9 0c-1.6 5.7-2.5 11.7-2.5 17.9 0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256l0 32c0 17.7 14.3 32 32 32l128 0c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5l0-32c0-35.3-28.7-64-64-64l-64 0c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-35.3-28.7-64-64-64l-64 0zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376l0 32-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0 0 32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 3 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9S400 497.8 400 488.4l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nvar faTableCellsColumnLock = {\n  prefix: 'fas',\n  iconName: 'table-cells-column-lock',\n  icon: [640, 512, [], \"e678\", \"M256 224l0 192 64 0 0-192-64 0zm256-79c-46.7 5.8-85.6 36.8-102.7 79l-25.3 0 0 90.8c-10.1 15.2-16 33.4-16 53.1l0 96c0 5.5 .5 10.9 1.3 16.1L128 480c-35.3 0-64-28.7-64-64L64 96c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 49zM128 224l0 192 64 0 0-192-64 0zm432 48.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM416 368c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nvar faTruckFieldUn = {\n  prefix: 'fas',\n  iconName: 'truck-field-un',\n  icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96l0 32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l0 48c0 21.1 13.7 39.1 32.6 45.5-.4 3.4-.6 7-.6 10.5 0 48.6 39.4 88 88 88s88-39.4 88-88c0-2.7-.1-5.4-.4-8l144.7 0c-.2 2.6-.4 5.3-.4 8 0 48.6 39.4 88 88 88s88-39.4 88-88c0-2.7-.1-5.4-.4-8l.4 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-24.7 0-1.7-4.2-43.8-106.3c-12.3-30-41.6-49.5-74-49.5l-40.4 0C364.4 44.9 343.7 32 320 32L96 32zM384 224l0-96 31.9 0c6.5 0 12.3 3.9 14.8 9.9l35.4 86.1-82.1 0zM152 352a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm280 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM256.6 132.9l27.4 41 0-29.9c0-11 9-20 20-20s20 9 20 20l0 96c0 8.8-5.8 16.6-14.2 19.1s-17.5-.7-22.4-8l-27.4-41 0 29.9c0 11-9 20-20 20s-20-9-20-20l0-96c0-8.8 5.8-16.6 14.2-19.1s17.5 .7 22.4 8zM132 144l0 64c0 6.6 5.4 12 12 12s12-5.4 12-12l0-64c0-11 9-20 20-20s20 9 20 20l0 64c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-64c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faClock = {\n  prefix: 'fas',\n  iconName: 'clock',\n  icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512 256 256 0 1 1 0-512zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faBook = {\n  prefix: 'fas',\n  iconName: 'book',\n  icon: [448, 512, [128212], \"f02d\", \"M384 512L96 512c-53 0-96-43-96-96L0 96C0 43 43 0 96 0L400 0c26.5 0 48 21.5 48 48l0 288c0 20.9-13.4 38.7-32 45.3l0 66.7c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0zM96 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0 0-64-256 0zm32-232c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24zm24 72c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0z\"]\n};\nvar faFaceLaughWink = {\n  prefix: 'fas',\n  iconName: 'face-laugh-wink',\n  icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM101.6 314c-3.7-13.7 7.5-26 21.7-26l265.4 0c14.2 0 25.4 12.3 21.7 26-18.5 68-80.6 118-154.4 118S120 382 101.6 314zM144 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm164 8c0 11-9 20-20 20s-20-9-20-20c0-33.1 26.9-60 60-60l16 0c33.1 0 60 26.9 60 60 0 11-9 20-20 20s-20-9-20-20-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faCloudMeatball = {\n  prefix: 'fas',\n  iconName: 'cloud-meatball',\n  icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96l26.9 0c3.5-12.1 10.1-23.3 19.2-32.4l1.4-1.4c15-15 35.3-22.9 56.1-22.2 14.2-15.1 34.2-23.9 55.4-23.9l2 0c21.1 0 41.1 8.8 55.4 23.9 20.8-.6 41.1 7.3 56.1 22.2l1.4 1.4c9.2 9.2 15.7 20.4 19.2 32.4l26.9 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0 1.1-5.2 1.6-10.5 1.6-16 0-44.2-35.8-80-80-80-24.3 0-46.1 10.9-60.8 28-18.7-35.7-56.1-60-99.2-60-61.9 0-112 50.1-112 112 0 7.1 .7 14.1 1.9 20.8-38.3 12.6-65.9 48.7-65.9 91.2zM156.5 424.3c9.5 6.3 14.2 17.7 11.9 28.8-1.8 9.2 1 18.7 7.7 25.3l1.4 1.4c6.6 6.6 16.1 9.5 25.3 7.7 11.1-2.2 22.5 2.5 28.8 11.9 5.2 7.8 14 12.5 23.3 12.5l2 0c9.4 0 18.1-4.7 23.3-12.5 6.3-9.5 17.7-14.2 28.8-11.9 9.2 1.8 18.7-1 25.3-7.7l1.4-1.4c6.6-6.6 9.5-16.1 7.7-25.3-2.2-11.1 2.5-22.5 11.9-28.8 7.8-5.2 12.5-14 12.5-23.3l0-2c0-9.4-4.7-18.1-12.5-23.3-9.5-6.3-14.2-17.7-11.9-28.8 1.8-9.2-1-18.7-7.7-25.3l-1.4-1.4c-6.6-6.6-16.1-9.5-25.3-7.7-11.1 2.2-22.5-2.5-28.8-11.9-5.2-7.8-14-12.5-23.3-12.5l-2 0c-9.4 0-18.1 4.7-23.3 12.5-6.3 9.5-17.7 14.2-28.8 11.9-9.2-1.8-18.7 1-25.3 7.7l-1.4 1.4c-6.6 6.6-9.5 16.1-7.7 25.3 2.2 11.1-2.5 22.5-11.9 28.8-7.8 5.2-12.5 14-12.5 23.3l0 2c0 9.4 4.7 18.1 12.5 23.3zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faChartArea = {\n  prefix: 'fas',\n  iconName: 'chart-area',\n  icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zM240 96c6.7 0 13.1 2.8 17.7 7.8L328.8 181.3 375 135c9.4-9.4 24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17l0 112c0 13.3-10.7 24-24 24l-304 0c-13.3 0-24-10.7-24-24l0-112c0-6 2.3-11.8 6.3-16.2l88-96c4.5-5 11-7.8 17.7-7.8z\"]\n};\nvar faAreaChart = faChartArea;\nvar faRupiahSign = {\n  prefix: 'fas',\n  iconName: 'rupiah-sign',\n  icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144 0 54.3-30 101.5-74.4 126.1l41 136.7c5.1 16.9-4.5 34.8-21.5 39.8s-34.8-4.5-39.8-21.5L120.1 319.8c-2.7 .1-5.4 .2-8.1 .2l-48 0 0 128c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80l-48 0 0 160zm256-32l80 0c61.9 0 112 50.1 112 112S461.9 448 400 448l-48 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48l-48 0 0 96 48 0z\"]\n};\nvar faTextWidth = {\n  prefix: 'fas',\n  iconName: 'text-width',\n  icon: [448, 512, [], \"f035\", \"M40 0C17.9 0 0 17.9 0 40L0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 128 0 0 160-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-160 128 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-56c0-22.1-17.9-40-40-40L40 0zm78.6 406.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4 229.5 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4-229.5 0 9.4-9.4z\"]\n};\nvar faSatellite = {\n  prefix: 'fas',\n  iconName: 'satellite',\n  icon: [512, 512, [128752], \"f7bf\", \"M199 7c9.4-9.4 24.6-9.4 33.9 0l89.4 89.4 55-55c12.5-12.5 32.8-12.5 45.3 0l48 48c12.5 12.5 12.5 32.8 0 45.3l-55 55 89.4 89.4c9.4 9.4 9.4 24.6 0 33.9l-96 96c-9.4 9.4-24.6 9.4-33.9 0l-89.4-89.4-15.5 15.5c11.4 24.6 17.8 52 17.8 80.9 0 31.7-7.7 61.5-21.2 87.8-4.7 9-16.7 10.3-23.8 3.1l-96.3-96.3-60 60c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l60-60-96.3-96.3c-7.2-7.2-5.9-19.2 3.1-23.8 26.3-13.6 56.2-21.2 87.8-21.2 28.9 0 56.3 6.4 80.9 17.8L192.4 226.3 103 137c-9.4-9.4-9.4-24.6 0-33.9L199 7zm17 50.9l-62.1 62.1 72.4 72.4 62.1-62.1-72.4-72.4zM392 358.1l62.1-62.1-72.4-72.4-62.1 62.1 72.4 72.4z\"]\n};\nvar faMagnifyingGlassMinus = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-minus',\n  icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nvar faSearchMinus = faMagnifyingGlassMinus;\nvar faPeopleGroup = {\n  prefix: 'fas',\n  iconName: 'people-group',\n  icon: [512, 512, [], \"e533\", \"M256 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm96 312c0 25-12.7 47-32 59.9l0 92.1c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-92.1C172.7 359 160 337 160 312l0-40c0-53 43-96 96-96s96 43 96 96l0 40zM96 32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm16 240l0 32c0 32.5 12.1 62.1 32 84.7l0 75.3c0 1.2 0 2.5 .1 3.7-8.5 7.6-19.7 12.3-32.1 12.3l-32 0c-26.5 0-48-21.5-48-48l0-56.6C12.9 364.4 0 343.7 0 320l0-32c0-53 43-96 96-96 12.7 0 24.8 2.5 35.9 6.9-12.6 21.4-19.9 46.4-19.9 73.1zM368 464l0-75.3c19.9-22.5 32-52.2 32-84.7l0-32c0-26.7-7.3-51.6-19.9-73.1 11.1-4.5 23.2-6.9 35.9-6.9 53 0 96 43 96 96l0 32c0 23.7-12.9 44.4-32 55.4l0 56.6c0 26.5-21.5 48-48 48l-32 0c-12.3 0-23.6-4.6-32.1-12.3 0-1.2 .1-2.5 .1-3.7zM416 32a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faSquareBinary = {\n  prefix: 'fas',\n  iconName: 'square-binary',\n  icon: [448, 512, [], \"e69b\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm144 4c-24.3 0-44 19.7-44 44l0 48c0 24.3 19.7 44 44 44l32 0c24.3 0 44-19.7 44-44l0-48c0-24.3-19.7-44-44-44l-32 0zm-4 44c0-2.2 1.8-4 4-4l32 0c2.2 0 4 1.8 4 4l0 48c0 2.2-1.8 4-4 4l-32 0c-2.2 0-4-1.8-4-4l0-48zm140-44c-11 0-20 9-20 20 0 9.7 6.9 17.7 16 19.6l0 76.4c0 11 9 20 20 20s20-9 20-20l0-96c0-11-9-20-20-20l-16 0zM132 296c0 9.7 6.9 17.7 16 19.6l0 76.4c0 11 9 20 20 20s20-9 20-20l0-96c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20zm96 24l0 48c0 24.3 19.7 44 44 44l32 0c24.3 0 44-19.7 44-44l0-48c0-24.3-19.7-44-44-44l-32 0c-24.3 0-44 19.7-44 44zm44-4l32 0c2.2 0 4 1.8 4 4l0 48c0 2.2-1.8 4-4 4l-32 0c-2.2 0-4-1.8-4-4l0-48c0-2.2 1.8-4 4-4z\"]\n};\nvar faMasksTheater = {\n  prefix: 'fas',\n  iconName: 'masks-theater',\n  icon: [576, 512, [127917, \"theater-masks\"], \"f630\", \"M-5 118L23.5 279.7c14 79.5 76.3 141.8 155.8 155.8l12.7 2.2c-16.5-28.6-27.1-60.7-30.6-94.5l-24.1 4.3c-9.7 1.7-18.8-5.8-16.9-15.5 4.8-24.7 19.1-46.6 39.7-60.9l0-74.6c-1.4 .8-3 1.3-4.7 1.6l-63 11.1c-8.7 1.5-17.3-4.4-15.9-13.1 3.1-19.6 18.4-36 39.1-39.7 17.2-3 33.9 3.5 44.6 15.8l0-22.7c0-22.5 6.9-52.4 32.3-73.4 26-21.5 67.7-43.9 124.9-54.2-30.5-16.3-86.3-32-163.8-18.4-80.3 14.2-128 50.1-150.1 76.1-9 10.5-10.8 24.9-8.4 38.5zM208 138.7l0 174.8c0 80.7 50.5 152.9 126.4 180.4L362.1 504c14.1 5.1 29.6 5.1 43.7 0L433.6 494C509.5 466.4 560 394.3 560 313.5l0-174.8c0-6.9-2.1-13.8-7-18.6-22.6-22.5-78.2-56-169-56s-146.4 33.6-169 56c-4.9 4.9-7 11.7-7 18.6zm66.1 187.1c-1.4-7 7-11 12.7-6.6 26.9 20.6 60.6 32.9 97.2 32.9s70.2-12.3 97.2-32.9c5.7-4.4 14.1-.4 12.7 6.6-10.1 51.4-55.5 90.3-109.9 90.3s-99.8-38.8-109.9-90.3zm.5-101.5C281.2 205.5 299 192 320 192s38.9 13.5 45.4 32.3c2.9 8.4-4.5 15.7-13.4 15.7l-64 0c-8.8 0-16.3-7.4-13.4-15.7zM480 240l-64 0c-8.8 0-16.3-7.4-13.4-15.7 6.5-18.8 24.4-32.3 45.4-32.3s38.9 13.5 45.4 32.3c2.9 8.4-4.5 15.7-13.4 15.7z\"]\n};\nvar faTheaterMasks = faMasksTheater;\nvar faCartPlus = {\n  prefix: 'fas',\n  iconName: 'cart-plus',\n  icon: [640, 512, [], \"f217\", \"M0 8C0-5.3 10.7-16 24-16l45.3 0c27.1 0 50.3 19.4 55.1 46l.4 2 412.7 0c20 0 35.1 18.2 31.4 37.9L537.8 235.8c-5.7 30.3-32.1 52.2-62.9 52.2l-303.6 0 5.1 28.3c2.1 11.4 12 19.7 23.6 19.7L456 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-255.9 0c-34.8 0-64.6-24.9-70.8-59.1L77.2 38.6c-.7-3.8-4-6.6-7.9-6.6L24 32C10.7 32 0 21.3 0 8zM160 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm224 0a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM336 78.4c-13.3 0-24 10.7-24 24l0 33.6-33.6 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l33.6 0 0 33.6c0 13.3 10.7 24 24 24s24-10.7 24-24l0-33.6 33.6 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-33.6 0 0-33.6c0-13.3-10.7-24-24-24z\"]\n};\nvar faHandsAslInterpreting = {\n  prefix: 'fas',\n  iconName: 'hands-asl-interpreting',\n  icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7L0 256c0 70.7 57.3 128 128 128l80 0 0-.3c35.2-2.7 65.4-22.8 82.1-51.7 8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20 8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5l-100.7 27.5 81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4l-101.9 84.9 23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2l0-9.3c0-70.7-57.3-128-128-128l-80 0 0 .3c-35.2 2.7-65.4 22.8-82.1 51.7-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20 22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.6-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nvar faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faAslInterpreting = faHandsAslInterpreting;\nvar faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faTableCellsRowUnlock = {\n  prefix: 'fas',\n  iconName: 'table-cells-row-unlock',\n  icon: [640, 512, [], \"e691\", \"M256 224l0 192 64 0 0-192-64 0zm256-79c-46.7 5.8-85.6 36.8-102.7 79l-25.3 0 0 90.8c-10.1 15.2-16 33.4-16 53.1l0 96c0 5.5 .5 10.9 1.3 16.1L128 480c-35.3 0-64-28.7-64-64L64 96c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 49zM128 224l0 192 64 0 0-192-64 0zm432 48c-.1-17.6-14.4-31.9-32-31.9-17.7 0-32 14.3-32 32l0 47.9 96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80 44.2 0 79.9 35.8 80 79.9l-48 0z\"]\n};\nvar faRocket = {\n  prefix: 'fas',\n  iconName: 'rocket',\n  icon: [512, 512, [], \"f135\", \"M128 320L24.5 320c-24.9 0-40.2-27.1-27.4-48.5L50 183.3C58.7 168.8 74.3 160 91.2 160l95 0c76.1-128.9 189.6-135.4 265.5-124.3 12.8 1.9 22.8 11.9 24.6 24.6 11.1 75.9 4.6 189.4-124.3 265.5l0 95c0 16.9-8.8 32.5-23.3 41.2l-88.2 52.9c-21.3 12.8-48.5-2.6-48.5-27.4L192 384c0-35.3-28.7-64-64-64l-.1 0zM400 160a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faShrimp = {\n  prefix: 'fas',\n  iconName: 'shrimp',\n  icon: [512, 512, [129424], \"e448\", \"M72 32C32.2 32 0 64.2 0 104 0 141.9 29.3 172.9 66.4 175.8 77.6 257.2 147.4 320 232 320l56 0 0-192-216 0c-13.3 0-24-10.7-24-24S58.7 80 72 80l384 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L72 32zM224 456c0 13.3 10.7 24 24 24l72 0 0-72.2-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3l0 69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111 0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6 0 4.6-.7 9-1.9 13.1L472.6 415zM336 128l-16 0 0 192 18.3 0c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTengeSign = {\n  prefix: 'fas',\n  iconName: 'tenge-sign',\n  icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 56C0 42.7 10.7 32 24 32l336 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 80C10.7 80 0 69.3 0 56zM0 160c0-17.7 14.3-32 32-32l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0 0 256c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-256-128 0c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTenge = faTengeSign;\nvar faHouseChimneyMedical = {\n  prefix: 'fas',\n  iconName: 'house-chimney-medical',\n  icon: [512, 512, [\"clinic-medical\"], \"f7f2\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-288 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208zM224 248l0 40-40 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l40 0 0 40c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-40 40 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-40 0 0-40c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nvar faClinicMedical = faHouseChimneyMedical;\nvar faUsersSlash = {\n  prefix: 'fas',\n  iconName: 'users-slash',\n  icon: [640, 512, [], \"e073\", \"M73-24.9c-9.4-9.4-24.6-9.4-33.9 0S29.7-.3 39 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L321.8 224c56.6-1 102.2-47.2 102.2-104 0-57.4-46.6-104-104-104-56.8 0-103 45.6-104 102.2L73-24.9zM512 288c-17.2 0-33.7 3.4-48.7 9.6l170 170c4.2-5.4 6.7-12.2 6.7-19.6l0-32c0-70.7-57.3-128-128-128zM59.9 97.7c-21.5 12.5-35.9 35.7-35.9 62.3 0 39.8 32.2 72 72 72 26.6 0 49.8-14.4 62.3-35.9L59.9 97.7zM250.2 288C196.8 313.9 160 368.7 160 432l0 16c0 17.7 14.3 32 32 32l250.2 0-192-192zM128 288C57.3 288 0 345.3 0 416l0 32c0 17.7 14.3 32 32 32l86.7 0c-4.3-9.8-6.7-20.6-6.7-32l0-16c0-53.2 20-101.8 52.9-138.6-11.7-3.5-24.1-5.4-36.9-5.4zM616 160a72 72 0 1 0 -144 0 72 72 0 1 0 144 0z\"]\n};\nvar faPaperPlane = {\n  prefix: 'fas',\n  iconName: 'paper-plane',\n  icon: [576, 512, [61913], \"f1d8\", \"M536.4-26.3c9.8-3.5 20.6-1 28 6.3s9.8 18.2 6.3 28l-178 496.9c-5 13.9-18.1 23.1-32.8 23.1-14.2 0-27-8.6-32.3-21.7l-64.2-158c-4.5-11-2.5-23.6 5.2-32.6l94.5-112.4c5.1-6.1 4.7-15-.9-20.6s-14.6-6-20.6-.9L229.2 276.1c-9.1 7.6-21.6 9.6-32.6 5.2L38.1 216.8c-13.1-5.3-21.7-18.1-21.7-32.3 0-14.7 9.2-27.8 23.1-32.8l496.9-178z\"]\n};\nvar faBookAtlas = {\n  prefix: 'fas',\n  iconName: 'book-atlas',\n  icon: [448, 512, [\"atlas\"], \"f558\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48L96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32zM310.6 208L279 208c-1.4 23.1-6 44.2-12.6 61.2 22.7-12.5 39.4-34.8 44.2-61.2zm-173.1 0c4.8 26.4 21.5 48.7 44.2 61.2-6.7-17-11.2-38-12.6-61.2l-31.6 0zm76.4 55c4.5 9.6 8.2 13.8 10.2 15.5 2-1.7 5.7-5.8 10.2-15.5 6.2-13.4 11.1-32.5 12.7-55l-45.8 0c1.6 22.5 6.5 41.6 12.7 55zm-12.7-87l45.8 0c-1.6-22.5-6.5-41.6-12.7-55-4.5-9.6-8.2-13.8-10.2-15.5-2 1.7-5.7 5.8-10.2 15.5-6.2 13.4-11.1 32.5-12.7 55zm109.5 0c-4.8-26.4-21.5-48.7-44.2-61.2 6.7 17 11.2 38 12.6 61.2l31.6 0zM169 176c1.4-23.1 6-44.2 12.6-61.2-22.7 12.5-39.4 34.8-44.2 61.2l31.6 0zM96 192a128 128 0 1 1 256 0 128 128 0 1 1 -256 0z\"]\n};\nvar faAtlas = faBookAtlas;\nvar faTable = {\n  prefix: 'fas',\n  iconName: 'table',\n  icon: [448, 512, [], \"f0ce\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64l-320 0-6.5-.3C25.2 476.4 0 449.1 0 416L0 96C0 60.7 28.7 32 64 32l320 0zM64 320l0 96 128 0 0-96-128 0zm192 0l0 96 128 0 0-96-128 0zM64 256l128 0 0-96-128 0 0 96zm192 0l128 0 0-96-128 0 0 96z\"]\n};\nvar faHeart = {\n  prefix: 'fas',\n  iconName: 'heart',\n  icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 112.2-139.9 242.5-212.9 298.2-12.4 9.4-27.6 14.1-43.1 14.1s-30.8-4.6-43.1-14.1C139.9 410.2 0 279.9 0 167.7l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1z\"]\n};\nvar faCircleChevronUp = {\n  prefix: 'fas',\n  iconName: 'circle-chevron-up',\n  icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nvar faChevronCircleUp = faCircleChevronUp;\nvar faBatteryHalf = {\n  prefix: 'fas',\n  iconName: 'battery-half',\n  icon: [640, 512, [\"battery-3\"], \"f242\", \"M528 128c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-416 0c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16l416 0zM112 64c-44.2 0-80 35.8-80 80l0 224c0 44.2 35.8 80 80 80l416 0c44.2 0 80-35.8 80-80l0-48c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80L112 64zm56 112c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l144 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-144 0z\"]\n};\nvar faBattery3 = faBatteryHalf;\nvar faFontAwesome = {\n  prefix: 'fas',\n  iconName: 'font-awesome',\n  icon: [512, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M91.7 96C106.3 86.8 116 70.5 116 52 116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 419 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4 0-3.7-.8-7.3-2.3-10.7L432 272 493.7 133.1c1.5-3.4 2.3-7 2.3-10.7 0-14.6-11.8-26.4-26.4-26.4L91.7 96z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faHandcuffs = {\n  prefix: 'fas',\n  iconName: 'handcuffs',\n  icon: [576, 512, [], \"e4f8\", \"M320-32c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zM192 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM152 96c-13.3 0-24 10.7-24 24l0 16c0 1 .1 1.9 .2 2.9-74.7 26.3-128.2 97.5-128.2 181.1 0 106 86 192 192 192s192-86 192-192c0-83.7-53.5-154.8-128.2-181.1 .1-.9 .2-1.9 .2-2.9l0-16c0-13.3-10.7-24-24-24l-80 0zM64 320a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zm448 0c0 66.9-51.3 121.8-116.6 127.5-14.3 22.8-32.4 43.1-53.4 59.9 13.5 3 27.6 4.6 42 4.6 106 0 192-86 192-192 0-83.7-53.5-154.8-128.2-181.1 .1-.9 .2-1.9 .2-2.9l0-16c0-13.3-10.7-24-24-24l-80 0c-12.3 0-22.4 9.2-23.8 21.1 30.3 19.2 56.1 45 75.2 75.4 65.4 5.8 116.6 60.6 116.6 127.5zM384 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHatCowboySide = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy-side',\n  icon: [640, 512, [], \"f8c1\", \"M640 388.3c0 16.9-7.1 32.2-18.4 43.1l-35-23.3-292.7-195.1c-36.1-24.1-78.6-36.9-122-36.9l-3.9 0c-2.7 0-5.4 0-8 .1l22.2-100c5.7-25.8 28.6-44.1 55-44.1 12.2 0 24.1 4 33.8 11.3l4.7 3.5c26.3 19.7 62.4 19.7 88.6 0l4.7-3.5c9.8-7.3 21.6-11.3 33.8-11.3 26.4 0 49.3 18.3 55 44.1l33 148.5C574.5 232.3 640 302.6 640 388.3zM171.9 224c33.9 0 67.1 10 95.4 28.9L560 448 56 448c-30.9 0-56-25.1-56-56 0-92.8 75.2-168 168-168l3.9 0z\"]\n};\nvar faIndustry = {\n  prefix: 'fas',\n  iconName: 'industry',\n  icon: [512, 512, [], \"f275\", \"M32 32C14.3 32 0 46.3 0 64L0 432c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-279.8c0-18.2-19.4-29.7-35.4-21.1l-156.6 84.3 0-63.2c0-18.2-19.4-29.7-35.4-21.1L128 215.4 128 64c0-17.7-14.3-32-32-32L32 32z\"]\n};\nvar faLinesLeaning = {\n  prefix: 'fas',\n  iconName: 'lines-leaning',\n  icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32z\"]\n};\nvar faPassport = {\n  prefix: 'fas',\n  iconName: 'passport',\n  icon: [384, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM96 408c0 13.3 10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0c-13.3 0-24 10.7-24 24zM278.6 208c-4.8 26.4-21.5 48.7-44.2 61.2 6.7-17 11.2-38 12.6-61.2l31.6 0zm-173.1 0l31.6 0c1.4 23.1 6 44.2 12.6 61.2-22.7-12.5-39.4-34.8-44.2-61.2zm76.4 55c-6.2-13.4-11.1-32.5-12.7-55l45.8 0c-1.6 22.5-6.5 41.6-12.7 55-4.5 9.6-8.2 13.8-10.2 15.5-2-1.7-5.7-5.8-10.2-15.5zm0-142c4.5-9.6 8.2-13.8 10.2-15.5 2 1.7 5.7 5.8 10.2 15.5 6.2 13.4 11.1 32.5 12.7 55l-45.8 0c1.6-22.5 6.5-41.6 12.7-55zm96.7 55L247 176c-1.4-23.1-6-44.2-12.6-61.2 22.7 12.5 39.4 34.8 44.2 61.2zM137 176l-31.6 0c4.8-26.4 21.5-48.7 44.2-61.2-6.7 17-11.2 38-12.6 61.2zm183 16a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faInfinity = {\n  prefix: 'fas',\n  iconName: 'infinity',\n  icon: [640, 512, [8734, 9854], \"f534\", \"M0 256c0-88.4 71.6-160 160-160 50.4 0 97.8 23.7 128 64l32 42.7 32-42.7c30.2-40.3 77.6-64 128-64 88.4 0 160 71.6 160 160S568.4 416 480 416c-50.4 0-97.8-23.7-128-64l-32-42.7-32 42.7c-30.2 40.3-77.6 64-128 64-88.4 0-160-71.6-160-160zm280 0l-43.2-57.6c-18.1-24.2-46.6-38.4-76.8-38.4-53 0-96 43-96 96s43 96 96 96c30.2 0 58.7-14.2 76.8-38.4L280 256zm80 0l43.2 57.6c18.1 24.2 46.6 38.4 76.8 38.4 53 0 96-43 96-96s-43-96-96-96c-30.2 0-58.7 14.2-76.8 38.4L360 256z\"]\n};\nvar faClone = {\n  prefix: 'fas',\n  iconName: 'clone',\n  icon: [512, 512, [], \"f24d\", \"M288 448l-224 0 0-224 48 0 0-64-48 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-48-64 0 0 48zm-64-96l224 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L224 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64z\"]\n};\nvar faForward = {\n  prefix: 'fas',\n  iconName: 'forward',\n  icon: [576, 512, [9193], \"f04e\", \"M371.7 43.1C360.1 32 343 28.9 328.3 35.2S304 56 304 72l0 136.3-172.3-165.1C120.1 32 103 28.9 88.3 35.2S64 56 64 72l0 368c0 16 9.6 30.5 24.3 36.8s31.8 3.2 43.4-7.9L304 303.7 304 440c0 16 9.6 30.5 24.3 36.8s31.8 3.2 43.4-7.9l192-184c7.9-7.5 12.3-18 12.3-28.9s-4.5-21.3-12.3-28.9l-192-184z\"]\n};\nvar faM = {\n  prefix: 'fas',\n  iconName: 'm',\n  icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.3c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64l0 384c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-278.3-133.4 200.1c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7 64 448c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nvar faRoadSpikes = {\n  prefix: 'fas',\n  iconName: 'road-spikes',\n  icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9l98.7 148 0-139.2c0-15.8 20.5-22 29.3-8.9l98.7 148 0-139.2c0-15.8 20.5-22 29.3-8.9l98.7 148 0-139.2c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.8-26.6 49.8L64 352 64 116.8zM32 384l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faMountain = {\n  prefix: 'fas',\n  iconName: 'mountain',\n  icon: [512, 512, [127956], \"f6fc\", \"M256.5 0c14.7 0 28.2 8.1 35.2 21l216 400c6.7 12.4 6.4 27.4-.8 39.5-7.2 12.1-20.3 19.5-34.3 19.5l-432 0c-14.1 0-27.1-7.4-34.3-19.5s-7.5-27.1-.8-39.5l216-400 2.9-4.6C231.7 6.2 243.6 0 256.5 0zM170.4 249.9l26.8 26.8c6.2 6.2 16.4 6.2 22.6 0l43.3-43.3c6-6 14.1-9.4 22.6-9.4l42.8 0-72.1-133.5-86.1 159.4z\"]\n};\nvar faChess = {\n  prefix: 'fas',\n  iconName: 'chess',\n  icon: [512, 512, [], \"f439\", \"M168 56l0 40-78.1 0c-14.3 0-25.9 11.6-25.9 25.9 0 4 .9 8 2.7 11.6l33.4 66.8c-11.4 1.8-20.2 11.7-20.2 23.7 0 13.3 10.7 24 24 24l5.6 0-13.6 136-56.2 70.3c-5 6.3-7.8 14.1-7.8 22.2 0 19.6 15.9 35.5 35.5 35.5l248.9 0c19.6 0 35.5-15.9 35.5-35.5 0-8.1-2.7-15.9-7.8-22.2L288 384 274.4 248 280 248c13.3 0 24-10.7 24-24 0-11.9-8.7-21.9-20.2-23.7l33.4-66.8c1.8-3.6 2.7-7.6 2.7-11.6 0-14.3-11.6-25.9-25.9-25.9l-78.1 0 0-40 16 0c13.3 0 24-10.7 24-24S245.3 8 232 8l-16 0 0-16c0-13.3-10.7-24-24-24S168-21.3 168-8l0 16-16 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0zM325.8 279.6l8.5 85.5 47.4 59.2 4.2 5.7c9.2 13.7 14.1 29.9 14.1 46.5 0 12.7-2.8 24.8-7.9 35.5l83.1 0c20.3 0 36.8-16.5 36.8-36.8 0-7.3-2.2-14.4-6.2-20.4l-25.8-38.7 0-64 13.3-13.3c12-12 18.7-28.3 18.7-45.3L512 192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 16-32 0 0-16c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32c0 22.4-10.2 42.4-26.2 55.6z\"]\n};\nvar faTemperatureThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'temperature-three-quarters',\n  icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 0C107 0 64 43 64 96l0 164.7C34.5 287 16 325.4 16 368 16 447.5 80.5 512 160 512s144-64.5 144-144c0-42.6-18.5-81-48-107.3L256 96c0-53-43-96-96-96zm64 368c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3L136 152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 156.7c23.5 9.5 40 32.5 40 59.3z\"]\n};\nvar faTemperature3 = faTemperatureThreeQuarters;\nvar faThermometer3 = faTemperatureThreeQuarters;\nvar faThermometerThreeQuarters = faTemperatureThreeQuarters;\nvar faB = {\n  prefix: 'fas',\n  iconName: 'b',\n  icon: [320, 512, [98], \"42\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32l160 0c70.7 0 128-57.3 128-128 0-46.5-24.8-87.3-62-109.7 18.7-22.3 30-51 30-82.3 0-70.7-57.3-128-128-128L32 32zM160 224l-96 0 0-128 96 0c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288l128 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-128 0 0-128z\"]\n};\nvar faShieldVirus = {\n  prefix: 'fas',\n  iconName: 'shield-virus',\n  icon: [512, 512, [], \"e06c\", \"M253.4 2.9C249.2 1 244.7 0 240 0s-9.2 1-13.4 2.9L38.3 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L253.4 2.9zM240 128c13.3 0 24 10.7 24 24 0 22.9 27.7 34.4 43.9 18.2 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-16.2 16.2-4.7 43.9 18.2 43.9 13.3 0 24 10.7 24 24s-10.7 24-24 24c-22.9 0-34.4 27.7-18.2 43.9 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-16.2-16.2-43.9-4.7-43.9 18.2 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-22.9-27.7-34.4-43.9-18.2-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c16.2-16.2 4.7-43.9-18.2-43.9-13.3 0-24-10.7-24-24s10.7-24 24-24c22.9 0 34.4-27.7 18.2-43.9-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c16.2 16.2 43.9 4.7 43.9-18.2 0-13.3 10.7-24 24-24zM208 264a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faLitecoinSign = {\n  prefix: 'fas',\n  iconName: 'litecoin-sign',\n  icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 157.9-38.6 11c-12.7 3.6-20.1 16.9-16.5 29.7s16.9 20.1 29.7 16.5L64 271.8 64 448c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-162.5 134.6-38.5c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5L128 203.6 128 64z\"]\n};\nvar faDiceD6 = {\n  prefix: 'fas',\n  iconName: 'dice-d6',\n  icon: [512, 512, [], \"f6d1\", \"M224.4 8.3C244-2.8 268-2.8 287.6 8.3l176 99.7c20 11.4 32.4 32.6 32.4 55.7l0 197.4c0 23-12.4 44.3-32.4 55.7l-176 99.7c-19.6 11.1-43.6 11.1-63.1 0l-176-99.7C28.4 405.5 16 384.2 16 361.2l0-197.4c0-23 12.4-44.3 32.4-55.7l176-99.7zM102.6 155.6c-8.8-3.1-18.8 .3-23.8 8.6s-3.2 18.7 3.6 25l3.2 2.4 150.2 90.2 0 148.7c0 11 9 20 20 20 11 0 20-9 20-20l0-148.7 150.3-90.2c9.5-5.7 12.6-18 6.9-27.4s-18-12.5-27.4-6.9l-149.7 89.8-149.7-89.8-3.7-1.7z\"]\n};\nvar faGripLinesVertical = {\n  prefix: 'fas',\n  iconName: 'grip-lines-vertical',\n  icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384z\"]\n};\nvar faGolfBallTee = {\n  prefix: 'fas',\n  iconName: 'golf-ball-tee',\n  icon: [384, 512, [\"golf-ball\"], \"f450\", \"M298.5 384.1c12.1 1.2 21.5 11.5 21.5 23.9s-9.4 22.6-21.5 23.9l-2.5 .1-80 0 0 88c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-88-80 0c-13.3 0-24-10.7-24-24 0-12.4 9.4-22.6 21.5-23.9l2.5-.1 208 0 2.5 .1zM192 0c106 0 192 86 192 192 0 57.4-25.2 108.8-65.1 144L65.1 336C25.2 300.8 0 249.4 0 192 0 86 86 0 192 0zm32 240c-7.7 0-14.2 5.5-15.7 12.8l-.6 6.4c-1.3 6.3-6.2 11.2-12.5 12.5l-6.4 .6c-7.3 1.5-12.8 8-12.8 15.7 0 8.8 7.2 16 16 16 26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm64-64c-7.7 0-14.2 5.5-15.7 12.8l-.6 6.4c-1.3 6.3-6.2 11.2-12.5 12.5l-6.4 .6c-7.3 1.5-12.8 8-12.8 15.7 0 8.8 7.2 16 16 16 26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-80-16c-7.7 0-14.2 5.5-15.7 12.8l-.6 6.4c-1.3 6.3-6.2 11.2-12.5 12.5l-6.4 .6c-7.3 1.5-12.8 8-12.8 15.7 0 8.8 7.2 16 16 16 26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16z\"]\n};\nvar faGolfBall = faGolfBallTee;\nvar faHexagon = {\n  prefix: 'fas',\n  iconName: 'hexagon',\n  icon: [576, 512, [11043], \"f312\", \"M33.5 220.3c-12.7 22.2-12.7 49.4 0 71.5l96.2 168.1c12.8 22.4 36.7 36.2 62.5 36.2l191.6 0c25.8 0 49.7-13.8 62.5-36.2l96.2-168.1c12.7-22.2 12.7-49.4 0-71.5L446.3 52.2C433.5 29.8 409.6 16 383.8 16L192.2 16c-25.8 0-49.7 13.8-62.5 36.2L33.5 220.3z\"]\n};\nvar faFolderOpen = {\n  prefix: 'fas',\n  iconName: 'folder-open',\n  icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M56 225.6L32.4 296.2 32.4 96c0-35.3 28.7-64 64-64l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4l117.3 0c35.3 0 64 28.7 64 64l0 16-365.4 0c-41.3 0-78 26.4-91.1 65.6zM477.8 448L99 448c-32.8 0-55.9-32.1-45.5-63.2l48-144C108 221.2 126.4 208 147 208l378.8 0c32.8 0 55.9 32.1 45.5 63.2l-48 144c-6.5 19.6-24.9 32.8-45.5 32.8z\"]\n};\nvar faKaaba = {\n  prefix: 'fas',\n  iconName: 'kaaba',\n  icon: [512, 512, [128331], \"f66b\", \"M256 51.3L92.8 112.4 247.5 171.1c5.5 2.1 11.5 2.1 17 0L419.2 112.4 256 51.3zM0 129.3c0-20 12.4-37.9 31.1-44.9l208-78c10.9-4.1 22.8-4.1 33.7 0l208 78c18.7 7 31.1 24.9 31.1 44.9l0 36-253.2 96c-1.8 .7-3.8 .7-5.7 0l-253.2-96 0-36zm0 140l0-52.7 236.1 89.6c12.8 4.9 26.9 4.9 39.7 0l236.1-89.6 0 52.7-128 48.6 0 51.3 128-48.6 0 62.2c0 20-12.4 37.9-31.1 44.9l-208 78c-10.9 4.1-22.8 4.1-33.7 0l-208-78C12.4 420.7 0 402.7 0 382.7l0-62.2 128 48.6 0-51.3-128-48.6zM236.1 410.1c12.8 4.9 26.9 4.9 39.7 0l60.1-22.8 0-51.3-77.2 29.3c-1.8 .7-3.8 .7-5.7 0l-77.2-29.3 0 51.3 60.1 22.8z\"]\n};\nvar faHandHolding = {\n  prefix: 'fas',\n  iconName: 'hand-holding',\n  icon: [576, 512, [], \"f4bd\", \"M66.7 384l42.5-42.5c24-24 56.6-37.5 90.5-37.5L352 304c17.7 0 32 14.3 32 32s-14.3 32-32 32l-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5s9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l34.7 0z\"]\n};\nvar faSingleQuoteRight = {\n  prefix: 'fas',\n  iconName: 'single-quote-right',\n  icon: [192, 512, [], \"e81c\", \"M64 416c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 136c0 66.3-53.7 120-120 120l-8 0z\"]\n};\nvar faBottleDroplet = {\n  prefix: 'fas',\n  iconName: 'bottle-droplet',\n  icon: [320, 512, [], \"e4c4\", \"M80 0c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 103.3c64.9 20.4 112 81 112 152.7l0 192c0 35.3-28.7 64-64 64L64 544c-35.3 0-64-28.7-64-64L0 288c0-71.6 47.1-132.3 112-152.7L112 32C94.3 32 80 17.7 80 0zm80 416c35.3 0 64-32.4 64-64 0-21.2-28.9-64.5-47.9-90.6-8.1-11.1-24.2-11.1-32.3 0-19 26.1-47.9 69.4-47.9 90.6 0 31.6 28.7 64 64 64z\"]\n};\nvar faWindowMinimize = {\n  prefix: 'fas',\n  iconName: 'window-minimize',\n  icon: [512, 512, [128469], \"f2d1\", \"M0 416c0-17.7 14.3-32 32-32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChevronRight = {\n  prefix: 'fas',\n  iconName: 'chevron-right',\n  icon: [320, 512, [9002], \"f054\", \"M311.1 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L243.2 256 73.9 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nvar faEgg = {\n  prefix: 'fas',\n  iconName: 'egg',\n  icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288 0 176 64 16 192 16S384 176 384 288c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2-11.2 31.6-16.9 65.1-16.9 93.5 0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8 10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nvar faLandmarkDome = {\n  prefix: 'fas',\n  iconName: 'landmark-dome',\n  icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M256 0c-17.7 0-32 14.3-32 32 0 .9 0 1.8 .1 2.6-80.5 13.4-144 76.9-157.5 157.4L64 192c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 160-51.2 38.4C4.7 460.4 0 469.9 0 480 0 497.7 14.3 512 32 512l448 0c17.7 0 32-14.3 32-32 0-10.1-4.7-19.6-12.8-25.6L448 416 448 256c17.7 0 32-14.3 32-32s-14.3-32-32-32l-2.7 0c-13.5-80.4-77-143.9-157.5-157.4 .1-.9 .1-1.7 .1-2.6 0-17.7-14.3-32-32-32zm80 256l64 0 0 160-64 0 0-160zM224 416l0-160 64 0 0 160-64 0zM112 256l64 0 0 160-64 0 0-160z\"]\n};\nvar faLandmarkAlt = faLandmarkDome;\nvar faWorm = {\n  prefix: 'fas',\n  iconName: 'worm',\n  icon: [448, 512, [], \"e599\", \"M224 96c0-53 43-96 96-96l38.4 0C407.9 0 448 40.1 448 89.6L448 376c0 75.1-60.9 136-136 136S176 451.1 176 376l0-80c0-22.1-17.9-40-40-40s-40 17.9-40 40l0 168c0 26.5-21.5 48-48 48S0 490.5 0 464L0 296c0-75.1 60.9-136 136-136s136 60.9 136 136l0 80c0 22.1 17.9 40 40 40s40-17.9 40-40l0-184-32 0c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faUserInjured = {\n  prefix: 'fas',\n  iconName: 'user-injured',\n  icon: [448, 512, [], \"f728\", \"M242.7 80L334 80c-10.7-24.6-29.5-44.9-52.9-57.6L242.7 80zm-.9-70.7C236 8.4 230 8 224 8 174.8 8 132.5 37.6 114 80l80.6 0 47.1-70.7zM224 248c66.3 0 120-53.7 120-120l-240 0c0 66.3 53.7 120 120 120zM98.7 341.8C49.3 370.2 16 423.5 16 484.6 16 499.7 28.3 512 43.4 512l151 0-95.8-170.2zm45.1-17.7l42.7 75.9 85.5 0c44.2 0 80 35.8 80 80 0 11.4-2.4 22.2-6.7 32l59.2 0c15.1 0 27.4-12.3 27.4-27.4 0-90.9-73.7-164.6-164.6-164.6l-86.9 0c-12.6 0-24.9 1.4-36.7 4.1zM213.5 448l36 64 22.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-58.5 0z\"]\n};\nvar faStrikethrough = {\n  prefix: 'fas',\n  iconName: 'strikethrough',\n  icon: [512, 512, [], \"f0cc\", \"M96 157.5C96 88.2 152.2 32 221.5 32L368 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L221.5 96c-34 0-61.5 27.5-61.5 61.5 0 31 23.1 57.2 53.9 61l44.1 5.5 222 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l83.1 0C103 204.6 96 181.8 96 157.5zM349.2 336l65.5 0c.9 6.1 1.4 12.2 1.4 18.5 0 69.3-56.2 125.5-125.5 125.5L144 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l146.5 0c34 0 61.5-27.5 61.5-61.5 0-6.4-1-12.7-2.8-18.5z\"]\n};\nvar faBlog = {\n  prefix: 'fas',\n  iconName: 'blog',\n  icon: [512, 512, [], \"f781\", \"M224 24c0-13.3 10.7-24 24-24 145.8 0 264 118.2 264 264 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-119.3-96.7-216-216-216-13.3 0-24-10.7-24-24zM80 96c26.5 0 48 21.5 48 48l0 224c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16 79.5 0 144 64.5 144 144S255.5 512 176 512 32 447.5 32 368l0-224c0-26.5 21.5-48 48-48zm168 0c92.8 0 168 75.2 168 168 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-66.3-53.7-120-120-120-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faStopwatch20 = {\n  prefix: 'fas',\n  iconName: 'stopwatch-20',\n  icon: [448, 512, [], \"e06f\", \"M168.5 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 25.3c-108 11.9-192 103.5-192 214.7 0 119.3 96.7 216 216 216s216-96.7 216-216c0-39.8-10.8-77.1-29.6-109.2l28.2-28.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-23.4 23.4c-32.9-30.2-75.2-50.3-122-55.5l0-25.3 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0zm-60 240c0-28.7 23.3-52 52-52s52 23.3 52 52l0 3.8c0 11.7-3.2 23.1-9.3 33l-43.8 71.2 33.1 0c11 0 20 9 20 20s-9 20-20 20l-57.8 0c-14.5 0-26.2-11.7-26.2-26.2 0-4.9 1.3-9.6 3.9-13.8l56.7-92.1c2.2-3.6 3.4-7.8 3.4-12.1l0-3.8c0-6.6-5.4-12-12-12s-12 5.4-12 12c0 11-9 20-20 20s-20-9-20-20zm180-52c28.7 0 52 23.3 52 52l0 96c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-96c0-28.7 23.3-52 52-52zm-12 52l0 96c0 6.6 5.4 12 12 12s12-5.4 12-12l0-96c0-6.6-5.4-12-12-12s-12 5.4-12 12z\"]\n};\nvar faTruckPickup = {\n  prefix: 'fas',\n  iconName: 'truck-pickup',\n  icon: [640, 512, [128763], \"f63c\", \"M363.8 96l57.6 96-133.4 0 0-96 75.8 0zM496 192L418.6 63.1C407.1 43.8 386.2 32 363.8 32L256 32c-17.7 0-32 14.3-32 32l0 128-144 0c-26.5 0-48 21.5-48 48l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32.4 0c-.2 2.6-.4 5.3-.4 8 0 48.6 39.4 88 88 88s88-39.4 88-88c0-2.7-.1-5.4-.4-8l160.7 0c-.2 2.6-.4 5.3-.4 8 0 48.6 39.4 88 88 88s88-39.4 88-88c0-2.7-.1-5.4-.4-8l32.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-80c0-26.5-21.5-48-48-48l-64 0zM112 392a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zm376-40a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faSeedling = {\n  prefix: 'fas',\n  iconName: 'seedling',\n  icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32C512 140.1 435.4 230.3 333.6 251.4 325.7 193.3 299.6 141 261.1 100.5 301.2 40 369.9 0 448 0l32 0c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64l32 0c123.7 0 224 100.3 224 224l0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160C100.3 320 0 219.7 0 96z\"]\n};\nvar faSprout = faSeedling;\nvar faTransgender = {\n  prefix: 'fas',\n  iconName: 'transgender',\n  icon: [576, 512, [9895, \"transgender-alt\"], \"f225\", \"M128-32c17.7 0 32 14.3 32 32s-14.3 32-32 32L97.9 32 136 70.1 151 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-15 15 14.2 14.2c27.9-23.8 64.2-38.2 103.8-38.2 36.7 0 70.6 12.4 97.6 33.2L466.7 32 448 32c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7-84.4 84.4c13 23.1 20.4 49.9 20.4 78.3 0 77.4-55 142-128 156.8l0 35.2 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-35.2c-73-14.8-128-79.4-128-156.8 0-31.4 9-60.7 24.7-85.4l-16.7-16.7-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l15-15-38.1-38.1 0 30.1c0 17.7-14.3 32-32 32S0 113.7 0 96L0 0C0-17.7 14.3-32 32-32l96 0zM288 336a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faTransgenderAlt = faTransgender;\nvar faStarHalf = {\n  prefix: 'fas',\n  iconName: 'star-half',\n  icon: [576, 512, [61731], \"f089\", \"M304.1 7.6c0-11.1-7.6-20.7-18.4-23.3s-21.9 2.5-27 12.4L193.1 125.3 33.2 150.7c-8.9 1.4-16.3 7.7-19.1 16.3s-.5 18 5.8 24.4l114.4 114.5-25.2 159.9c-1.4 8.9 2.3 17.9 9.6 23.2s16.9 6.1 25 2L291 416.1c8-4.1 13.1-12.4 13.1-21.4l0-387.1z\"]\n};\nvar faPhotoFilm = {\n  prefix: 'fas',\n  iconName: 'photo-film',\n  icon: [640, 512, [\"photo-video\"], \"f87c\", \"M192 64c0-35.3 28.7-64 64-64L576 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64l0-224zM320 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm156.5 11.5C472.1 100.4 464.4 96 456 96s-16.1 4.4-20.5 11.5l-54 88.3-17.9-25.6c-4.5-6.4-11.8-10.2-19.7-10.2s-15.2 3.8-19.7 10.2l-56 80c-5.1 7.3-5.8 16.9-1.6 24.8S279.1 288 288 288l256 0c8.7 0 16.7-4.7 20.9-12.3s4.1-16.8-.5-24.3l-88-144zM144 128l0 160c0 61.9 50.1 112 112 112l192 0 0 16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64l80 0zM52 196l0 24c0 8.8 7.2 16 16 16l24 0c8.8 0 16-7.2 16-16l0-24c0-8.8-7.2-16-16-16l-24 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 24c0 8.8 7.2 16 16 16l24 0c8.8 0 16-7.2 16-16l0-24c0-8.8-7.2-16-16-16l-24 0zm0 96c-8.8 0-16 7.2-16 16l0 24c0 8.8 7.2 16 16 16l24 0c8.8 0 16-7.2 16-16l0-24c0-8.8-7.2-16-16-16l-24 0z\"]\n};\nvar faPhotoVideo = faPhotoFilm;\nvar faPictureInPicture = {\n  prefix: 'fas',\n  iconName: 'picture-in-picture',\n  icon: [512, 512, [], \"e80b\", \"M448 32c35.3 0 64 28.7 64 64l0 112-64 0 0-112-384 0 0 320 144 0 0 64-144 0-6.5-.3c-30.1-3.1-54.1-27-57.1-57.1L0 416 0 96C0 62.9 25.2 35.6 57.5 32.3L64 32 448 32zm16 224c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48l-160 0c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48l160 0z\"]\n};\nvar faPumpMedical = {\n  prefix: 'fas',\n  iconName: 'pump-medical',\n  icon: [320, 512, [], \"e06a\", \"M96 0l0 80 128 0 0-24 72 0c13.3 0 24-10.7 24-24S309.3 8 296 8l-72 0 0-8c0-17.7-14.3-32-32-32l-64 0C110.3-32 96-17.7 96 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zm64 120c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n};\nvar faFire = {\n  prefix: 'fas',\n  iconName: 'fire',\n  icon: [448, 512, [128293], \"f06d\", \"M160.5-26.4c9.3-7.8 23-7.5 31.9 .9 12.3 11.6 23.3 24.4 33.9 37.4 13.5 16.5 29.7 38.3 45.3 64.2 5.2-6.8 10-12.8 14.2-17.9 1.1-1.3 2.2-2.7 3.3-4.1 7.9-9.8 17.7-22.1 30.8-22.1 13.4 0 22.8 11.9 30.8 22.1 1.3 1.7 2.6 3.3 3.9 4.8 10.3 12.4 24 30.3 37.7 52.4 27.2 43.9 55.6 106.4 55.6 176.6 0 123.7-100.3 224-224 224S0 411.7 0 288c0-91.1 41.1-170 80.5-225 19.9-27.7 39.7-49.9 54.6-65.1 8.2-8.4 16.5-16.7 25.5-24.2zM225.7 416c25.3 0 47.7-7 68.8-21 42.1-29.4 53.4-88.2 28.1-134.4-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5-17.3-22.1-49.1-62.4-65.3-83-5.4-6.9-15.2-8-21.5-1.9-18.3 17.8-51.5 56.8-51.5 104.3 0 68.6 50.6 109.2 113.7 109.2z\"]\n};\nvar faMagnifyingGlassPlus = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-plus',\n  icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM208 112c-13.3 0-24 10.7-24 24l0 48-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0 0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48 48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-48c0-13.3-10.7-24-24-24z\"]\n};\nvar faSearchPlus = faMagnifyingGlassPlus;\nvar faFlask = {\n  prefix: 'fas',\n  iconName: 'flask',\n  icon: [448, 512, [], \"f0c3\", \"M288 0L128 0C110.3 0 96 14.3 96 32s14.3 32 32 32L128 215.5 7.5 426.3C2.6 435 0 444.7 0 454.7 0 486.4 25.6 512 57.3 512l333.4 0c31.6 0 57.3-25.6 57.3-57.3 0-10-2.6-19.8-7.5-28.4L320 215.5 320 64c17.7 0 32-14.3 32-32S337.7 0 320 0L288 0zM192 215.5l0-151.5 64 0 0 151.5c0 11.1 2.9 22.1 8.4 31.8l41.6 72.7-164 0 41.6-72.7c5.5-9.7 8.4-20.6 8.4-31.8z\"]\n};\nvar faAlignRight = {\n  prefix: 'fas',\n  iconName: 'align-right',\n  icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faCableCar = {\n  prefix: 'fas',\n  iconName: 'cable-car',\n  icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 24a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64l136 0 0-96.2-193.4 55.3c-12.7 3.6-26-3.7-29.7-16.5s3.7-26 16.5-29.7l224-64 0 0 224-64c12.7-3.6 26 3.7 29.7 16.5s-3.7 26-16.5 29.7l-206.6 59 0 109.9 136 0c35.3 0 64 28.7 64 64l0 160c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-160zm80 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l56 0 0-96-56 0zm184 96l0-96-80 0 0 96 80 0zm48 0l56 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-56 0 0 96z\"]\n};\nvar faTram = faCableCar;\nvar faKitMedical = {\n  prefix: 'fas',\n  iconName: 'kit-medical',\n  icon: [512, 512, [\"first-aid\"], \"f479\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l16 0 0-384-16 0zm64 0l0 384 256 0 0-384-256 0zM448 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-16 0 0 384 16 0zM224 184c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n};\nvar faFirstAid = faKitMedical;\nvar faGripLines = {\n  prefix: 'fas',\n  iconName: 'grip-lines',\n  icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nvar faBurger = {\n  prefix: 'fas',\n  iconName: 'burger',\n  icon: [512, 512, [\"hamburger\"], \"f805\", \"M48 384c-8.8 0-16 7.2-16 16 0 44.2 35.8 80 80 80l288 0c44.2 0 80-35.8 80-80 0-8.8-7.2-16-16-16L48 384zM32 202c0 12.2 9.9 22 22 22L458 224c12.2 0 22-9.9 22-22 0-17.2-2.6-34.4-10.8-49.5-22.2-40.8-82.3-120.5-213.2-120.5S65 111.6 42.8 152.5C34.6 167.6 32 184.8 32 202zM0 304c0 17.7 14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 272c-17.7 0-32 14.3-32 32zM256 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM120 128a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm248-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faHamburger = faBurger;\nvar faSnowman = {\n  prefix: 'fas',\n  iconName: 'snowman',\n  icon: [640, 512, [9731, 9924], \"f7d0\", \"M403 211.7c32.2-24.9 53-63.9 53-107.7 0-75.1-60.9-136-136-136S184 28.9 184 104c0 43.9 20.8 82.9 53 107.7-32.2 16.3-59 41.8-76.8 73.1L112 264.2 112 224c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 19.6-22.5-9.7c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5c36.1 15.5 75.9 32.5 119.4 51.2-3.9 14.9-6 30.6-6 46.7 0 70 39.1 130.8 96.6 161.9 7.9 4.3 16.9 6.1 25.9 6.1l123 0c9 0 18-1.8 25.9-6.1 57.5-31.1 96.6-92 96.6-161.9 0-16.2-2.1-31.8-6-46.7 43.5-18.7 83.4-35.7 119.4-51.2 12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6l-22.5 9.7 0-19.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40.2-48.2 20.6c-17.9-31.3-44.6-56.8-76.8-73.1zM296 416a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm24-120a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM292.2 159.3c-2.7-4.8-4.2-10.2-4.2-15.7 0-17.5 14.2-31.6 31.6-31.6l.8 0c17.5 0 31.6 14.2 31.6 31.6 0 5.5-1.4 10.9-4.2 15.7L327 195.8c-3.1 5.4-10.8 5.4-13.9 0l-20.9-36.6z\"]\n};\nvar faHotel = {\n  prefix: 'fas',\n  iconName: 'hotel',\n  icon: [512, 512, [127976], \"f594\", \"M16 24C16 10.7 26.7 0 40 0L472 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 416 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L40 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-416-8 0C26.7 48 16 37.3 16 24zm208 88l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM128 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm96 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM352 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM112 208l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm240-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM288 384l43.8 0c9.9 0 17.5-9 14-18.2-13.8-36.1-48.8-61.8-89.7-61.8s-75.9 25.7-89.7 61.8c-3.5 9.2 4.1 18.2 14 18.2l43.8 0 0 80 64 0 0-80z\"]\n};\nvar faPrint = {\n  prefix: 'fas',\n  iconName: 'print',\n  icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M64 64C64 28.7 92.7 0 128 0L341.5 0c17 0 33.3 6.7 45.3 18.7l42.5 42.5c12 12 18.7 28.3 18.7 45.3l0 37.5-384 0 0-80zM0 256c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 96c0 17.7-14.3 32-32 32l-32 0 0 64c0 35.3-28.7 64-64 64l-256 0c-35.3 0-64-28.7-64-64l0-64-32 0c-17.7 0-32-14.3-32-32l0-96zM128 416l0 32 256 0 0-96-256 0 0 64zM456 272a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faVolleyball = {\n  prefix: 'fas',\n  iconName: 'volleyball',\n  icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M512 258.9c-23.4 8-47.8 13.1-72.6 15.1 5.9-98.6-30.7-191.1-94.9-258.3 97.8 36 167.5 130 167.5 240.3 0 1 0 1.9 0 2.9zm-5.9 52c-5.2 23.7-13.6 46.2-24.9 66.9-94.7 52.2-214 50-308.4-13.6 21.7-31.3 49.8-58.9 83.8-80.5 79.5 41.6 168.5 49.1 249.5 27.1zM279.7 241.6c-3.7-89.7-41.7-170.5-101.3-229.7 22.3-7.1 46-11.2 70.5-11.9 92.5 55.9 150.3 160.3 142.4 273.8-38-3.2-75.9-13.7-111.6-32.3zM130.5 32.8C149.1 49.1 165.8 67.7 179.9 88.2 91.5 132.3 29.7 210.3 3.7 299.5 1.3 285.3 0 270.8 0 256 0 160.2 52.6 76.7 130.5 32.8zm73.4 97c16.3 34.5 26.1 72.6 27.9 112.8-75.8 48-126.8 121.3-148.3 202.5-17.6-16.1-33-34.6-45.5-55 2.1-108.1 63.7-210.4 165.9-260.3zM256 512c-47.7 0-92.3-13-130.5-35.7 4.8-24.3 12.6-48 23.2-70.4 82.4 54.4 180.8 68.9 271 47-44.4 37-101.5 59.2-163.7 59.2z\"]\n};\nvar faVolleyballBall = faVolleyball;\nvar faTrafficLight = {\n  prefix: 'fas',\n  iconName: 'traffic-light',\n  icon: [320, 512, [128678], \"f637\", \"M64-32C28.7-32 0-3.3 0 32L0 384c0 88.4 71.6 160 160 160s160-71.6 160-160l0-352c0-35.3-28.7-64-64-64L64-32zm96 392c30.9 0 56 25.1 56 56s-25.1 56-56 56-56-25.1-56-56 25.1-56 56-56zm56-104a56 56 0 1 1 -112 0 56 56 0 1 1 112 0zM160 152a56 56 0 1 1 0-112 56 56 0 1 1 0 112z\"]\n};\nvar faPlaneCircleCheck = {\n  prefix: 'fas',\n  iconName: 'plane-circle-check',\n  icon: [640, 512, [], \"e555\", \"M232 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 78 71.5c-69.3 29-118 97.4-118 177.2 0 49.3 18.6 94.3 49.1 128.3L288 512 179.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C58.7 396.4 48 388.7 48 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L232 151.3 232 24zM352 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n};\nvar faUsers = {\n  prefix: 'fas',\n  iconName: 'users',\n  icon: [640, 512, [], \"f0c0\", \"M320 16a104 104 0 1 1 0 208 104 104 0 1 1 0-208zM96 88a72 72 0 1 1 0 144 72 72 0 1 1 0-144zM0 416c0-70.7 57.3-128 128-128 12.8 0 25.2 1.9 36.9 5.4-32.9 36.8-52.9 85.4-52.9 138.6l0 16c0 11.4 2.4 22.2 6.7 32L32 480c-17.7 0-32-14.3-32-32l0-32zm521.3 64c4.3-9.8 6.7-20.6 6.7-32l0-16c0-53.2-20-101.8-52.9-138.6 11.7-3.5 24.1-5.4 36.9-5.4 70.7 0 128 57.3 128 128l0 32c0 17.7-14.3 32-32 32l-86.7 0zM472 160a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zM160 432c0-88.4 71.6-160 160-160s160 71.6 160 160l0 16c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-16z\"]\n};\nvar faCertificate = {\n  prefix: 'fas',\n  iconName: 'certificate',\n  icon: [576, 512, [], \"f0a3\", \"M239.2-8c-6.1-6.2-15-8.7-23.4-6.4S200.9-5.6 198.8 2.8L183.5 63c-1.1 4.4-5.6 7-9.9 5.7L113.8 51.9c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l16.9 59.8c1.2 4.3-1.4 8.8-5.7 9.9L35.1 166.5c-8.4 2.1-15 8.7-17.3 17.1s.2 17.3 6.4 23.4l44.5 43.3c3.2 3.1 3.2 8.3 0 11.5L24.3 305.1c-6.2 6.1-8.7 15-6.4 23.4s8.9 14.9 17.3 17.1l60.2 15.3c4.4 1.1 7 5.6 5.7 9.9L84.2 430.5c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l59.8-16.9c4.3-1.2 8.8 1.4 9.9 5.7l15.3 60.2c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l43.3-44.5c3.1-3.2 8.3-3.2 11.5 0L337.3 520c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3L393.1 449c1.1-4.4 5.6-7 9.9-5.7l59.8 16.9c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-16.9-59.8c-1.2-4.3 1.4-8.8 5.7-9.9l60.2-15.3c8.4-2.1 15-8.7 17.3-17.1s-.2-17.4-6.4-23.4l-44.5-43.3c-3.2-3.1-3.2-8.3 0-11.5l44.5-43.3c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-60.2-15.3c-4.4-1.1-7-5.6-5.7-9.9l16.9-59.8c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1L403 68.8c-4.3 1.2-8.8-1.4-9.9-5.7L377.8 2.8c-2.1-8.4-8.7-15-17.1-17.3s-17.3 .2-23.4 6.4L294 36.5c-3.1 3.2-8.3 3.2-11.5 0L239.2-8z\"]\n};\nvar faAlarmClock = {\n  prefix: 'fas',\n  iconName: 'alarm-clock',\n  icon: [512, 512, [9200], \"f34e\", \"M504.4 132.5c-4.5 10.5-18.4 9.8-24.9 .4-27.8-40-66.1-72.2-111-92.6-10.4-4.7-13.7-18.3-4.1-24.6 15-9.9 33-15.7 52.3-15.7 52.6 0 95.2 42.6 95.2 95.2 0 13.2-2.7 25.8-7.6 37.3zm-471.9 .4c-6.5 9.4-20.5 10.1-24.9-.4-4.9-11.5-7.6-24.1-7.6-37.3 0-52.6 42.6-95.2 95.2-95.2 19.3 0 37.3 5.8 52.3 15.7 9.6 6.3 6.3 19.9-4.1 24.6-44.8 20.4-83.1 52.6-111 92.6zM390.2 467.4C352.8 495.4 306.3 512 256 512s-96.8-16.6-134.1-44.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l35.2-35.2C48.6 384.8 32 338.3 32 288 32 164.3 132.3 64 256 64S480 164.3 480 288c0 50.3-16.6 96.8-44.6 134.2l35.2 35.2c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-35.2-35.2zM280 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l56 56c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-49-49 0-94.1z\"]\n};\nvar faHelicopterSymbol = {\n  prefix: 'fas',\n  iconName: 'helicopter-symbol',\n  icon: [512, 512, [], \"e502\", \"M445.4 224l64.7 0C495.6 108.2 403.8 16.4 288 2l0 64.7C368.4 80.1 431.9 143.6 445.4 224zM510 288l-64.7 0C431.9 368.4 368.4 431.9 288 445.3l0 64.7c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510l0-64.7C143.6 431.9 80.2 368.4 66.7 288L2 288zm0-64l64.7 0C80.2 143.6 143.6 80.1 224 66.7L224 2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 96 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-96 0 0-64z\"]\n};\nvar faHouseChimneyCrack = {\n  prefix: 'fas',\n  iconName: 'house-chimney-crack',\n  icon: [512, 512, [\"house-damage\"], \"f6f1\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-105.6 0-38.4-64 80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L218.6 263.2c-14.6-11.5-33.8 7-22.8 22L256 368 170.5 439.2c-6.1 5-7.5 13.8-3.5 20.5l31.3 52.2-86.4 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208z\"]\n};\nvar faHouseDamage = faHouseChimneyCrack;\nvar faPersonMilitaryPointing = {\n  prefix: 'fas',\n  iconName: 'person-military-pointing',\n  icon: [512, 512, [], \"e54a\", \"M214.9 14.1C202 15.2 192 26 192 39 192 52.8 203.2 64 217 64l151 0c8.8 0 16-7.2 16-16l0-30.6C384 8 376 .7 366.7 1.4L214.9 14.1zM208 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16L209.6 96c-1 5.2-1.6 10.5-1.6 16zM40 224c-22.1 0-40 17.9-40 40s17.9 40 40 40l152 0 0 89.4 162.8-162.8c-13.3-4.3-27.3-6.5-41.6-6.5L40 224zm345.7 20.9l-171.1 171.1 169.4 0 0-46.3 53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L430.3 290.8c-11.2-19-26.6-34.5-44.6-45.9zM192 448l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32-192 0z\"]\n};\nvar faDatabase = {\n  prefix: 'fas',\n  iconName: 'database',\n  icon: [448, 512, [], \"f1c0\", \"M448 205.8c-14.8 9.8-31.8 17.7-49.5 24-47 16.8-108.7 26.2-174.5 26.2S96.4 246.5 49.5 229.8c-17.6-6.3-34.7-14.2-49.5-24L0 288c0 44.2 100.3 80 224 80s224-35.8 224-80l0-82.2zm0-77.8l0-48C448 35.8 347.7 0 224 0S0 35.8 0 80l0 48c0 44.2 100.3 80 224 80s224-35.8 224-80zM398.5 389.8C351.6 406.5 289.9 416 224 416S96.4 406.5 49.5 389.8c-17.6-6.3-34.7-14.2-49.5-24L0 432c0 44.2 100.3 80 224 80s224-35.8 224-80l0-66.2c-14.8 9.8-31.8 17.7-49.5 24z\"]\n};\nvar faNewspaper = {\n  prefix: 'fas',\n  iconName: 'newspaper',\n  icon: [512, 512, [128240], \"f1ea\", \"M0 416L0 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 288c0 13.3 10.7 24 24 24s24-10.7 24-24L96 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64zM160 128l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zm24 240c-13.3 0-24 10.7-24 24s10.7 24 24 24l240 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-240 0zm-24-72c0 13.3 10.7 24 24 24l240 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-240 0c-13.3 0-24 10.7-24 24zM360 176c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0z\"]\n};\nvar faCloudRain = {\n  prefix: 'fas',\n  iconName: 'cloud-rain',\n  icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96 0-42.5 27.6-78.6 65.9-91.2-1.3-6.7-1.9-13.7-1.9-20.8 0-61.9 50.1-112 112-112 43.1 0 80.5 24.3 99.2 60 14.7-17.1 36.5-28 60.8-28 44.2 0 80 35.8 80 80 0 5.5-.6 10.8-1.6 16 .5 0 1.1 0 1.6 0 53 0 96 43 96 96s-43 96-96 96L96 320zm1.6 68.2c1.1-2.5 3.6-4.2 6.4-4.2s5.3 1.6 6.4 4.2l30.2 68.2c2.2 5.1 3.4 10.5 3.4 16 0 21.9-18.1 39.6-40 39.6s-40-17.7-40-39.6c0-5.5 1.2-11 3.4-16l30.2-68.2zm152 0c1.1-2.5 3.6-4.2 6.4-4.2s5.3 1.6 6.4 4.2l30.2 68.2c2.2 5.1 3.4 10.5 3.4 16 0 21.9-18.1 39.6-40 39.6s-40-17.7-40-39.6c0-5.5 1.2-11 3.4-16l30.2-68.2zm121.8 68.2l30.2-68.2c1.1-2.5 3.6-4.2 6.4-4.2s5.3 1.6 6.4 4.2l30.2 68.2c2.2 5.1 3.4 10.5 3.4 16 0 21.9-18.1 39.6-40 39.6s-40-17.7-40-39.6c0-5.5 1.2-11 3.4-16z\"]\n};\nvar faMaximize = {\n  prefix: 'fas',\n  iconName: 'maximize',\n  icon: [448, 512, [\"expand-arrows-alt\"], \"f31e\", \"M168 32L24 32C10.7 32 0 42.7 0 56L0 200c0 9.7 5.8 18.5 14.8 22.2S34.1 223.8 41 217l40-40 79 79-79 79-40-40c-6.9-6.9-17.2-8.9-26.2-5.2S0 302.3 0 312L0 456c0 13.3 10.7 24 24 24l144 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2S270.3 480 280 480l144 0c13.3 0 24-10.7 24-24l0-144c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2S448 209.7 448 200l0-144c0-13.3-10.7-24-24-24L280 32c-9.7 0-18.5 5.8-22.2 14.8S256.2 66.1 263 73l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S177.7 32 168 32z\"]\n};\nvar faExpandArrowsAlt = faMaximize;\nvar faLocationArrow = {\n  prefix: 'fas',\n  iconName: 'location-arrow',\n  icon: [512, 512, [], \"f124\", \"M477.9 75.5c4.5-11.8 1.7-25.2-7.2-34.1s-22.3-11.8-34.1-7.2l-416 160C7.9 199-.3 211.2 0 224.7s9.1 25.4 21.9 29.6l176.8 58.9 58.9 176.8c4.3 12.8 16.1 21.6 29.6 21.9s25.7-7.9 30.6-20.5l160-416z\"]\n};\nvar faCity = {\n  prefix: 'fas',\n  iconName: 'city',\n  icon: [576, 512, [127961], \"f64f\", \"M320 0c-35.3 0-64 28.7-64 64l0 32-48 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-72C96 10.7 85.3 0 72 0S48 10.7 48 24l0 74c-27.6 7.1-48 32.2-48 62L0 448c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-64 0 0-128c0-35.3-28.7-64-64-64L320 0zm64 112l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zm-16 80c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zm16 112l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zm112-16c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 304l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM240 192c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM128 304l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM112 192c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0z\"]\n};\nvar faXRay = {\n  prefix: 'fas',\n  iconName: 'x-ray',\n  icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 320c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 96C14.3 96 0 81.7 0 64zm280 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 48-80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0 0 48-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-48 80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0 0-48 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-16z\"]\n};\nvar faUmbrellaBeach = {\n  prefix: 'fas',\n  iconName: 'umbrella-beach',\n  icon: [512, 512, [127958], \"f5ca\", \"M497.5 341.1c-5.9 16.7-25.3 23-41.1 15.1l-178.2-89.1-1.6 3.2-88.8 177.7 292.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l84.2 0 103.2-206.3 1.6-3.2-165.4-82.7c-15.8-7.9-22.4-27.3-12.5-42 45.9-68.6 124.1-113.8 212.9-113.8 141.4 0 256 114.6 256 256 0 29.8-5.1 58.5-14.5 85.1z\"]\n};\nvar faArrowRightToBracket = {\n  prefix: 'fas',\n  iconName: 'arrow-right-to-bracket',\n  icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignIn = faArrowRightToBracket;\nvar faHeadset = {\n  prefix: 'fas',\n  iconName: 'headset',\n  icon: [448, 512, [], \"f590\", \"M224 64c-79 0-144.7 57.3-157.7 132.7 9.3-3 19.3-4.7 29.7-4.7l16 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-16 0c-53 0-96-43-96-96l0-64C0 100.3 100.3 0 224 0S448 100.3 448 224l0 168.1c0 66.3-53.8 120-120.1 120l-87.9-.1-32 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 0 40 0c39.8 0 72-32.2 72-72l0-20.9c-14.1 8.2-30.5 12.8-48 12.8l-16 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48l16 0c10.4 0 20.3 1.6 29.7 4.7-13-75.3-78.6-132.7-157.7-132.7z\"]\n};\nvar faSplotch = {\n  prefix: 'fas',\n  iconName: 'splotch',\n  icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0 316.5 0 341.6 18.7 349.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2 0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6-14.8 0-29.3-5.1-40.9-14.3l-55.3-44.3c-4.5-3.6-9.3-6.7-14.5-9.2-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9c-34.6 6.3-66.4-20.3-66.4-55.4 0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1 0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9 0 110.5 30.1 85.1 63 90.7l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nvar faUpLong = {\n  prefix: 'fas',\n  iconName: 'up-long',\n  icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M137.4-22.6c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9S300.9 160 288 160l-64 0 0 336c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-336-64 0c-12.9 0-24.6-7.8-29.6-19.8S.2 114.5 9.4 105.4l128-128z\"]\n};\nvar faLongArrowAltUp = faUpLong;\nvar faHexagonNodes = {\n  prefix: 'fas',\n  iconName: 'hexagon-nodes',\n  icon: [448, 512, [], \"e699\", \"M248 106.6c18.9-9 32-28.3 32-50.6c0-30.9-25.1-56-56-56s-56 25.1-56 56c0 22.3 13.1 41.6 32 50.6l0 98.8c-2.8 1.3-5.5 2.9-8 4.7l-80.1-45.8c1.6-20.8-8.6-41.6-27.9-52.8C57.2 96 23 105.2 7.5 132S1.2 193 28 208.5c1.3 .8 2.6 1.5 4 2.1l0 90.8c-1.3 .6-2.7 1.3-4 2.1C1.2 319-8 353.2 7.5 380S57.2 416 84 400.5c19.3-11.1 29.4-32 27.8-52.8l50.5-28.9c-11.5-11.2-19.9-25.6-23.8-41.7L88 306.1c-2.6-1.8-5.2-3.3-8-4.7l0-90.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-.1 1.4-.2 2.8-.2 4.3c0 22.3 13.1 41.6 32 50.6l0 98.8c-18.9 9-32 28.3-32 50.6c0 30.9 25.1 56 56 56s56-25.1 56-56c0-22.3-13.1-41.6-32-50.6l0-98.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-1.6 20.8 8.6 41.6 27.8 52.8c26.8 15.5 61 6.3 76.5-20.5s6.3-61-20.5-76.5c-1.3-.8-2.7-1.5-4-2.1l0-90.8c1.4-.6 2.7-1.3 4-2.1c26.8-15.5 36-49.7 20.5-76.5S390.8 96 364 111.5c-19.3 11.1-29.4 32-27.8 52.8l-50.6 28.9c11.5 11.2 19.9 25.6 23.8 41.7L360 205.9c2.6 1.8 5.2 3.3 8 4.7l0 90.8c-2.8 1.3-5.5 2.9-8 4.6l-80.1-45.8c.1-1.4 .2-2.8 .2-4.3c0-22.3-13.1-41.6-32-50.6l0-98.8z\"]\n};\nvar faHospital = {\n  prefix: 'fas',\n  iconName: 'hospital',\n  icon: [576, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M128 64c0-35.3 28.7-64 64-64L384 0c35.3 0 64 28.7 64 64l0 64 64 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64l64 0 0-64zM272 352c-17.7 0-32 14.3-32 32l0 80 96 0 0-80c0-17.7-14.3-32-32-32l-32 0zM128 368l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM112 256c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zM512 368l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 256c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zM264 104l0 32-32 0c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l32 0 0 32c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-32 32 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-32 0 0-32c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faPersonHarassing = {\n  prefix: 'fas',\n  iconName: 'person-harassing',\n  icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9 88 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7 47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344l0 58.7-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l28.1-56.3 54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3 36.4 0 65.9-29.5 65.9-65.9L576 344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16l56 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-56 0c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nvar faMoneyBillTrendUp = {\n  prefix: 'fas',\n  iconName: 'money-bill-trend-up',\n  icon: [512, 512, [], \"e529\", \"M480 8c0-13.3-10.7-24-24-24L354.2-16c-13.3 0-24 10.7-24 24s10.7 24 24 24l43.9 0-111.3 111.3-95.1-81.5c-9-7.7-22.2-7.7-31.2 0l-112 96c-10.1 8.6-11.2 23.8-2.6 33.8s23.8 11.2 33.8 2.6l96.4-82.6 96.4 82.6c9.5 8.2 23.7 7.6 32.6-1.3l127-127 0 43.9c0 13.3 10.7 24 24 24s24-10.7 24-24L480 8zM48 256c-26.5 0-48 21.5-48 48L0 464c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48L48 256zm47.3 56c-3.4 20.1-19.2 36-39.4 39.4-4.4 .7-8-2.9-8-7.3l0-32c0-4.4 3.6-8 8-8l32 0c4.4 0 8.1 3.6 7.3 8zm0 144.1c.7 4.4-2.9 8-7.3 8l-32 0c-4.4 0-8-3.6-8-8l0-32c0-4.4 3.6-8.1 8-7.3 20.1 3.4 36 19.2 39.4 39.4zM456 416.7c4.4-.7 8 2.9 8 7.3l0 32c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8.1-3.6-7.3-8 3.4-20.1 19.2-36 39.4-39.4zM416.7 312c-.7-4.4 2.9-8 7.3-8l32 0c4.4 0 8 3.6 8 8l0 32c0 4.4-3.6 8.1-8 7.3-20.1-3.4-36-19.2-39.4-39.4zM192 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faPenRuler = {\n  prefix: 'fas',\n  iconName: 'pen-ruler',\n  icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M404 0c19.2 0 37.6 7.6 51.1 21.2l35.7 35.7C504.4 70.4 512 88.8 512 108s-7.6 37.6-21.2 51.1L445.9 204 308 66.1 352.9 21.2C366.4 7.6 384.8 0 404 0zM58.9 315.1L274.1 100 412 237.9 196.9 453.1c-10.7 10.7-24.1 18.5-38.7 22.6L30.4 511.1c-8.3 2.3-17.3 0-23.4-6.2s-8.5-15.1-6.2-23.4L36.4 353.8c4.1-14.6 11.8-27.9 22.6-38.7zM225.4 80.8L80.8 225.4 11.7 156.3c-15.6-15.6-15.6-40.9 0-56.6l88-88c15.6-15.6 40.9-15.6 56.6 0l5.9 5.9-56.3 56.3c-7.8 7.8-7.8 20.5 0 28.3s20.5 7.8 28.3 0l56.3-56.3 34.9 34.9zM431.2 286.6l34.9 34.9-56.3 56.3c-7.8 7.8-7.8 20.5 0 28.3s20.5 7.8 28.3 0l56.3-56.3 5.9 5.9c15.6 15.6 15.6 40.9 0 56.6l-88 88c-15.6 15.6-40.9 15.6-56.6 0l-69.1-69.1 144.6-144.6z\"]\n};\nvar faPencilRuler = faPenRuler;\nvar faRepeat = {\n  prefix: 'fas',\n  iconName: 'repeat',\n  icon: [512, 512, [128257], \"f363\", \"M470.6 118.6c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S352 19.1 352 32l0 32-160 0C86 64 0 150 0 256 0 273.7 14.3 288 32 288s32-14.3 32-32c0-70.7 57.3-128 128-128l160 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64zM41.4 393.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9S160 492.9 160 480l0-32 160 0c106 0 192-86 192-192 0-17.7-14.3-32-32-32s-32 14.3-32 32c0 70.7-57.3 128-128 128l-160 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nvar faBone = {\n  prefix: 'fas',\n  iconName: 'bone',\n  icon: [640, 512, [129460], \"f5d7\", \"M197.4 160c-3.9 0-7.2-2.8-8.1-6.6-10.2-42.1-48.1-73.4-93.3-73.4-53 0-96 43-96 96 0 29.1 12.9 55.1 33.3 72.7 4.3 3.7 4.3 10.8 0 14.5-20.4 17.6-33.3 43.7-33.3 72.7 0 53 43 96 96 96 45.2 0 83.1-31.3 93.3-73.4 .9-3.8 4.2-6.6 8.1-6.6l245.1 0c3.9 0 7.2 2.8 8.1 6.6 10.2 42.1 48.1 73.4 93.3 73.4 53 0 96-43 96-96 0-29.1-12.9-55.1-33.3-72.7-4.3-3.7-4.3-10.8 0-14.5 20.4-17.6 33.3-43.7 33.3-72.7 0-53-43-96-96-96-45.2 0-83.1 31.3-93.3 73.4-.9 3.8-4.2 6.6-8.1 6.6l-245.1 0z\"]\n};\nvar faFireFlameCurved = {\n  prefix: 'fas',\n  iconName: 'fire-flame-curved',\n  icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0 198.4 0 208 9.6 208 21.3l0 22.1c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7 384 434 306 512 209.7 512L192 512C86 512 0 426 0 320l0-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6 12.5 0 22.6 10.1 22.6 22.6L96 288c0 35.3 28.7 64 64 64s64-28.7 64-64l0-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7 0-27.7 9-54.8 25.6-76.9z\"]\n};\nvar faFireAlt = faFireFlameCurved;\nvar faBusSimple = {\n  prefix: 'fas',\n  iconName: 'bus-simple',\n  icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M96 0C43 0 0 43 0 96L0 384c0 29.8 20.4 54.9 48 62l0 34c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 192 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-34c27.6-7.1 48-32.2 48-62l0-288c0-53-43-96-96-96L96 0zM64 128c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L96 256c-17.7 0-32-14.3-32-32l0-96zM96 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm256 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBusAlt = faBusSimple;\nvar faVenusMars = {\n  prefix: 'fas',\n  iconName: 'venus-mars',\n  icon: [640, 512, [9892], \"f228\", \"M480-64c-17.7 0-32 14.3-32 32S462.3 0 480 0L530.7 0 474 56.7c-26.3-15.7-57.1-24.7-90-24.7-35.4 0-68.4 10.5-96 28.5-27.6-18-60.6-28.5-96-28.5-97.2 0-176 78.8-176 176 0 86.3 62.1 158.1 144 173.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9c23.3-4.3 44.9-13.1 64-25.6 27.6 18 60.6 28.5 96 28.5 97.2 0 176-78.8 176-176 0-41.1-14.1-79-37.8-109L576 45.3 576 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L480-64zM336 309.2c20.2-28.6 32-63.5 32-101.2s-11.8-72.6-32-101.2c14.6-6.9 30.8-10.8 48-10.8 61.9 0 112 50.1 112 112S445.9 320 384 320c-17.2 0-33.5-3.9-48-10.8zM288 150.3c10.2 16.9 16 36.6 16 57.7s-5.8 40.9-16 57.7c-10.2-16.9-16-36.6-16-57.7s5.8-40.9 16-57.7zm-48-43.5c-20.2 28.6-32 63.5-32 101.2s11.8 72.6 32 101.2c-14.5 6.9-30.8 10.8-48 10.8-61.9 0-112-50.1-112-112S130.1 96 192 96c17.2 0 33.5 3.9 48 10.8z\"]\n};\nvar faBlender = {\n  prefix: 'fas',\n  iconName: 'blender',\n  icon: [512, 512, [], \"f517\", \"M0 56C0 25.1 25.1 0 56 0L437.6 0c21.3 0 36.6 20.3 30.8 40.8L457.1 80 344 80c-13.3 0-24 10.7-24 24s10.7 24 24 24l99.4 0-18.3 64-81.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l67.4 0-27.4 96-256 0-9.1-96-62.9 0c-30.9 0-56-25.1-56-56L0 56zM114.3 192L100.6 48 56 48c-4.4 0-8 3.6-8 8l0 128c0 4.4 3.6 8 8 8l58.3 0zM136 384l240 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-240 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm120 88a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faU = {\n  prefix: 'fas',\n  iconName: 'u',\n  icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32l0 224c0 70.7 57.3 128 128 128s128-57.3 128-128l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 224c0 106-86 192-192 192S0 394 0 288L0 64C0 46.3 14.3 32 32 32z\"]\n};\nvar faShare = {\n  prefix: 'fas',\n  iconName: 'share',\n  icon: [512, 512, [\"mail-forward\"], \"f064\", \"M307.8 18.4c-12 5-19.8 16.6-19.8 29.6l0 80-112 0c-97.2 0-176 78.8-176 176 0 113.3 81.5 163.9 100.2 174.1 2.5 1.4 5.3 1.9 8.1 1.9 10.9 0 19.7-8.9 19.7-19.7 0-7.5-4.3-14.4-9.8-19.5-9.4-8.8-22.2-26.4-22.2-56.7 0-53 43-96 96-96l96 0 0 80c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-9.2-9.2-22.9-11.9-34.9-6.9z\"]\n};\nvar faMailForward = faShare;\nvar faPhoneFlip = {\n  prefix: 'fas',\n  iconName: 'phone-flip',\n  icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M351.8 25c7.8-18.8 28.4-28.9 48.1-23.5l5.5 1.5c64.6 17.6 119.8 80.2 103.7 156.4-37.1 175-174.8 312.7-349.8 349.8-76.3 16.2-138.8-39.1-156.4-103.7l-1.5-5.5c-5.4-19.7 4.7-40.3 23.5-48.1l97.3-40.5c16.5-6.9 35.6-2.1 47 11.8l38.6 47.2c70.3-34.9 126.8-93.3 159.3-164.9l-44.1-36.1c-13.9-11.3-18.6-30.4-11.8-47L351.8 25z\"]\n};\nvar faPhoneAlt = faPhoneFlip;\nvar faToiletPortable = {\n  prefix: 'fas',\n  iconName: 'toilet-portable',\n  icon: [320, 512, [], \"e583\", \"M0 64l0 16 320 0 0-16c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64zm24 64L0 128 0 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 224 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-360-296 0zm224 96l24 0 0 96-24 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n};\nvar faPersonPregnant = {\n  prefix: 'fas',\n  iconName: 'person-pregnant',\n  icon: [384, 512, [], \"e31e\", \"M192 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zm80 321.2c8.6-4.5 16.8-10 24.3-16.5l4-3.4c22.6-19.4 35.7-47.7 35.7-77.6 0-35.9-18.8-69.1-49.6-87.6l-30.4-18.2 0-1.8c0-46.5-37.7-84.1-84.1-84.1-28.1 0-54.4 14.1-70 37.5L21.4 270.2c-9.8 14.7-5.8 34.6 8.9 44.4s34.6 5.8 44.4-8.9l29-43.5-30.5 113.5c-2.6 9.6-.6 19.9 5.5 27.8S94 416 104 416l8 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-110.8z\"]\n};\nvar faLessThan = {\n  prefix: 'fas',\n  iconName: 'less-than',\n  icon: [512, 512, [62774], \"3c\", \"M477.1 50.6c7.4 16 .4 35.1-15.6 42.5L108.4 256 461.4 419c16 7.4 23 26.4 15.6 42.5s-26.4 23-42.5 15.6l-416-192C7.3 279.8 0 268.5 0 256S7.3 232.2 18.6 227l416-192c16-7.4 35.1-.4 42.5 15.6z\"]\n};\nvar faSuperscript = {\n  prefix: 'fas',\n  iconName: 'superscript',\n  icon: [576, 512, [], \"f12b\", \"M544 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16C449.9 27.3 443.5 46.5 451.4 62.3 457 73.5 468.3 80 480 80l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128zM96 64C78.3 64 64 78.3 64 96s14.3 32 32 32l15.3 0 89.6 128-89.6 128-15.3 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L240 311.8 325.8 434.4c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0-89.6-128 89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L240 200.2 154.2 77.6C148.2 69.1 138.4 64 128 64L96 64z\"]\n};\nvar faCircleStop = {\n  prefix: 'fas',\n  iconName: 'circle-stop',\n  icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faArrowsUpDown = {\n  prefix: 'fas',\n  iconName: 'arrows-up-down',\n  icon: [256, 512, [\"arrows-v\"], \"f07d\", \"M150.6-22.6c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 77.3 96 434.7 54.6 393.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-41.4 41.4 0-357.5 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faArrowsV = faArrowsUpDown;\nvar faPooStorm = {\n  prefix: 'fas',\n  iconName: 'poo-storm',\n  icon: [512, 512, [\"poo-bolt\"], \"f75a\", \"M268.9-31.8c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1 0 21.7-8.5 37.2-21.9 47.6-13.9 10.8-34.1 17-58.1 17l-24 0c-48.6 0-88 39.4-88 88 0 14.8 3.7 28.8 10.2 41.1-42 6.6-74.2 43-74.2 86.9 0 46.6 36.2 84.7 81.9 87.8 3.1-12.4 9.9-23.8 19.6-32.5L242.7 225c12.2-10.9 28-17 44.4-17 44.6 0 76.5 43 63.7 85.7l-12.7 42.4c28.8 1.2 52.7 21.1 59.8 47.9l26.2 0c48.6 0 88-39.4 88-88 0-43.9-32.1-80.3-74.2-86.9 6.5-12.3 10.2-26.2 10.2-41.1 0-48.6-39.4-88-88-88l-9.4 0c.9-5.4 1.4-10.9 1.4-16.6 0-48.7-36.1-88.9-83.1-95.2zM144.6 416l61.8 0-31.2 104.1c-3.6 11.9 5.3 23.9 17.8 23.9 4.6 0 9-1.7 12.4-4.7L346.5 412.9c3.5-3.1 5.5-7.6 5.5-12.4 0-9.2-7.4-16.6-16.6-16.6l-61.8 0 31.2-104.1c3.6-11.9-5.3-23.9-17.8-23.9-4.6 0-9 1.7-12.4 4.7L133.5 387.1c-3.5 3.1-5.5 7.6-5.5 12.4 0 9.2 7.4 16.6 16.6 16.6z\"]\n};\nvar faPooBolt = faPooStorm;\nvar faVideoSlash = {\n  prefix: 'fas',\n  iconName: 'video-slash',\n  icon: [576, 512, [], \"f4e2\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-153-153 0-222.2c0-35.3-28.7-64-64-64L129.8 64 41-24.9zM32 128l0 256c0 35.3 28.7 64 64 64l256 0c7.8 0 15.3-1.4 22.2-4L36 105.8c-2.6 6.9-4 14.4-4 22.2zM464 336l73.5 58.8c4.2 3.4 9.4 5.2 14.8 5.2 13.1 0 23.7-10.6 23.7-23.7l0-240.6c0-13.1-10.6-23.7-23.7-23.7-5.4 0-10.6 1.8-14.8 5.2L464 176 464 336z\"]\n};\nvar faSquareXmark = {\n  prefix: 'fas',\n  iconName: 'square-xmark',\n  icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm71 135c9.4-9.4 24.6-9.4 33.9 0l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesSquare = faSquareXmark;\nvar faXmarkSquare = faSquareXmark;\nvar faHandHoldingDroplet = {\n  prefix: 'fas',\n  iconName: 'hand-holding-droplet',\n  icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6L209.2 103C198 119.3 192 138.6 192 158.3l0 1.7c0 53 43 96 96 96s96-43 96-96l0-1.7c0-19.8-6-39-17.2-55.3L300.5 6.6C297.7 2.5 293 0 288 0s-9.7 2.5-12.5 6.6zM109.3 341.5L66.7 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l320.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 280 416c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-152.2 0c-33.9 0-66.5 13.5-90.5 37.5z\"]\n};\nvar faHandHoldingWater = faHandHoldingDroplet;\nvar faWonSign = {\n  prefix: 'fas',\n  iconName: 'won-sign',\n  icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.7 28.1 21.9 33.6S-3.9 57.4 1.7 74.1L56.9 240 32 240c-13.3 0-24 10.7-24 24s10.7 24 24 24l40.9 0 56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288 279 288 321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288 480 288c13.3 0 24-10.7 24-24s-10.7-24-24-24l-24.9 0 55.3-165.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-62 186.1-54.6 0-45.9-183.8C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L179 240 124.4 240 62.4 53.9zm78 234.1l26.6 0-11.4 45.6-15.2-45.6zM245 240l11-44.1 11 44.1-22 0zm100 48l26.6 0-15.2 45.6-11.4-45.6z\"]\n};\nvar faKrw = faWonSign;\nvar faWon = faWonSign;\nvar faObjectUngroup = {\n  prefix: 'fas',\n  iconName: 'object-ungroup',\n  icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64 0 28.7 28.7 0 64 0 87.7 0 108.4 12.9 119.4 32l209.1 0c11.1-19.1 31.7-32 55.4-32 35.3 0 64 28.7 64 64 0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4 0 35.3-28.7 64-64 64-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32-35.3 0-64-28.7-64-64 0-23.7 12.9-44.4 32-55.4l0-113.1zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 113.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4L119.4 96zM544 279.4c-9.7-5.6-17.8-13.7-23.4-23.4l-29.2 0c-5.3-17.7-14.8-33.5-27.4-46.4l0-17.6 56.6 0c11.1-19.1 31.7-32 55.4-32 35.3 0 64 28.7 64 64 0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4 0 35.3-28.7 64-64 64-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32-35.3 0-64-28.7-64-64 0-23.7 12.9-44.4 32-55.4l0-24.6 64 0 0 24.6c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1z\"]\n};\nvar faComment = {\n  prefix: 'fas',\n  iconName: 'comment',\n  icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 132.5-114.6 240-256 240-37.1 0-72.3-7.4-104.1-20.7L33.5 510.1c-9.4 4-20.2 1.7-27.1-5.8S-2 485.8 2.8 476.8l48.8-92.2C19.2 344.3 0 294.3 0 240 0 107.5 114.6 0 256 0S512 107.5 512 240z\"]\n};\nvar faHillAvalanche = {\n  prefix: 'fas',\n  iconName: 'hill-avalanche',\n  icon: [576, 512, [], \"e507\", \"M440.1 401.9c34.2 23.1 81.1 19.5 111.4-10.8 34.4-34.4 34.4-90.1 0-124.5-27.8-27.8-69.5-33.1-102.6-16-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3 15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7c22.3-14.2 37.1-39.1 37.1-67.5 0-33.9-21.1-62.9-50.9-74.5 1.9-6.8 2.9-14 2.9-21.5 0-44.2-35.8-80-80-80-27.3 0-51.5 13.7-65.9 34.6-5.8-20-24.2-34.6-46.1-34.6-26.5 0-48 21.5-48 48 0 4 .5 7.9 1.4 11.6L440.1 401.9zM480.4 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.7 87C43.5 61.8 .4 79.7 .4 115.3L.4 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.7 87z\"]\n};\nvar faArrowsToEye = {\n  prefix: 'fas',\n  iconName: 'arrows-to-eye',\n  icon: [640, 512, [], \"e4bf\", \"M176 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 38.1-63-63c-9.4-9.4-24.6-9.4-33.9 0S21.7 55.6 31 65l63 63-38.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l96 0c13.3 0 24-10.7 24-24l0-96zm0 400l0-96c0-13.3-10.7-24-24-24l-96 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l38.1 0-63 63c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l63-63 0 38.1c0 13.3 10.7 24 24 24s24-10.7 24-24zm312 24c13.3 0 24-10.7 24-24l0-38.1 63 63c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-63-63 38.1 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-96 0c-13.3 0-24 10.7-24 24l0 96c0 13.3 10.7 24 24 24zM464 56l0 96c0 13.3 10.7 24 24 24l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-38.1 0 63-63c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-63 63 0-38.1c0-13.3-10.7-24-24-24s-24 10.7-24 24zM320 120c-57.3 0-99.4 34-125.6 64.3-20 23.1-32.4 45.8-37.6 56.1-2.5 5-4.9 9.7-4.9 15.6s2.3 10.6 4.9 15.6c5.2 10.3 17.6 33 37.6 56.1 26.2 30.3 68.2 64.3 125.6 64.3s99.4-34 125.6-64.3c20-23.1 32.4-45.8 37.6-56.1 2.5-5 4.9-9.7 4.9-15.6s-2.3-10.6-4.9-15.6c-5.2-10.3-17.6-33-37.6-56.1-26.2-30.3-68.2-64.3-125.6-64.3zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faSnowplow = {\n  prefix: 'fas',\n  iconName: 'snowplow',\n  icon: [640, 512, [], \"f7d2\", \"M128 160l0-96c0-35.3 28.7-64 64-64L296.4 0c24.2 0 46.4 13.7 57.2 35.4l87.6 175.1c4.4 8.9 6.8 18.7 6.8 28.6l0 56.9 80 0 0-80c0-48.6 39.4-88 88-88 13.3 0 24 10.7 24 24s-10.7 24-24 24c-22.1 0-40 17.9-40 40l0 208c0 22.1 17.9 40 40 40 13.3 0 24 10.7 24 24s-10.7 24-24 24c-48.6 0-88-39.4-88-88l0-80-63 0c9.5 16.5 15 35.6 15 56 0 61.9-50.1 112-112 112l-224 0c-61.9 0-112-50.1-112-112 0-30.5 12.2-58.2 32-78.4L64 224c0-35.3 28.7-64 64-64zm91.7 34.9l43.6 29.1 113.2 0-80-160-104.4 0 0 108.8 27.7 22.1zM416 400c0-26.5-21.5-48-48-48l-224 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l224 0c26.5 0 48-21.5 48-48zm-280 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm216-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM232 400a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faChartGantt = {\n  prefix: 'fas',\n  iconName: 'chart-gantt',\n  icon: [512, 512, [], \"e0e4\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0zm64 112c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0zM384 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0z\"]\n};\nvar faVideo = {\n  prefix: 'fas',\n  iconName: 'video',\n  icon: [576, 512, [\"video-camera\"], \"f03d\", \"M96 64c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L96 64zM464 336l73.5 58.8c4.2 3.4 9.4 5.2 14.8 5.2 13.1 0 23.7-10.6 23.7-23.7l0-240.6c0-13.1-10.6-23.7-23.7-23.7-5.4 0-10.6 1.8-14.8 5.2L464 176 464 336z\"]\n};\nvar faVideoCamera = faVideo;\nvar faChessPawn = {\n  prefix: 'fas',\n  iconName: 'chess-pawn',\n  icon: [384, 512, [9823], \"f443\", \"M192-32c66.3 0 120 53.7 120 120 0 27-8.9 51.9-24 72 17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.7 0 26.7 160 56.2 70.3c5 6.3 7.8 14.1 7.8 22.2 0 19.6-15.9 35.5-35.5 35.5L51.5 512c-19.6 0-35.5-15.9-35.5-35.5 0-8.1 2.7-15.9 7.8-22.2L80 384 106.7 224 96 224c-17.7 0-32-14.3-32-32s14.3-32 32-32c-15.1-20.1-24-45-24-72 0-66.3 53.7-120 120-120z\"]\n};\nvar faSynagogue = {\n  prefix: 'fas',\n  iconName: 'synagogue',\n  icon: [576, 512, [128333], \"f69b\", \"M16 80c0-35.3 28.7-64 64-64s64 28.7 64 64l0 32-128 0 0-32zm0 368l0-288 128 0 126.2-84.2c10.7-7.2 24.8-7.2 35.5 0l126.2 84.2 128 0 0 288c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64zM560 112l-128 0 0-32c0-35.3 28.7-64 64-64s64 28.7 64 64l0 32zM224 384l0 80 128 0 0-80c0-35.3-28.7-64-64-64s-64 28.7-64 64zm64-152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faBuildingCircleCheck = {\n  prefix: 'fas',\n  iconName: 'building-circle-check',\n  icon: [576, 512, [], \"e4d2\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-10.5-14.6-19-30.7-25.1-48l-74.9 0 0-80c0-17.7 14.3-32 32-32l32 0c2 0 4 .2 5.9 .5 6-23.6 16.3-45.4 30.1-64.5l-4 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 4c27.5-19.8 60.3-32.4 96-35.4L416 64c0-35.3-28.7-64-64-64L96 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM576 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n};\nvar faCalendarPlus = {\n  prefix: 'fas',\n  iconName: 'calendar-plus',\n  icon: [448, 512, [], \"f271\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zm96 192c-13.3 0-24 10.7-24 24l0 48-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0 0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48 48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-48c0-13.3-10.7-24-24-24z\"]\n};\nvar faWheelchairMove = {\n  prefix: 'fas',\n  iconName: 'wheelchair-move',\n  icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M312 56a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM205.4 124.1c-6.4-5.2-15.6-4.7-21.4 1.1l-33.4 33.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L138.8 80c29-29 75.2-31.4 107-5.5l81.3 66c21.4 17.4 23.8 49.2 5.2 69.5l-41.8 46 98 0c30.3 0 53 27.7 47.1 57.4L407.4 454.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L369 320 316.8 320c2.1 10.3 3.2 21 3.2 32 0 88.4-71.6 160-160 160S0 440.4 0 352 71.6 192 160 192c6 0 11.9 .3 17.8 1l50.4-50.4-22.7-18.5zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faWheelchairAlt = faWheelchairMove;\nvar faUserShield = {\n  prefix: 'fas',\n  iconName: 'user-shield',\n  icon: [576, 512, [], \"f505\", \"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l251.5 0C261 469.4 240 414.5 240 356.4l0-31.1c0-7.3 1-14.5 2.9-21.3l-48.6 0zm251 184.5l-13.3 6.3 0-188.1 96 32 0 19.6c0 55.8-32.2 106.5-82.7 130.3zM421.9 259.5l-112 37.3c-13.1 4.4-21.9 16.6-21.9 30.4l0 31.1c0 74.4 43 142.1 110.2 173.7l18.5 8.7c4.8 2.2 10 3.4 15.2 3.4s10.5-1.2 15.2-3.4l18.5-8.7C533 500.3 576 432.6 576 358.2l0-31.1c0-13.8-8.8-26-21.9-30.4l-112-37.3c-6.6-2.2-13.7-2.2-20.2 0z\"]\n};\nvar faBold = {\n  prefix: 'fas',\n  iconName: 'bold',\n  icon: [384, 512, [], \"f032\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l32 0 0 320-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c70.7 0 128-57.3 128-128 0-46.5-24.8-87.3-62-109.7 18.7-22.3 30-51 30-82.3 0-70.7-57.3-128-128-128L32 32zM288 160c0 35.3-28.7 64-64 64l-96 0 0-128 96 0c35.3 0 64 28.7 64 64zM128 416l0-128 128 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-128 0z\"]\n};\nvar faHeartPulse = {\n  prefix: 'fas',\n  iconName: 'heart-pulse',\n  icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M256 107.9L241 87.1C216 52.5 175.9 32 133.1 32 59.6 32 0 91.6 0 165.1l0 2.6c0 23.6 6.2 48 16.6 72.3l106 0c3.2 0 6.1-1.9 7.4-4.9l31.8-76.3c3.7-8.8 12.3-14.6 21.8-14.8s18.3 5.4 22.2 14.1l51.3 113.9 41.4-82.8c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3l23.2 46.3c1.4 2.7 4.1 4.4 7.2 4.4l123.6 0c10.5-24.3 16.6-48.7 16.6-72.3l0-2.6C512 91.6 452.4 32 378.9 32 336.2 32 296 52.5 271 87.1l-15 20.7zM469.6 288l-97.8 0c-21.2 0-40.6-12-50.1-31l-1.7-3.4-42.5 85.1c-4.1 8.3-12.7 13.5-22 13.3s-17.6-5.7-21.4-14.1l-49.3-109.5-10.5 25.2c-8.7 20.9-29.1 34.5-51.7 34.5l-80.2 0c47.2 73.8 123 141.7 170.4 177.9 12.4 9.4 27.6 14.1 43.1 14.1s30.8-4.6 43.1-14.1C346.6 429.7 422.4 361.8 469.6 288z\"]\n};\nvar faHeartbeat = faHeartPulse;\nvar faSquareRootVariable = {\n  prefix: 'fas',\n  iconName: 'square-root-variable',\n  icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1l200 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L344 96 238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l45.6 0c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8 84.4-289.5zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0l41.4 41.4 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-41.4 41.4 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-41.4-41.4-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l41.4-41.4-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faSquareRootAlt = faSquareRootVariable;\nvar faHandsBubbles = {\n  prefix: 'fas',\n  iconName: 'hands-bubbles',\n  icon: [512, 512, [\"hands-wash\"], \"e05e\", \"M384 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM128 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM0 160l.1 72.6c0 44.8 17.6 87.1 47.9 118.4 .3-77 40.1-148.4 105.4-189.3l1.9-1.2c-2.5-3.7-2.8-8.6-.4-12.7l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S182 5 175.4 16.5l-68 117.8 0 0 0 0-43.3 75 0-49.3c0-17.7-14.4-32-32-32S0 142.4 0 160zm213.6-35.9c14.1-8.8 29.8-12.7 45.2-12.1l36.5-63.3c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-67.1 116.2 27-16.9zm86.5-35.7l-16.4 28.4c15.1 5.5 28.6 15.6 38.3 29.7l19.7-34.2c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-12.5 21.7c2 8.6 2.5 17.5 1.7 26.1l4.3 0 0 0 34.4 0 13.7-23.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM283.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C127.3 234.7 96 291.2 96 352l0 8c0 8.9 .8 17.6 2.2 26.1 35.4 8.2 61.8 40 61.8 77.9 0 6.3-.7 12.5-2.1 18.4 25.2 18.6 56.4 29.6 90.1 29.6l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-92 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-124 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l156 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-156 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-136 0 0 0 0 0-93.2 0 46.2-28.9c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nvar faHandsWash = faHandsBubbles;\nvar faMarker = {\n  prefix: 'fas',\n  iconName: 'marker',\n  icon: [512, 512, [], \"f5a1\", \"M408.8 0c-27.4 0-53.6 10.9-73 30.2L318.1 48 305 34.9c-28.1-28.1-73.7-28.1-101.8 0L103 135c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L237.1 68.9c9.4-9.4 24.6-9.4 33.9 0L284.1 81.9 184 182.1 329.9 328 481.8 176.2c19.4-19.4 30.2-45.6 30.2-73 0-57-46.2-103.2-103.2-103.2zM102.4 263.7c-49.9 49.9-83.3 114-95.5 183.5L.4 483.8C-1 491.6 1.5 499.4 7 505s13.4 8 21.1 6.7l36.7-6.5c69.5-12.3 133.6-45.6 183.5-95.5L296 361.9 150.1 216 102.4 263.7z\"]\n};\nvar faClipboard = {\n  prefix: 'fas',\n  iconName: 'clipboard',\n  icon: [384, 512, [128203], \"f328\", \"M320 32l-8.6 0C300.4 12.9 279.7 0 256 0L128 0C104.3 0 83.6 12.9 72.6 32L64 32C28.7 32 0 60.7 0 96L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-352c0-35.3-28.7-64-64-64zM136 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0z\"]\n};\nvar faPlaceOfWorship = {\n  prefix: 'fas',\n  iconName: 'place-of-worship',\n  icon: [512, 512, [], \"f67f\", \"M160 79l0 81-44.8 33.6C103.1 202.7 96 216.9 96 232l0 40-60.6 30.3C13.7 313.2 0 335.3 0 359.6L0 448c0 35.3 28.7 64 64 64 74.7 0 85.4 0 320 0l64 0c35.3 0 64-28.7 64-64l0-88.4c0-24.2-13.7-46.4-35.4-57.2L416 272 416 232c0-15.1-7.1-29.3-19.2-38.4L352 160 352 79c0-9.5-4.2-18.5-11.5-24.6L271.4-3.2c-8.9-7.4-21.8-7.4-30.7 0L171.5 54.4C164.2 60.5 160 69.5 160 79zm96 241c35.3 0 64 28.7 64 64l0 80-128 0 0-80c0-35.3 28.7-64 64-64z\"]\n};\nvar faCannabis = {\n  prefix: 'fas',\n  iconName: 'cannabis',\n  icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1 15.8 23.5 36.7 63.7 49.2 109 7.3 26.4 11.8 55.3 10.3 84 11.6-8.9 23.7-16.7 35.9-23.7 41-23.3 84.4-36.9 112.2-42.5 5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7-9.1 15.9-19.9 31.7-32.5 46.3 27.9 6.6 52.5 17.2 67.3 25.4 5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.2c1.5 6.1-.6 12.5-5.5 16.4s-11.6 4.6-17.2 1.8L280 417.2 280 488c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-70.8-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.8s-7-10.3-5.5-16.4l8.3-33.2c-22.2 2.6-45 0-65.2-4.6-28.9-6.6-54.5-17.6-69.8-26.1-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14l6.2-3.3c15-7.6 36.8-16.4 61.1-22.2-12.5-14.5-23.3-30.4-32.4-46.2-23.4-40.8-37.1-84-42.7-111.7-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5 12.2 6.9 24.3 14.8 35.8 23.7-1.4-28.7 3.1-57.6 10.3-84 12.5-45.3 33.4-85.5 49.2-109l1.2-1.6C246.9 2 251.3 0 256 0z\"]\n};\nvar faPeopleRoof = {\n  prefix: 'fas',\n  iconName: 'people-roof',\n  icon: [576, 512, [], \"e537\", \"M302.3-12.6c-9-4.5-19.6-4.5-28.6 0l-256 128C1.9 123.3-4.5 142.5 3.4 158.3s27.1 22.2 42.9 14.3L288 51.8 529.7 172.6c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9l-256-128zM288 272a56 56 0 1 0 0-112 56 56 0 1 0 0 112zm0 48c-53 0-96 43-96 96l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-53-43-96-96-96zM160 256a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm352 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM112 336c-44.2 0-80 35.8-80 80l0 33.1c0 17 13.8 30.9 30.9 30.9l87.8 0c-4.3-9.8-6.7-20.6-6.7-32l0-48c0-18.4 3.5-36 9.8-52.2-12.2-7.5-26.5-11.8-41.8-11.8zM425.4 480l87.8 0c17 0 30.9-13.8 30.9-30.9l0-33.1c0-44.2-35.8-80-80-80-15.3 0-29.6 4.3-41.8 11.8 6.3 16.2 9.8 33.8 9.8 52.2l0 48c0 11.4-2.4 22.2-6.7 32z\"]\n};\nvar faDisease = {\n  prefix: 'fas',\n  iconName: 'disease',\n  icon: [512, 512, [], \"f7fa\", \"M236.5 29.4L224 48c-20 30-53.6 48-89.7 48L68 96c-37.5 0-67.9 30.4-67.9 67.9 0 18 7.2 35.2 19.9 47.9l27 27c11 11 17.2 25.9 17.2 41.5 0 15.8-6.4 30.9-17.7 42L33.4 335.1c-11.1 10.8-17.3 25.7-17.3 41.2 0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6 32.8 0 64.2 14.6 85.2 39.8l30.5 36.6c10.4 12.4 25.7 19.6 41.9 19.6 30.1 0 54.5-24.4 54.5-54.5l0-51.2c0-41.4 25.4-78.5 64-93.5l22.2-8.6c25.2-9.8 41.8-34.1 41.8-61.1 0-26.4-15.9-50.3-40.3-60.5L429 164.8c-33.2-13.9-57.6-43-65.5-78.1l-7.9-35.2c-6.8-30.1-33.5-51.5-64.3-51.5-22 0-42.6 11-54.8 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBookBible = {\n  prefix: 'fas',\n  iconName: 'book-bible',\n  icon: [448, 512, [\"bible\"], \"f647\", \"M96 512c-53 0-96-43-96-96L0 96C0 43 43 0 96 0L400 0c26.5 0 48 21.5 48 48l0 288c0 20.9-13.4 38.7-32 45.3l0 66.7c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 512zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0 0-64-256 0zM192 80l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 112c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-112 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBible = faBookBible;\nvar faChessBoard = {\n  prefix: 'fas',\n  iconName: 'chess-board',\n  icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 64l0 64 64 0 0-64 64 0 0 64 64 0 0-64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64 64 0 0-64-64 0 0-64 64 0 0-64-64 0 0-64 64 0zm64 128l64 0 0-64-64 0 0 64zm0 64l0-64-64 0 0 64 64 0zm64 0l-64 0 0 64 64 0 0-64zm0 0l64 0 0-64-64 0 0 64z\"]\n};\nvar faMars = {\n  prefix: 'fas',\n  iconName: 'mars',\n  icon: [512, 512, [9794], \"f222\", \"M320 32c0-17.7 14.3-32 32-32L480 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50.7-95 95c19.5 28.4 31 62.7 31 99.8 0 97.2-78.8 176-176 176S32 401.2 32 304 110.8 128 208 128c37 0 71.4 11.4 99.8 31l95-95-50.7 0c-17.7 0-32-14.3-32-32zM208 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nvar faLaptop = {\n  prefix: 'fas',\n  iconName: 'laptop',\n  icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96l0 240 64 0 0-240 384 0 0 240 64 0 0-240c0-35.3-28.7-64-64-64L128 32zM19.2 384C8.6 384 0 392.6 0 403.2 0 445.6 34.4 480 76.8 480l486.4 0c42.4 0 76.8-34.4 76.8-76.8 0-10.6-8.6-19.2-19.2-19.2L19.2 384z\"]\n};\nvar faUserXmark = {\n  prefix: 'fas',\n  iconName: 'user-xmark',\n  icon: [576, 512, [\"user-times\"], \"f235\", \"M254.1 304c98.5 0 178.3 79.8 178.3 178.3 0 16.4-13.3 29.7-29.7 29.7L46.1 512c-16.4 0-29.7-13.3-29.7-29.7 0-98.5 79.8-178.3 178.3-178.3l59.4 0zM530.3 108.1c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-33.9 33.9 33.9 33.9c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-33.9-33.9-33.9 33.9c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l33.9-33.9-33.9-33.9c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l33.9 33.9 33.9-33.9zM224.4 248a120 120 0 1 1 0-240 120 120 0 1 1 0 240z\"]\n};\nvar faUserTimes = faUserXmark;\nvar faFlagUsa = {\n  prefix: 'fas',\n  iconName: 'flag-usa',\n  icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5 46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 36.1-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9l0 32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4l33.7-12.3 0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3l-63.5 13.6 0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4l33.7-12.3 0 61.9-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3l-63.5 13.6 0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4l33.7-12.3 0 33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4-37.9-19-81.4-23.7-122.5-13.4L64 400 64 480c0 17.7-14.3 32-32 32S0 497.7 0 480L0 32C0 14.3 14.3 0 32 0zm80 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faHandMiddleFinger = {\n  prefix: 'fas',\n  iconName: 'hand-middle-finger',\n  icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40l0 164.2c-8.5-7.6-19.7-12.2-32-12.2-26.5 0-48 21.5-48 48l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-55.7c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334L32 372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1L304 512c70.7 0 128-57.3 128-128l0-96c0-26.5-21.5-48-48-48-12.4 0-23.6 4.7-32.1 12.3-1.9-24.8-22.6-44.3-47.9-44.3-12.3 0-23.5 4.6-32 12.2L272 40c0-22.1-17.9-40-40-40z\"]\n};\nvar faMortarPestle = {\n  prefix: 'fas',\n  iconName: 'mortar-pestle',\n  icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160 397.3 160 502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2-11.1 13.9-19.4 30.3-23.9 48.1-4.4 17.1 10.4 31.7 28.1 31.7l192 0c17.7 0 32.4-14.6 28.1-31.7-4.5-17.8-12.8-34.1-23.9-48.1 80.5-28.6 123.9-93.7 123.9-176.2 17.7 0 32-14.3 32-32s-14.3-32-32-32L32 192z\"]\n};\nvar faHeadSideCough = {\n  prefix: 'fas',\n  iconName: 'head-side-cough',\n  icon: [512, 512, [], \"e061\", \"M96 512l64 0c53 0 96-43 96-96l0-80c0-8.8 7.2-16 16-16l1 0c26 0 47-21 47-47 0-11-3.9-21.6-10.9-30.1L273.3 200C271.4 197.6 270.1 194.7 269.7 191.7 254 83.3 160.7 0 48 0 40.4 0 32.9 .4 25.4 1.1 10.5 2.6 0 15.9 0 30.9L0 480c0 17.7 14.3 32 32 32l64 0zm16-320a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm63.1 237.2l-41.5-3.5c-12.2-1-21.6-11.2-21.6-23.4 0-10.8 7.3-20.2 17.8-22.8l40.4-10.1c19.2-4.8 37.8 9.7 37.8 29.5 0 17.8-15.2 31.8-32.9 30.3zM480 312a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-40 24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm-64 48a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm128 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM480 504a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-40-72a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faPlaneLock = {\n  prefix: 'fas',\n  iconName: 'plane-lock',\n  icon: [640, 512, [], \"e558\", \"M232 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 82.1 75.2C409.7 248.1 400 274.9 400 304l0 24.4c-7.3 6.6-13.6 14.2-18.7 22.7l-37.3-12.4 0 99.7 24 19.2 0 38.3c0 13.5 2.8 26.4 7.8 38.1L288 512 179.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C58.7 396.4 48 388.7 48 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L232 151.3 232 24zM560 304.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM416 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nvar faBatteryThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'battery-three-quarters',\n  icon: [640, 512, [\"battery-4\"], \"f241\", \"M528 128c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-416 0c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16l416 0zM112 64c-44.2 0-80 35.8-80 80l0 224c0 44.2 35.8 80 80 80l416 0c44.2 0 80-35.8 80-80l0-48c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80L112 64zm56 112c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l224 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-224 0z\"]\n};\nvar faBattery4 = faBatteryThreeQuarters;\nvar faFrancSign = {\n  prefix: 'fas',\n  iconName: 'franc-sign',\n  icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64l0 256-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-64 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-96 176 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nvar faFilterCircleDollar = {\n  prefix: 'fas',\n  iconName: 'filter-circle-dollar',\n  icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M32 64C19.1 64 7.4 71.8 2.4 83.8S.2 109.5 9.4 118.6L192 301.3 192 416c0 8.5 3.4 16.6 9.4 22.6l64 64c2.5 2.5 5.3 4.5 8.3 6-21.2-30.9-33.6-68.3-33.6-108.6 0-99.4 75.5-181.1 172.3-191l90.4-90.4c9.2-9.2 11.9-22.9 6.9-34.9S492.9 64 480 64L32 64zM576 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM416 320c0-8.8 7.2-16 16-16s16 7.2 16 16l0 8 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-45.8 0c-5.6 0-10.2 4.6-10.2 10.2 0 4.9 3.5 9.1 8.3 10l45 8.2c20 3.6 34.6 21.1 34.6 41.5 0 23.3-18.9 42.2-42.2 42.2l-5.8 0 0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l53.8 0c5.6 0 10.2-4.6 10.2-10.2 0-4.9-3.5-9.1-8.3-10l-45-8.2c-20-3.6-34.6-21.1-34.6-41.5 0-22.6 17.7-41 40-42.1l0-8.1z\"]\n};\nvar faFunnelDollar = faFilterCircleDollar;\nvar faCheese = {\n  prefix: 'fas',\n  iconName: 'cheese',\n  icon: [512, 512, [], \"f7ef\", \"M512 240.2l0 15.8-512 0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7 115 0 208.2 93.2 208.2 208.2zm0 63.8l0 112c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-112 512 0z\"]\n};\nvar faCircleH = {\n  prefix: 'fas',\n  iconName: 'circle-h',\n  icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm96-344l0 176c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-64-96 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-176c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 96 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHospitalSymbol = faCircleH;\nvar faSchool = {\n  prefix: 'fas',\n  iconName: 'school',\n  icon: [576, 512, [127979], \"f549\", \"M0 192c0-35.3 28.7-64 64-64l64 0 127.9-115.1c18.3-16.4 46-16.4 64.2 0L448 128 512 128c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192zM224 376l0 88 128 0 0-88c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zm-112 8c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 384c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM288 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faDiceFive = {\n  prefix: 'fas',\n  iconName: 'dice-five',\n  icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTornado = {\n  prefix: 'fas',\n  iconName: 'tornado',\n  icon: [448, 512, [127786], \"f76f\", \"M0 32L0 45.6C0 62.7 1.7 79.6 5 96l352.8 0c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16 0-12.5-10.1-22.6-22.6-22.6L32 0C14.3 0 0 14.3 0 32zM355.7 144l-336 0c12.4 29.7 30.2 56.8 52.7 80l339.6 0-47.2-62.9c-3.9-5.2-7-11-9.2-17.1zM242.6 334.7c8.2 4.8 15.8 10.7 22.5 17.3L445 352c2-9.8 3-19.9 3-30.1 0-17.1-2.9-34-8.6-49.9L136 272 242.6 334.7zM294.3 400c5.3 17 6.5 35.2 3.6 53l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4 5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c8.5-8.5 15.8-17.8 21.9-27.9l-131.8 0z\"]\n};\nvar faJetFighter = {\n  prefix: 'fas',\n  iconName: 'jet-fighter',\n  icon: [576, 512, [\"fighter-jet\"], \"f0fb\", \"M496.2 206.8c-10.7-4.5-22.2-6.8-33.8-6.8L362 200 248 48 296 48c13.3 0 24-10.7 24-24S309.3 0 296 0L152 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l8 0 0 152-54.4 0-52.8-66c-3-3.8-7.6-6-12.5-6L16 128c-8.8 0-16 7.2-16 16l0 88 40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0 0 88c0 8.8 7.2 16 16 16l24.3 0c4.9 0 9.5-2.2 12.5-6l52.8-66 54.4 0 0 152-8 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 114-152 100.4 0c11.6 0 23.1-2.3 33.8-6.8l65-27.1c8.9-3.7 14.8-12.5 14.8-22.2s-5.8-18.4-14.8-22.2l-65-27.1z\"]\n};\nvar faFighterJet = faJetFighter;\nvar faThumbsDown = {\n  prefix: 'fas',\n  iconName: 'thumbs-down',\n  icon: [512, 512, [128078, 61576], \"f165\", \"M384 32c26.5 0 48 21.5 48 48 0 6.3-1.3 12.2-3.4 17.7 20.4 5.5 35.4 24.1 35.4 46.3 0 9.1-2.6 17.6-7 24.9 22.2 4.2 39 23.7 39 47.1 0 19.7-11.9 36.6-28.9 44 17 7.4 28.9 24.3 28.9 44 0 26.5-21.5 48-48 48l-160 0 28.2 70.4c2.5 6.3 3.8 13.1 3.8 19.9l0 4.2c0 27.3-22.1 49.4-49.4 49.4-18.7 0-35.8-10.6-44.2-27.3L170.1 356.3c-6.7-13.3-10.1-28-10.1-42.9l0-186.6c0-19.4 8.9-37.8 24-50l12.2-9.7C224.6 44.4 259.8 32 296.1 32L384 32zM80 96c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32L0 128c0-17.7 14.3-32 32-32l48 0z\"]\n};\nvar faBroom = {\n  prefix: 'fas',\n  iconName: 'broom',\n  icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6-12.5 0-22.6 10.1-22.6 22.6l0 29.1 108.3 108.3 29.1 0c12.5 0 22.6-10.1 22.6-22.6 0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8c-22.3 22.3-34.8 52.5-34.8 84 0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9 0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8 30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nvar faFileImport = {\n  prefix: 'fas',\n  iconName: 'file-import',\n  icon: [384, 512, [\"arrow-right-to-file\"], \"f56f\", \"M64 0C28.7 0 0 28.7 0 64l0 240 182.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-182.1 0 0 96c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-277.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176z\"]\n};\nvar faArrowRightToFile = faFileImport;\nvar faUtensils = {\n  prefix: 'fas',\n  iconName: 'utensils',\n  icon: [512, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M63.9 14.4C63.1 6.2 56.2 0 48 0s-15.1 6.2-16 14.3L17.9 149.7c-1.3 6-1.9 12.1-1.9 18.2 0 45.9 35.1 83.6 80 87.7L96 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224.4c44.9-4.1 80-41.8 80-87.7 0-6.1-.6-12.2-1.9-18.2L223.9 14.3C223.1 6.2 216.2 0 208 0s-15.1 6.2-15.9 14.4L178.5 149.9c-.6 5.7-5.4 10.1-11.1 10.1-5.8 0-10.6-4.4-11.2-10.2L143.9 14.6C143.2 6.3 136.3 0 128 0s-15.2 6.3-15.9 14.6L99.8 149.8c-.5 5.8-5.4 10.2-11.2 10.2-5.8 0-10.6-4.4-11.1-10.1L63.9 14.4zM448 0C432 0 320 32 320 176l0 112c0 35.3 28.7 64 64 64l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-448c0-17.7-14.3-32-32-32z\"]\n};\nvar faCutlery = faUtensils;\nvar faIdBadge = {\n  prefix: 'fas',\n  iconName: 'id-badge',\n  icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zm96 352l64 0c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16L96 448c-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80zm-24-96a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM152 64l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSpider = {\n  prefix: 'fas',\n  iconName: 'spider',\n  icon: [512, 512, [128375], \"f717\", \"M369.3-31c11.9-3.5 24.4 2.7 29 13.9l.8 2.3 40 136c2.5 8.4 .1 17.5-6.1 23.7l-64.1 64.1 76.4-20.8 19.9-59.8 .9-2.3c5-11.1 17.7-16.8 29.5-12.9 11.8 3.9 18.5 16.1 15.8 28l-.7 2.4-24 72c-2.5 7.6-8.7 13.4-16.5 15.6l-91.1 24.8 91.1 24.8c7.7 2.1 13.9 8 16.5 15.6l24 72 .7 2.4c2.7 11.9-4.1 24.1-15.8 28-11.8 3.9-24.5-1.8-29.5-12.9l-.9-2.3-19.9-59.8-76.4-20.8 64.1 64.1c6.1 6.1 8.5 15.1 6.2 23.4l-40 144-.8 2.3c-4.4 11.3-16.8 17.7-28.8 14.4-12-3.3-19.3-15.2-17.2-27.2l.5-2.4 36.2-130.5-37.2-37.2C351 406 308.4 448 256 448s-95-42-96-94.1l-37 37 36 122.3 .6 2.4c2.2 11.9-4.9 23.9-16.8 27.4-11.9 3.5-24.4-2.7-29-13.9l-.8-2.3-40-136c-2.5-8.4-.1-17.5 6.1-23.8l64.1-64.1-76.4 20.8-19.9 59.8-.9 2.3c-5 11.1-17.7 16.8-29.5 12.9s-18.5-16.1-15.8-28l.7-2.4 24-72c2.5-7.6 8.7-13.4 16.5-15.6l91.1-24.8-91.1-24.8c-7.7-2.1-13.9-8-16.5-15.6l-24-72-.7-2.4c-2.7-11.9 4.1-24.1 15.8-28s24.5 1.8 29.5 12.9l.9 2.3 19.9 59.8 76.4 20.8-64.1-64.1c-6.2-6.2-8.5-15.3-6.1-23.7l40-136 .8-2.3c4.6-11.3 17.1-17.4 29-13.9 11.9 3.5 19 15.5 16.8 27.4l-.6 2.4-36 122.3 53 53c1-43.3 36.4-78.1 79.9-78.1s78.9 34.8 79.9 78.2l53.1-53.1-36-122.3-.6-2.4c-2.2-12 4.9-23.9 16.8-27.4z\"]\n};\nvar faMobileRetro = {\n  prefix: 'fas',\n  iconName: 'mobile-retro',\n  icon: [384, 512, [], \"e527\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zm80 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32zm8 192a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 72c0-13.3-10.7-24-24-24s-24 10.7-24 24 10.7 24 24 24 24-10.7 24-24zm64-72a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 72c0-13.3-10.7-24-24-24s-24 10.7-24 24 10.7 24 24 24 24-10.7 24-24zm64-72a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 72c0-13.3-10.7-24-24-24s-24 10.7-24 24 10.7 24 24 24 24-10.7 24-24zM168 40c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z\"]\n};\nvar faSignsPost = {\n  prefix: 'fas',\n  iconName: 'signs-post',\n  icon: [512, 512, [\"map-signs\"], \"f277\", \"M256.4 0c-17.7 0-32 14.3-32 32l0 32-160 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 0 64-153.4 0c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7l153.4 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 160 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-160 0 0-64 153.4 0c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7l-153.4 0 0-32c0-17.7-14.3-32-32-32z\"]\n};\nvar faMapSigns = faSignsPost;\nvar faGroupArrowsRotate = {\n  prefix: 'fas',\n  iconName: 'group-arrows-rotate',\n  icon: [512, 512, [], \"e4f6\", \"M37.6 122.3c-11.5 18.7-20.6 39-27 60.5-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c18.4-61.9 67.3-110.8 129.2-129.2 16.9-5 26.6-22.9 21.5-39.8S199.8 5.6 182.9 10.6C161.4 17 141.1 26.1 122.3 37.6 112.3 15.4 89.9 0 64 0 28.7 0 0 28.7 0 64 0 89.9 15.4 112.3 37.6 122.3zm436.7 0c22.2-10 37.6-32.4 37.6-58.3 0-35.3-28.7-64-64-64-25.9 0-48.3 15.4-58.3 37.6-18.7-11.5-39-20.6-60.5-27-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c61.9 18.4 110.8 67.3 129.2 129.2 5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.5zM512 448c0-25.9-15.4-48.3-37.6-58.3 11.5-18.7 20.6-39 27-60.5 5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-18.4 61.9-67.3 110.8-129.2 129.2-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.5-27 10 22.2 32.4 37.6 58.3 37.6 35.3 0 64-28.7 64-64zM37.6 389.7c-22.2 10-37.6 32.4-37.6 58.3 0 35.3 28.7 64 64 64 25.9 0 48.3-15.4 58.3-37.6 18.7 11.5 39 20.6 60.5 27 16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-61.9-18.4-110.8-67.3-129.2-129.2-5-16.9-22.9-26.6-39.8-21.5S5.6 312.2 10.6 329.1c6.4 21.5 15.5 41.8 27 60.5zM256 192c15.6 0 30 5.6 41.1 14.9l-15.3 15.3c-6.6 6.6-1.9 17.8 7.4 17.8l60.5 0c5.7 0 10.4-4.7 10.4-10.4l0-60.5c0-9.3-11.2-13.9-17.8-7.4l-11.2 11.2c-19.8-17.9-46.2-28.9-75.1-28.9-43.6 0-81.3 24.9-99.8 61.1-6 11.8-1.4 26.3 10.4 32.3s26.3 1.4 32.3-10.4c10.6-20.8 32.2-34.9 57-34.9zm58.6 93.1c-10.6 20.8-32.2 34.9-57 34.9-15.7 0-30-5.6-41.1-14.9l15.3-15.3c6.6-6.6 1.9-17.8-7.4-17.8L164 272c-5.7 0-10.4 4.7-10.4 10.4l0 60.5c0 9.3 11.2 13.9 17.8 7.4l11.2-11.2c19.8 17.9 46.2 28.9 75.1 28.9 43.6 0 81.3-24.9 99.8-61.1 6-11.8 1.4-26.3-10.4-32.3s-26.3-1.4-32.3 10.4z\"]\n};\nvar faArrowsSplitUpAndLeft = {\n  prefix: 'fas',\n  iconName: 'arrows-split-up-and-left',\n  icon: [512, 512, [], \"e4bc\", \"M342.6-22.6c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l41.4-41.4 0 195.9c-18.8-10.9-40.7-17.1-64-17.1l-114.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 320 224 320c35.3 0 64 28.7 64 64 0 70.7 57.3 128 128 128l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-35.3 0-64-28.7-64-64l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faFillDrip = {\n  prefix: 'fas',\n  iconName: 'fill-drip',\n  icon: [576, 512, [], \"f576\", \"M309.7 71.6l-64.4 64.4 33.4 33.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-33.4-33.4-96.4 96.4c-2.9 2.9-5.1 6.5-6.3 10.3l321.5 0 53.7-53.7c4.9-4.9 7.6-11.5 7.6-18.3s-2.7-13.5-7.6-18.3L346.3 71.6C341.5 66.7 334.9 64 328 64s-13.5 2.7-18.3 7.6zM58.3 232.4l96.4-96.4-49.4-49.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L200 90.7 264.4 26.3C281.3 9.5 304.1 0 328 0s46.7 9.5 63.6 26.3L517.7 152.4C534.5 169.3 544 192.1 544 216s-9.5 46.7-26.3 63.6L311.6 485.7C294.7 502.5 271.9 512 248 512s-46.7-9.5-63.6-26.3L58.3 359.6C41.5 342.7 32 319.9 32 296s9.5-46.7 26.3-63.6zM512 544c-35.3 0-64-28.7-64-64 0-25.2 32.6-79.6 51.2-108.7 6-9.4 19.5-9.4 25.5 0 18.7 29.1 51.2 83.5 51.2 108.7 0 35.3-28.7 64-64 64z\"]\n};\nvar faShieldHeart = {\n  prefix: 'fas',\n  iconName: 'shield-heart',\n  icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM249.6 183.5l6.4 8.5 6.4-8.5c11.1-14.8 28.5-23.5 46.9-23.5 32.4 0 58.7 26.3 58.7 58.7l0 5.3c0 49.1-65.8 98.1-96.5 118.3-9.5 6.2-21.5 6.2-30.9 0-30.7-20.2-96.5-69.3-96.5-118.3l0-5.3c0-32.4 26.3-58.7 58.7-58.7 18.5 0 35.9 8.7 46.9 23.5z\"]\n};\nvar faPersonSkiingNordic = {\n  prefix: 'fas',\n  iconName: 'person-skiing-nordic',\n  icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M424.8 16a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm99.8 193.7c7.6 15.2 1.9 33.6-12.6 42l0 180.3-32 0 0-164.2-10.1 5c-27.4 13.7-60.7 6.1-79.4-18.2l-19.6-25.5-39.5 68.8 24.8 12.4c29.5 14.7 42.9 49.5 31.1 80.2l-28.2 73.4 149.4 0c7.9 0 15.6-2.3 22.2-6.7l7.9-5.3c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3l-7.9 5.3C543 506.9 526 512 508.6 512l-189.1 0c-.5 0-1 0-1.5 0L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l88 0c0-8.2 3.1-16.4 9.4-22.6l74.1-74.1 10.2-35.9c11.3 18.3 27.7 33.8 48.4 44.2l4.8 2.4-1.9 6.8c-3 10.5-8.6 20-16.3 27.7l-51.5 51.5 101.3 0 37.1-96.4-55.6-27.8C230.4 319 215.3 267 239.3 227.1l37.7-62.7-27.7-7.7c-9-2.5-18.1 3.2-20 12.3l-5.9 29.3c-3.1 15.6-17.1 26.3-32.5 25.7l-130 208-37.7 0 140.6-225c-3.4-6.3-4.6-13.8-3.1-21.3l5.9-29.3c9.1-45.6 55.1-73.8 99.9-61.4l32.5 9c46.7 13 88 40.8 117.6 79.3l24.9 32.3 40.4-20.2c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nvar faSkiingNordic = faPersonSkiingNordic;\nvar faSquareCheck = {\n  prefix: 'fas',\n  iconName: 'square-check',\n  icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM342 145.7c-10.7-7.8-25.7-5.4-33.5 5.3L189.1 315.2 137 263.1c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c5 5 11.9 7.5 18.8 7s13.4-4.1 17.5-9.8L347.3 179.2c7.8-10.7 5.4-25.7-5.3-33.5z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faBath = {\n  prefix: 'fas',\n  iconName: 'bath',\n  icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3 3.5 0 6.9 1.4 9.4 3.9l14.9 14.9c-3.6 9.1-5.5 18.9-5.5 29.2 0 19.9 7.2 38 19.2 52-5.3 9.2-4 21.1 3.8 29 9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9-7.8-7.9-19.8-9.1-29-3.8-14-12-32.1-19.2-52-19.2-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0 66.6 0 32 34.6 32 77.3L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 48c0 28.4 12.4 54 32 71.6L64 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-16 256 0 0 16c0 17.7 14.3 32 32 32s32-14.3 32-32l0-40.4c19.6-17.6 32-43.1 32-71.6l0-48c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 256 96 77.3z\"]\n};\nvar faBathtub = faBath;\nvar faChessBishop = {\n  prefix: 'fas',\n  iconName: 'chess-bishop',\n  icon: [320, 512, [9821], \"f43a\", \"M64 384L48.3 368.3C17.4 337.4 0 295.4 0 251.7 0 213.1 13.5 175.8 38.2 146.1L106.7 64 96 64C78.3 64 64 49.7 64 32S78.3 0 96 0L224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.7 0 47.6 57.1-85.9 85.9c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l82.3-82.3c18.7 27.3 28.7 59.7 28.7 93 0 43.7-17.4 85.7-48.3 116.6L256 384 312.2 454.3c5 6.3 7.8 14.1 7.8 22.2 0 19.6-15.9 35.5-35.5 35.5L35.5 512c-19.6 0-35.5-15.9-35.5-35.5 0-8.1 2.7-15.9 7.8-22.2L64 384z\"]\n};\nvar faPrescriptionBottleMedical = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle-medical',\n  icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zM32 144l320 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-304zM160 248l0 40-40 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l40 0 0 40c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-40 40 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-40 0 0-40c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nvar faDrawPolygon = {\n  prefix: 'fas',\n  iconName: 'draw-polygon',\n  icon: [512, 512, [58055, \"vector-polygon\"], \"f5ee\", \"M64 0c23.7 0 44.4 12.9 55.4 32l273.1 0c11.1-19.1 31.7-32 55.4-32 35.3 0 64 28.7 64 64 0 34-26.5 61.8-60 63.9l-2.1 2.9-71.5 99.1c3.6 8 5.6 16.9 5.6 26.2s-2 18.2-5.6 26.2l2.2 3.1 69.3 96 2.1 2.9c33.5 2.1 60 29.9 60 63.9 0 35.3-28.7 64-64 64-23.7 0-44.4-12.9-55.4-32l-273.1 0c-11.1 19.1-31.7 32-55.4 32-35.3 0-64-28.7-64-64 0-23.7 12.9-44.4 32-55.4l0-273.1C12.9 108.4 0 87.7 0 64 0 28.7 28.7 0 64 0zM394.2 413.4l-65.5-90.6-2.2-3.1c-2.1 .2-4.3 .3-6.5 .3-35.3 0-64-28.7-64-64s28.7-64 64-64c2.2 0 4.4 .1 6.5 .3l67.7-93.7c-.6-.9-1.1-1.7-1.6-2.6L119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 273.1c9.7 5.6 17.8 13.7 23.4 23.4l273.1 0c.5-.9 1.1-1.8 1.6-2.6z\"]\n};\nvar faVectorPolygon = faDrawPolygon;\nvar faICursor = {\n  prefix: 'fas',\n  iconName: 'i-cursor',\n  icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3l0 95.7-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7S17 513.4 34.7 511.9l8-.7c34.1-2.8 64.2-18.9 85.4-42.9 21.2 24 51.2 40 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7l0-95.7 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-95.7c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7c-34.1 2.8-64.2 18.9-85.4 42.9-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nvar faHeartCirclePlus = {\n  prefix: 'fas',\n  iconName: 'heart-circle-plus',\n  icon: [576, 512, [], \"e500\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM432 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nvar faShieldDog = {\n  prefix: 'fas',\n  iconName: 'shield-dog',\n  icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8 35.3 0 64-28.7 64-64l0-64 44.2 0c12.1 0 23.2 6.8 28.6 17.7l7.2 14.3 64 0c8.8 0 16 7.2 16 16l0 32c0 44.2-35.8 80-80 80l-48 0 0 50.7c0 7.3-5.9 13.3-13.3 13.3-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4 0-2.8 .6-5.5 1.9-8l15-30zM160 160l48 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faGreaterThanEqual = {\n  prefix: 'fas',\n  iconName: 'greater-than-equal',\n  icon: [448, 512, [], \"f532\", \"M21.9 94.4C5.1 88.8-3.9 70.6 1.7 53.9S25.4 28.1 42.1 33.6l384 128C439.2 166 448 178.2 448 192s-8.8 26-21.9 30.4l-384 128c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5L314.8 192 21.9 94.4zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0z\"]\n};\nvar faEnvelopeOpen = {\n  prefix: 'fas',\n  iconName: 'envelope-open',\n  icon: [512, 512, [62135], \"f2b6\", \"M64.4 175.8L256 33.9 447.6 175.8 289.5 293c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64.4 175.8zM256-32c-12.1 0-23.8 3.9-33.5 11L25.9 124.7C9.6 136.8 0 155.8 0 176.1L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-239.9c0-20.3-9.6-39.4-25.9-51.4L289.5-21c-9.7-7.2-21.4-11-33.5-11z\"]\n};\nvar faMound = {\n  prefix: 'fas',\n  iconName: 'mound',\n  icon: [512, 512, [], \"e52d\", \"M112.4 179.2C142 127.7 196.8 96 256.2 96s114.2 31.7 143.9 83.2L508.7 368c12.3 21.3-3.1 48-27.7 48L31.5 416c-24.6 0-40-26.6-27.7-48L112.4 179.2z\"]\n};\nvar faVoicemail = {\n  prefix: 'fas',\n  iconName: 'voicemail',\n  icon: [640, 512, [], \"f897\", \"M144 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM263.8 320c15.3-22.9 24.2-50.4 24.2-80 0-79.5-64.5-144-144-144S0 160.5 0 240 64.5 384 144 384l352 0c79.5 0 144-64.5 144-144S575.5 96 496 96 352 160.5 352 240c0 29.6 8.9 57.1 24.2 80l-112.5 0zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faVest = {\n  prefix: 'fas',\n  iconName: 'vest',\n  icon: [448, 512, [], \"e085\", \"M200 464l0-170.1c0-3.9-.5-7.8-1.4-11.6L144.4 65.4C162.1 77.2 188.2 88 224 88s61.9-10.8 79.6-22.6L249.4 282.3c-1 3.8-1.4 7.7-1.4 11.6L248 464c0 26.5 21.5 48 48 48l104 0c26.5 0 48-21.5 48-48l0-193.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6L384 48c0-26.5-21.5-48-48-48l-3.5 0c-.3 0-.6 0-1 0-.6 0-1.2 0-1.8 0-18.8 0-34.1 9.7-44.1 18.8-9.3 8.4-28.5 21.2-61.7 21.2s-52.4-12.8-61.7-21.2c-10-9.1-25.3-18.8-44.1-18.8-.6 0-1.2 0-1.8 0-.3 0-.6 0-1 0L112 0C85.5 0 64 21.5 64 48l0 97.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5L0 464c0 26.5 21.5 48 48 48l104 0c26.5 0 48-21.5 48-48z\"]\n};\nvar faAudioDescription = {\n  prefix: 'fas',\n  iconName: 'audio-description',\n  icon: [512, 512, [], \"f29e\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm96 96l0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 48 0 0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104c0-35.3-28.7-64-64-64l-16 0c-35.3 0-64 28.7-64 64zm48 32l0-32c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 32-48 0zm152-96c-13.3 0-24 10.7-24 24l0 144c0 13.3 10.7 24 24 24l48 0c39.8 0 72-32.2 72-72l0-48c0-39.8-32.2-72-72-72l-48 0zm48 144l-24 0 0-96 24 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24z\"]\n};\nvar faW = {\n  prefix: 'fas',\n  iconName: 'w',\n  icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7L172.2 346.7 257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23L403.8 346.7 514 52.8c6.2-16.5 24.6-24.9 41.2-18.7S580.2 58.7 574 75.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nvar faEyeDropper = {\n  prefix: 'fas',\n  iconName: 'eye-dropper',\n  icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2l-101.6 101.6-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4 101.6-101.6c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6l0 42.4-26.6 39.9c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4l39.9-26.6 42.4 0c21.2 0 41.6-8.4 56.6-23.4l109.4-109.4-45.3-45.3-109.4 109.4c-3 3-7.1 4.7-11.3 4.7l-36.1 0 0-36.1c0-4.2 1.7-8.3 4.7-11.3l109.4-109.4-45.3-45.3-109.4 109.4z\"]\n};\nvar faEyeDropperEmpty = faEyeDropper;\nvar faEyedropper = faEyeDropper;\nvar faCircleXmark = {\n  prefix: 'fas',\n  iconName: 'circle-xmark',\n  icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM167 167c9.4-9.4 24.6-9.4 33.9 0l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faTrailer = {\n  prefix: 'fas',\n  iconName: 'trailer',\n  icon: [640, 512, [], \"e041\", \"M32 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-296.4 0c.2 2.6 .4 5.3 .4 8 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-2.7 .1-5.4 .4-8L96 416c-35.3 0-64-28.7-64-64L32 96zm408 16c-13.3 0-24 10.7-24 24l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24zM112 136l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24s-24 10.7-24 24zm176-24c-13.3 0-24 10.7-24 24l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24zM264 424a40 40 0 1 0 -80 0 40 40 0 1 0 80 0z\"]\n};\nvar faTurkishLiraSign = {\n  prefix: 'fas',\n  iconName: 'turkish-lira-sign',\n  icon: [448, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M160 32c17.7 0 32 14.3 32 32l0 43.6 121.4-34.7c12.7-3.6 26 3.7 29.7 16.5s-3.7 26-16.5 29.7l-134.6 38.5 0 46.1 121.4-34.7c12.7-3.6 26 3.7 29.7 16.5s-3.7 26-16.5 29.7l-134.6 38.5 0 162.5 72 0c53 0 96-43 96-96 0-17.7 14.3-32 32-32s32 14.3 32 32c0 88.4-71.6 160-160 160l-104 0c-17.7 0-32-14.3-32-32l0-176.2-25.4 7.3c-12.7 3.6-26-3.7-29.7-16.5s3.7-26 16.5-29.7l38.6-11 0-46.1-25.4 7.3c-12.7 3.6-26-3.7-29.7-16.5s3.7-26 16.5-29.7l38.6-11 0-61.9c0-17.7 14.3-32 32-32z\"]\n};\nvar faTry = faTurkishLiraSign;\nvar faTurkishLira = faTurkishLiraSign;\nvar faVolcano = {\n  prefix: 'fas',\n  iconName: 'volcano',\n  icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15 11.2-18.6 31.6-31 54.8-31s43.6 12.4 54.8 31c11.1-9.4 25.5-15 41.2-15 35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8 19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9 11.3 0 21.8-5.6 28-15l9.7-14.6-59-66.3c-9.1-10.2-22.2-16.1-35.9-16.1l-41.8 0c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4 4.7-3.5zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2l41.8 0c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7 0 28.8-23.4 52.2-52.2 52.2L52.2 512C23.4 512 0 488.6 0 459.8 0 447.1 4.7 434.7 13.2 425.2l150.2-169z\"]\n};\nvar faWandSparkles = {\n  prefix: 'fas',\n  iconName: 'wand-sparkles',\n  icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7l0 21.4c0 8.8-7.2 16-16 16l-15.8 0c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9c-6.3 7.1-15.3 11.1-24.8 11.1-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7c-6.2-6.2-9.7-14.7-9.7-23.5 0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9l0-27.6c0-8.8 7.2-16 16-16l34.6 0c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nvar faMicrophone = {\n  prefix: 'fas',\n  iconName: 'microphone',\n  icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96l0 128c0 53 43 96 96 96s96-43 96-96l0-128c0-53-43-96-96-96zM48 184c0-13.3-10.7-24-24-24S0 170.7 0 184l0 40c0 97.9 73.3 178.7 168 190.5l0 49.5-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-49.5c94.7-11.8 168-92.6 168-190.5l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 79.5-64.5 144-144 144S48 303.5 48 224l0-40z\"]\n};\nvar faCrown = {\n  prefix: 'fas',\n  iconName: 'crown',\n  icon: [576, 512, [128081], \"f521\", \"M313 87.2c9.2-7.3 15-18.6 15-31.2 0-22.1-17.9-40-40-40s-40 17.9-40 40c0 12.6 5.9 23.9 15 31.2L194.6 194.8c-10 15.7-31.3 19.6-46.2 8.4L88.9 158.7c4.5-6.4 7.1-14.3 7.1-22.7 0-22.1-17.9-40-40-40s-40 17.9-40 40c0 21.8 17.5 39.6 39.2 40L87.8 393.5c4.7 31.3 31.6 54.5 63.3 54.5l273.8 0c31.7 0 58.6-23.2 63.3-54.5L520.8 176c21.7-.4 39.2-18.2 39.2-40 0-22.1-17.9-40-40-40s-40 17.9-40 40c0 8.4 2.6 16.3 7.1 22.7l-59.4 44.6c-14.9 11.2-36.2 7.3-46.2-8.4L313 87.2z\"]\n};\nvar faTentArrowTurnLeft = {\n  prefix: 'fas',\n  iconName: 'tent-arrow-turn-left',\n  icon: [512, 512, [], \"e580\", \"M-.5 113l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 350.1 0c22.1 0 40 17.9 40 40l0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24c0-48.6-39.4-88-88-88l-350.1 0 31-31c9.4-9.4 9.4-24.6 0-33.9S80.9-2.3 71.5 7L-.5 79c-9.4 9.4-9.4 24.6 0 33.9zM60.3 292.6L37.1 476c-2.4 19.1 12.5 36 31.7 36l154.5 0c17.7 0 32-14.3 32-32l0-117.4c0-5.9 4.7-10.6 10.6-10.6 4 0 7.7 2.3 9.5 5.9l68.2 136.5c5.4 10.8 16.5 17.7 28.6 17.7l71.9 0c19.3 0 34.2-16.9 31.7-36L452.7 292.7c-1.2-9.7-6.9-18.4-15.3-23.4L271.9 169.9c-10.2-6.1-22.9-6.1-33.1 .1L75.4 269.3c-8.3 5.1-13.9 13.7-15.1 23.3z\"]\n};\nvar faTruckFast = {\n  prefix: 'fas',\n  iconName: 'truck-fast',\n  icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M64 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 32 50.7 0c17 0 33.3 6.7 45.3 18.7L621.3 192c12 12 18.7 28.3 18.7 45.3L640 384c0 35.3-28.7 64-64 64l-3.3 0c-10.4 36.9-44.4 64-84.7 64s-74.2-27.1-84.7-64l-102.6 0c-10.4 36.9-44.4 64-84.7 64s-74.2-27.1-84.7-64l-3.3 0c-35.3 0-64-28.7-64-64l0-48-40 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 240c-13.3 0-24-10.7-24-24s10.7-24 24-24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 144c-13.3 0-24-10.7-24-24S10.7 96 24 96l40 0zM576 288l0-50.7-45.3-45.3-50.7 0 0 96 96 0zM256 424a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm232 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faShippingFast = faTruckFast;\nvar faUserPen = {\n  prefix: 'fas',\n  iconName: 'user-pen',\n  icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M256.1 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56c-98.5 0-178.3 79.8-178.3 178.3 0 16.4 13.3 29.7 29.7 29.7l196.5 0 10.9-54.5c4.3-21.7 15-41.6 30.6-57.2l67.3-67.3c-28-18.3-61.4-28.9-97.4-28.9l-59.4 0zM332.3 466.9l-11.9 59.6c-.2 .9-.3 1.9-.3 2.9 0 8 6.5 14.6 14.6 14.6 1 0 1.9-.1 2.9-.3l59.6-11.9c12.4-2.5 23.8-8.6 32.7-17.5l118.9-118.9-80-80-118.9 118.9c-8.9 8.9-15 20.3-17.5 32.7zm267.8-123c22.1-22.1 22.1-57.9 0-80s-57.9-22.1-80 0l-28.8 28.8 80 80 28.8-28.8z\"]\n};\nvar faUserEdit = faUserPen;\nvar faUserClock = {\n  prefix: 'fas',\n  iconName: 'user-clock',\n  icon: [576, 512, [], \"f4fd\", \"M224 8a120 120 0 1 1 0 240 120 120 0 1 1 0-240zM194.3 304l59.4 0c3.9 0 7.9 .1 11.8 .4-16.2 28.2-25.5 60.8-25.5 95.6 0 41.8 13.4 80.5 36 112L45.7 512C29.3 512 16 498.7 16 482.3 16 383.8 95.8 304 194.3 304zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faShower = {\n  prefix: 'fas',\n  iconName: 'shower',\n  icon: [512, 512, [128703], \"f2cc\", \"M64 131.9c0-19.8 16.1-35.9 35.9-35.9 9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.1-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32 44.7 32 0 76.7 0 131.9L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-316.1zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSquareCaretUp = {\n  prefix: 'fas',\n  iconName: 'square-caret-up',\n  icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9S337.5 320 328 320l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faMapLocation = {\n  prefix: 'fas',\n  iconName: 'map-location',\n  icon: [640, 512, [\"map-marked\"], \"f59f\", \"M576 48c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4L413.5 77.5 234.1 17.6c-8.1-2.7-16.8-2.1-24.4 1.7l-128 64C70.8 88.8 64 99.9 64 112l0 352c0 11.1 5.7 21.4 15.2 27.2s21.2 6.4 31.1 1.4l116.1-58.1 173.3 57.8c-4.3-6.4-8.5-13.1-12.6-19.9-11-18.3-21.9-39.3-30-61.8l-101.2-33.7 0-284.5 128 42.7 0 99.3c31-35.8 77-58.4 128-58.4 22.6 0 44.2 4.4 64 12.5L576 48zM392 341.9c0 68.9 64.1 150.4 98.6 189.3 11.6 13 31.3 13 42.9 0 34.5-38.9 98.6-120.4 98.6-189.3 0-65.1-53.7-117.9-120-117.9S392 276.8 392 341.9z\"]\n};\nvar faMapMarked = faMapLocation;\nvar faPenFancy = {\n  prefix: 'fas',\n  iconName: 'pen-fancy',\n  icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1c15-17.2 36.7-27.1 59.6-27.1 43.6 0 79 35.4 79 79 0 22.8-9.9 44.6-27.1 59.6L283.7 313.8 273 303 209 239 198.2 228.3 373.5 27.1zM161.1 259C162 260 188 286 239 337l13.9 13.9-17.1 74.2c-3.9 17.1-16.9 30.7-33.8 35.4l-169.8 47.5 92.3-92.3c1.2 .1 2.3 .2 3.5 .2 17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32c0 1.2 .1 2.4 .2 3.5L3.9 479.8 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8L161.1 259z\"]\n};\nvar faEuroSign = {\n  prefix: 'fas',\n  iconName: 'euro-sign',\n  icon: [448, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M73.3 192C100.8 99.5 186.5 32 288 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-65.6 0-122 39.5-146.7 96L272 192c13.3 0 24 10.7 24 24s-10.7 24-24 24l-143.2 0c-.5 5.3-.8 10.6-.8 16s.3 10.7 .8 16L272 272c13.3 0 24 10.7 24 24s-10.7 24-24 24l-130.7 0c24.7 56.5 81.1 96 146.7 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-101.5 0-187.2-67.5-214.7-160L40 320c-13.3 0-24-10.7-24-24s10.7-24 24-24l24.6 0c-.7-10.5-.7-21.5 0-32L40 240c-13.3 0-24-10.7-24-24s10.7-24 24-24l33.3 0z\"]\n};\nvar faEur = faEuroSign;\nvar faEuro = faEuroSign;\nvar faHouseCircleXmark = {\n  prefix: 'fas',\n  iconName: 'house-circle-xmark',\n  icon: [640, 512, [], \"e50b\", \"M496 544a144 144 0 1 1 0-288 144 144 0 1 1 0 288zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l217.6 202c-10.2-1.7-20.7-2.6-31.3-2.6-78.6 0-146.2 47.2-175.9 114.8-5-1.8-10.5-2.8-16.1-2.8l-32 0c-26.5 0-48 21.5-48 48l0 96 90.9 0c6.1 17.3 14.6 33.4 25.2 48L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM555.3 340.7c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l36.7 36.7-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l36.7-36.7 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-36.7-36.7 36.7-36.7c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faLiraSign = {\n  prefix: 'fas',\n  iconName: 'lira-sign',\n  icon: [384, 512, [8356], \"f195\", \"M84.9 256l-28.4 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l11.6 0C53.2 124.7 116.8 42 207.6 42l8.2 0c33.6 0 66.2 11.3 92.5 32.2l16.1 12.7c13.9 11 16.2 31.1 5.2 45s-31.1 16.2-45 5.2l-16.1-12.7c-15-11.9-33.6-18.4-52.8-18.4l-8.2 0c-53.8 0-90.1 52.9-73.5 102l162.4 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-145.1 0c2.3 10.6 3.6 21.3 3.9 32l141.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L150 336c-4.8 18.6-12.6 36.5-23.6 52.9l-18.1 27.1 212.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-272 0c-11.8 0-22.6-6.5-28.2-16.9s-5-23 1.6-32.9l51.2-76.8c3.7-5.6 6.9-11.4 9.4-17.4l-26 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l34.8 0c-.5-10.8-2.6-21.6-6.4-32z\"]\n};\nvar faYenSign = {\n  prefix: 'fas',\n  iconName: 'yen-sign',\n  icon: [384, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M74.9 46.7c-9.6-14.9-29.4-19.2-44.2-9.6S11.5 66.4 21.1 81.3L143.7 272 88 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 0 32-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0 0-32 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-55.7 0 122.6-190.7c9.6-14.9 5.3-34.7-9.6-44.2s-34.7-5.3-44.2 9.6L192 228.8 74.9 46.7z\"]\n};\nvar faCny = faYenSign;\nvar faJpy = faYenSign;\nvar faRmb = faYenSign;\nvar faYen = faYenSign;\nvar faBoxOpen = {\n  prefix: 'fas',\n  iconName: 'box-open',\n  icon: [640, 512, [], \"f49e\", \"M560.3 237.2c10.4 11.8 28.3 14.4 41.8 5.5 14.7-9.8 18.7-29.7 8.9-44.4l-48-72c-2.8-4.2-6.6-7.7-11.1-10.2L351.4 4.7c-19.3-10.7-42.8-10.7-62.2 0L88.8 116c-5.4 3-9.7 7.4-12.6 12.8L27.7 218.7c-12.6 23.4-3.8 52.5 19.6 65.1l33 17.7 0 53.3c0 23 12.4 44.3 32.4 55.7l176 99.7c19.6 11.1 43.5 11.1 63.1 0l176-99.7c20.1-11.4 32.4-32.6 32.4-55.7l0-117.5zm-240-9.8L170.2 144 320.3 60.6 470.4 144 320.3 227.4zm-41.5 50.2l-21.3 46.2-165.8-88.8 25.4-47.2 161.7 89.8z\"]\n};\nvar faTruckField = {\n  prefix: 'fas',\n  iconName: 'truck-field',\n  icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64l224 0c23.7 0 44.4 12.9 55.4 32l40.4 0c32.4 0 61.6 19.6 74 49.5l43.8 106.3 1.7 4.2 24.7 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-.4 0c.2 2.6 .4 5.3 .4 8 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-2.7 .1-5.4 .4-8l-144.7 0c.2 2.6 .4 5.3 .4 8 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-3.6 .2-7.1 .6-10.5-19-6.4-32.6-24.4-32.6-45.5l0-48c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-32zm352 32l0 96 82.1 0-35.4-86.1c-2.5-6-8.3-9.9-14.8-9.9L384 128zM192 392a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm280 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faLocationPinLock = {\n  prefix: 'fas',\n  iconName: 'location-pin-lock',\n  icon: [512, 512, [], \"e51f\", \"M0 188.6C0 84.4 86 0 192 0 294.1 0 377.6 78.3 383.6 177 320.7 185.1 272 238.8 272 304l0 24.4c-19.6 17.6-32 43.1-32 71.5l0 75.7c-9.9 11.6-18.9 21.7-26.4 29.8-11.8 12.8-31.5 12.8-43.3 0-50.2-54.5-170.4-197.5-170.4-316.8zM192 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm240 48.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM288 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nvar faPersonPraying = {\n  prefix: 'fas',\n  iconName: 'person-praying',\n  icon: [384, 512, [128720, \"pray\"], \"f683\", \"M320 64a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM200.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36c-15.6-21.5-40.6-34.2-67.2-34.2-30.9 0-59.2 17.1-73.6 44.4L47.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L126.6 432 40 432c-22.1 0-40 17.9-40 40s17.9 40 40 40l208 0c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7l-116.1-85.8 45-90z\"]\n};\nvar faPray = faPersonPraying;\nvar faClipboardList = {\n  prefix: 'fas',\n  iconName: 'clipboard-list',\n  icon: [384, 512, [], \"f46d\", \"M311.4 32l8.6 0c35.3 0 64 28.7 64 64l0 352c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l8.6 0C83.6 12.9 104.3 0 128 0L256 0c23.7 0 44.4 12.9 55.4 32zM248 112c13.3 0 24-10.7 24-24s-10.7-24-24-24L136 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0zM128 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32 0c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0c-13.3 0-24 10.7-24 24zm0 128c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0c-13.3 0-24 10.7-24 24zM96 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSackDollar = {\n  prefix: 'fas',\n  iconName: 'sack-dollar',\n  icon: [512, 512, [128176], \"f81d\", \"M328 112l-144 0-37.3-74.5c-1.8-3.6-2.7-7.6-2.7-11.6 0-14.3 11.6-25.9 25.9-25.9L342.1 0c14.3 0 25.9 11.6 25.9 25.9 0 4-.9 8-2.7 11.6L328 112zM169.6 160l172.8 0 48.7 40.6C457.6 256 496 338 496 424.5 496 472.8 456.8 512 408.5 512l-305.1 0C55.2 512 16 472.8 16 424.5 16 338 54.4 256 120.9 200.6L169.6 160zM260 224c-11 0-20 9-20 20l0 4c-28.8 .3-52 23.7-52 52.5 0 25.7 18.5 47.6 43.9 51.8l41.7 7c6 1 10.4 6.2 10.4 12.3 0 6.9-5.6 12.5-12.5 12.5L216 384c-11 0-20 9-20 20s9 20 20 20l24 0 0 4c0 11 9 20 20 20s20-9 20-20l0-4.7c25-4.1 44-25.7 44-51.8 0-25.7-18.5-47.6-43.9-51.8l-41.7-7c-6-1-10.4-6.2-10.4-12.3 0-6.9 5.6-12.5 12.5-12.5l47.5 0c11 0 20-9 20-20s-9-20-20-20l-8 0 0-4c0-11-9-20-20-20z\"]\n};\nvar faMountainSun = {\n  prefix: 'fas',\n  iconName: 'mountain-sun',\n  icon: [576, 512, [], \"e52f\", \"M256.5 0c14.7 0 28.2 8.1 35.2 21l216 400c6.7 12.4 6.4 27.4-.8 39.5-7.2 12.1-20.3 19.5-34.3 19.5l-432 0c-14.1 0-27.1-7.4-34.3-19.5s-7.5-27.1-.8-39.5l216-400 2.9-4.6C231.7 6.2 243.6 0 256.5 0zM170.4 249.9l26.8 26.8c6.2 6.2 16.4 6.2 22.6 0l43.3-43.3c6-6 14.1-9.4 22.6-9.4l42.8 0-72.1-133.5-86.1 159.4zM496.5 160a80 80 0 1 1 0-160 80 80 0 1 1 0 160z\"]\n};\nvar faArrowUpWideShort = {\n  prefix: 'fas',\n  iconName: 'arrow-up-wide-short',\n  icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96zM320 480l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSortAmountUp = faArrowUpWideShort;\nvar faUsersLine = {\n  prefix: 'fas',\n  iconName: 'users-line',\n  icon: [576, 512, [], \"e592\", \"M224 128a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM176 336c0-61.9 50.1-112 112-112s112 50.1 112 112l0 8c0 13.3-10.7 24-24 24l-176 0c-13.3 0-24-10.7-24-24l0-8zM392 144a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm27.2 100.4c9.1-2.9 18.8-4.4 28.8-4.4 53 0 96 43 96 96l0 10.7c0 11.8-9.6 21.3-21.3 21.3l-78.8 0c2.7-7.5 4.1-15.6 4.1-24l0-8c0-34.1-10.6-65.7-28.8-91.6zm-262.4 0c-18.2 26-28.8 57.5-28.8 91.6l0 8c0 8.4 1.4 16.5 4.1 24l-78.8 0C41.6 368 32 358.4 32 346.7L32 336c0-53 43-96 96-96 10 0 19.7 1.5 28.8 4.4zM72 144a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM0 440c0-13.3 10.7-24 24-24l528 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 464c-13.3 0-24-10.7-24-24z\"]\n};\nvar faStarOfDavid = {\n  prefix: 'fas',\n  iconName: 'star-of-david',\n  icon: [512, 512, [10017], \"f69a\", \"M415.9 311.9l-27.8 48.1 55.7 0-27.8-48.1zM383.6 256l-60.2-104-134.8 0-60.2 104 60.2 104 134.8 0 60.2-104zm64.7 0l58.4 100.9c3.5 6 5.3 12.8 5.3 19.7 0 21.7-17.6 39.4-39.4 39.4l-117 0-61.3 105.8C286.5 535.6 271.8 544 256 544s-30.5-8.4-38.4-22.2l-61.3-105.8-117 0c-21.7 0-39.4-17.6-39.4-39.4 0-6.9 1.8-13.7 5.3-19.7L63.7 256 5.3 155.1C1.8 149.1 0 142.3 0 135.4 0 113.6 17.6 96 39.4 96l117 0 61.3-105.8C225.5-23.6 240.2-32 256-32s30.5 8.4 38.4 22.2l61.3 105.8 117 0c21.7 0 39.4 17.6 39.4 39.4 0 6.9-1.8 13.7-5.3 19.7L448.3 256zM388.1 152l27.8 48.1 27.8-48.1-55.7 0zM291 96l-35-60.4-35 60.4 70 0zM123.9 152l-55.7 0 27.8 48.1 27.8-48.1zM96.1 311.9l-27.8 48.1 55.7 0-27.8-48.1zM221 416l35 60.4 35-60.4-70 0z\"]\n};\nvar faNotesMedical = {\n  prefix: 'fas',\n  iconName: 'notes-medical',\n  icon: [512, 512, [], \"f481\", \"M96 352c0 35.3 28.7 64 64 64l181.5 0c17 0 33.3-6.7 45.3-18.7L493.3 290.7c12-12 18.7-28.3 18.7-45.3L512 64c0-35.3-28.7-64-64-64L160 0C124.7 0 96 28.7 96 64l0 288zM288 112l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 448c0 35.3 28.7 64 64 64l264 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L64 464c-8.8 0-16-7.2-16-16l0-328z\"]\n};\nvar faAustralSign = {\n  prefix: 'fas',\n  iconName: 'austral-sign',\n  icon: [448, 512, [], \"e0a9\", \"M266.5 240l-85 0 42.5-106.4 42.5 106.4zm68.9 0L262.9 58.3C256.5 42.4 241.1 32 224 32s-32.5 10.4-38.9 26.3L112.6 240 32 240c-13.3 0-24 10.7-24 24s10.7 24 24 24l61.4 0-19.2 48-42.3 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l23.1 0-20.8 52.1c-6.6 16.4 1.4 35 17.9 41.6s35-1.4 41.6-17.9l30.3-75.9 200 0 30.3 75.9c6.6 16.4 25.2 24.4 41.6 17.9s24.4-25.2 17.9-41.6L392.9 384 416 384c13.3 0 24-10.7 24-24s-10.7-24-24-24l-42.3 0-19.2-48 61.4 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80.6 0zm-49.7 48l19.2 48-161.6 0 19.2-48 123.3 0z\"]\n};\nvar faClipboardUser = {\n  prefix: 'fas',\n  iconName: 'clipboard-user',\n  icon: [384, 512, [], \"f7f3\", \"M311.4 32l8.6 0c35.3 0 64 28.7 64 64l0 352c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l8.6 0C83.6 12.9 104.3 0 128 0L256 0c23.7 0 44.4 12.9 55.4 32zM248 112c13.3 0 24-10.7 24-24s-10.7-24-24-24L136 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0zM192 344a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM98.3 413c-12.9 15.6 2.2 35 22.4 35l142.5 0c20.2 0 35.3-19.4 22.4-35-14.7-17.7-36.9-29-61.7-29l-64 0c-24.8 0-47 11.3-61.7 29z\"]\n};\nvar faFileImage = {\n  prefix: 'fas',\n  iconName: 'file-image',\n  icon: [384, 512, [128443], \"f1c5\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM128 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM92.6 448l198.8 0c15.8 0 28.6-12.8 28.6-28.6 0-7.3-2.8-14.4-7.9-19.7L215.3 297.9c-6-6.3-14.4-9.9-23.2-9.9l-.3 0c-8.8 0-17.1 3.6-23.2 9.9L71.9 399.7C66.8 405 64 412.1 64 419.4 64 435.2 76.8 448 92.6 448z\"]\n};\nvar faSquareCaretRight = {\n  prefix: 'fas',\n  iconName: 'square-caret-right',\n  icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4S160 369.5 160 360l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faVial = {\n  prefix: 'fas',\n  iconName: 'vial',\n  icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L306.7 64 28.1 342.6C10.1 360.6 0 385 0 410.5L0 416c0 53 43 96 96 96l5.5 0c25.5 0 49.9-10.1 67.9-28.1l278.6-278.6 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zM205.3 256l146.7-146.7 50.7 50.7-96 96-101.5 0z\"]\n};\nvar faHelicopter = {\n  prefix: 'fas',\n  iconName: 'helicopter',\n  icon: [576, 512, [128641], \"f533\", \"M176 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l152 0 0 48-220.8 0-32.8-39.4C69.9 83.2 63.1 80 56 80L24 80C15.7 80 8 84.3 3.6 91.4s-4.8 15.9-1.1 23.4l48 96C54.6 218.9 62.9 224 72 224l107.8 0 104 143.1c15.1 20.7 39.1 32.9 64.7 32.9l75.5 0c75.1 0 136-60.9 136-136S499.1 128 424 128l-48 0 0-48 152 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L176 32zM376 192l48 0c39.8 0 72 32.2 72 72s-32.2 72-72 72l-48 0 0-144zM552 416c-13.3 0-24 10.7-24 24 0 4.4-3.6 8-8 8l-272 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l272 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24z\"]\n};\nvar faMitten = {\n  prefix: 'fas',\n  iconName: 'mitten',\n  icon: [448, 512, [], \"f7b5\", \"M352 384L64 384 5.4 178.9C1.8 166.4 0 153.4 0 140.3 0 62.8 62.8 0 140.3 0l3.4 0c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192l2.8 0c34.9 0 63.3 28.3 63.3 63.3 0 15.9-6 31.2-16.8 42.9L352 384zM32 464c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 16c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-16z\"]\n};\nvar faGasPump = {\n  prefix: 'fas',\n  iconName: 'gas-pump',\n  icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0L256 0c35.3 0 64 28.7 64 64l0 192 8 0c48.6 0 88 39.4 88 88l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-154c-27.6-7.1-48-32.2-48-62l0-59.5-25.8-28.3c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l71.7 78.8c9.4 10.3 14.6 23.7 14.6 37.7L512 376c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-32c0-22.1-17.9-40-40-40l-8 0 0 161.4c9.3 3.3 16 12.2 16 22.6 0 13.3-10.7 24-24 24L40 512c-13.3 0-24-10.7-24-24 0-10.5 6.7-19.3 16-22.6L32 64zM96 80l0 96c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16L112 64c-8.8 0-16 7.2-16 16z\"]\n};\nvar faEnvelopeCircleCheck = {\n  prefix: 'fas',\n  iconName: 'envelope-circle-check',\n  icon: [640, 512, [], \"e4e8\", \"M64 112c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 81.4c-24.4-11.2-51.4-17.4-80-17.4-87.7 0-161.7 58.8-184.7 139.2-7.1-1.3-14.1-4.2-20.1-8.8l-208-156C71.1 141.3 64 127.1 64 112zM304 368c0 28.6 6.2 55.6 17.4 80L128 448c-35.3 0-64-28.7-64-64l0-188 198.4 148.8c12.6 9.4 26.9 15.4 41.7 17.9 0 1.8-.1 3.5-.1 5.3zm48 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n};\nvar faPersonSkating = {\n  prefix: 'fas',\n  iconName: 'person-skating',\n  icon: [512, 512, [\"skating\"], \"f7c5\", \"M368 56a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM128 128c0-17.7 14.3-32 32-32l150.1 0c49.9 0 74.9 60.3 39.6 95.6l-63.9 63.9 69.8 31c17.3 7.7 28.5 24.9 28.5 43.9l0 85.6c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-75.2-82.4-36.6c-41-18.2-51-72-19.3-103.7l40.4-40.4-98.7 0c-17.7 0-32-14.3-32-32zM89.4 361.4l75.9-75.9c7.7 19.7 21.6 37.3 41 49.6l-71.6 71.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm346.5 87.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4L304 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l88.8 0c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM143.2 486.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L12.7 419.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nvar faSkating = faPersonSkating;\nvar faSun = {\n  prefix: 'fas',\n  iconName: 'sun',\n  icon: [576, 512, [9728], \"f185\", \"M288-32c8.4 0 16.3 4.4 20.6 11.7L364.1 72.3 468.9 46c8.2-2 16.9 .4 22.8 6.3S500 67 498 75.1l-26.3 104.7 92.7 55.5c7.2 4.3 11.7 12.2 11.7 20.6s-4.4 16.3-11.7 20.6L471.7 332.1 498 436.8c2 8.2-.4 16.9-6.3 22.8S477 468 468.9 466l-104.7-26.3-55.5 92.7c-4.3 7.2-12.2 11.7-20.6 11.7s-16.3-4.4-20.6-11.7L211.9 439.7 107.2 466c-8.2 2-16.8-.4-22.8-6.3S76 445 78 436.8l26.2-104.7-92.6-55.5C4.4 272.2 0 264.4 0 256s4.4-16.3 11.7-20.6L104.3 179.9 78 75.1c-2-8.2 .3-16.8 6.3-22.8S99 44 107.2 46l104.7 26.2 55.5-92.6 1.8-2.6c4.5-5.7 11.4-9.1 18.8-9.1zm0 144a144 144 0 1 0 0 288 144 144 0 1 0 0-288zm0 240a96 96 0 1 1 0-192 96 96 0 1 1 0 192z\"]\n};\nvar faBaseball = {\n  prefix: 'fas',\n  iconName: 'baseball',\n  icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M232.4 1.1c-122.2 11.4-219.5 108.7-230.9 230.9 16.2-.1 32-1.8 47.2-5 13-2.7 25.7 5.5 28.4 18.5s-5.5 25.7-18.5 28.4c-18.4 3.9-37.6 6-57.1 6.1 11.4 122.2 108.7 219.5 230.9 230.9 .1-19.5 2.2-38.7 6.1-57.1 2.7-13 15.5-21.3 28.4-18.5s21.3 15.5 18.5 28.4c-3.2 15.2-4.9 31-5 47.2 122.2-11.4 219.5-108.7 230.9-230.9-16.2 .1-32 1.8-47.2 5-13 2.7-25.7-5.5-28.4-18.5s5.5-25.7 18.5-28.4c18.4-3.9 37.6-6 57.1-6.1-11.4-122.2-108.7-219.5-230.9-230.9-.1 19.5-2.2 38.7-6.1 57.1-2.7 13-15.5 21.3-28.4 18.5s-21.3-15.5-18.5-28.4c3.2-15.2 4.9-31 5-47.2zm2.8 151.4c-21.4 32.9-49.5 60.9-82.3 82.3-11.1 7.2-26 4.1-33.2-7s-4.1-26 7-33.2c27.2-17.7 50.5-41 68.3-68.3 7.2-11.1 22.1-14.3 33.2-7s14.3 22.1 7 33.2zM393.1 284.2c7.2 11.1 4.1 26-7 33.2-27.2 17.7-50.5 41-68.3 68.3-7.2 11.1-22.1 14.3-33.2 7s-14.3-22.1-7-33.2c21.4-32.9 49.5-60.9 82.3-82.3 11.1-7.2 26-4.1 33.2 7z\"]\n};\nvar faBaseballBall = faBaseball;\nvar faImage = {\n  prefix: 'fas',\n  iconName: 'image',\n  icon: [448, 512, [], \"f03e\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 80a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM272 224c8.4 0 16.1 4.4 20.5 11.5l88 144c4.5 7.4 4.7 16.7 .5 24.3S368.7 416 360 416L88 416c-8.9 0-17.2-5-21.3-12.9s-3.5-17.5 1.6-24.8l56-80c4.5-6.4 11.8-10.2 19.7-10.2s15.2 3.8 19.7 10.2l26.4 37.8 61.4-100.5c4.4-7.1 12.1-11.5 20.5-11.5z\"]\n};\nvar faNotdef = {\n  prefix: 'fas',\n  iconName: 'notdef',\n  icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7 64 390.3zM102.5 448L281.5 448 192 313.7 102.5 448zm128-192L320 390.3 320 121.7 230.5 256zM281.5 64L102.5 64 192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n};\nvar faBasketball = {\n  prefix: 'fas',\n  iconName: 'basketball',\n  icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M92.7 58.8l78.4 78.4c18.2-25 28.9-55.9 28.9-89.2 0-14.1-1.9-27.7-5.5-40.6-38 9.4-72.6 27.2-101.8 51.4zM58.8 92.7c-24.2 29.2-42 63.8-51.4 101.8 12.9 3.6 26.5 5.5 40.6 5.5 33.3 0 64.1-10.7 89.2-28.9L58.8 92.7zM256 0c-4.6 0-9.2 .1-13.7 .4 3.7 15.3 5.7 31.2 5.7 47.6 0 46.6-15.9 89.4-42.6 123.4L256 222.1 419.3 58.8C374.9 22.1 318.1 0 256 0zM48 248c-16.4 0-32.4-2-47.6-5.7-.2 4.5-.4 9.1-.4 13.7 0 62.1 22.1 118.9 58.8 163.3L222.1 256 171.4 205.4C137.4 232.1 94.6 248 48 248zm463.6 21.7c.2-4.5 .4-9.1 .4-13.7 0-62.1-22.1-118.9-58.8-163.3L289.9 256 340.6 306.6c34-26.7 76.9-42.6 123.4-42.6 16.4 0 32.4 2 47.6 5.7zm-7.1 47.8c-12.9-3.6-26.5-5.5-40.6-5.5-33.3 0-64.1 10.7-89.2 28.9l78.4 78.4c24.2-29.2 42-63.8 51.4-101.8zM340.9 374.8c-18.2 25-28.9 55.9-28.9 89.2 0 14.1 1.9 27.7 5.5 40.6 38-9.4 72.6-27.2 101.8-51.4l-78.4-78.4zm-34.3-34.3L256 289.9 92.7 453.2c44.3 36.7 101.2 58.8 163.3 58.8 4.6 0 9.2-.1 13.7-.4-3.7-15.3-5.7-31.2-5.7-47.6 0-46.6 15.9-89.4 42.6-123.4z\"]\n};\nvar faBasketballBall = faBasketball;\nvar faPencil = {\n  prefix: 'fas',\n  iconName: 'pencil',\n  icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M36.4 353.2c4.1-14.6 11.8-27.9 22.6-38.7l181.2-181.2 33.9-33.9c16.6 16.6 51.3 51.3 104 104l33.9 33.9-33.9 33.9-181.2 181.2c-10.7 10.7-24.1 18.5-38.7 22.6L30.4 510.6c-8.3 2.3-17.3 0-23.4-6.2S-1.4 489.3 .9 481L36.4 353.2zm55.6-3.7c-4.4 4.7-7.6 10.4-9.3 16.6l-24.1 86.9 86.9-24.1c6.4-1.8 12.2-5.1 17-9.7L91.9 349.5zm354-146.1c-16.6-16.6-51.3-51.3-104-104L308 65.5C334.5 39 349.4 24.1 352.9 20.6 366.4 7 384.8-.6 404-.6S441.6 7 455.1 20.6l35.7 35.7C504.4 69.9 512 88.3 512 107.4s-7.6 37.6-21.2 51.1c-3.5 3.5-18.4 18.4-44.9 44.9z\"]\n};\nvar faPencilAlt = faPencil;\nvar faPersonWalkingArrowLoopLeft = {\n  prefix: 'fas',\n  iconName: 'person-walking-arrow-loop-left',\n  icon: [640, 512, [], \"e551\", \"M160 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM73.4 227.9l22.6-22.6 0 69.3c0 28 12.2 54.7 33.5 72.9l71.4 61.2c5.9 5.1 9.8 12.1 10.9 19.8l12.6 88.1c2.5 17.5 18.7 29.7 36.2 27.2s29.7-18.7 27.2-36.2l-12.6-88.1c-3.3-23.1-14.9-44.1-32.6-59.3l-34.5-29.6 0-115.2 3.8 4.7c18.2 22.8 45.8 36 75 36l33.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-33.2 0c-9.7 0-18.9-4.4-25-12l-17.9-22.4c-23-28.8-57.9-45.6-94.8-45.6-32.2 0-63.1 12.8-85.8 35.6L28.1 182.6C10.1 200.6 0 225 0 250.5L0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-37.5c0-8.5 3.4-16.6 9.4-22.6zM85.8 407.3c-1.5 5.2-4.3 10-8.1 13.8L9.4 489.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.3-68.3c11.5-11.5 19.9-25.8 24.4-41.5l2.2-7.6-46-39.4c-2.5-2.2-5-4.4-7.4-6.8L85.8 407.3zM359 335c-9.4 9.4-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 102.1 0c1.2 0 2.4-.1 3.5-.3 56.1-3.9 100.5-50.6 100.5-107.7 0-59.6-48.4-108-108-108l-92 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l92 0c33.1 0 60 26.9 60 60s-26.9 60-60 60l-98.1 0 31-31c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-72 72z\"]\n};\nvar faDiceSix = {\n  prefix: 'fas',\n  iconName: 'dice-six',\n  icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faAnglesDown = {\n  prefix: 'fas',\n  iconName: 'angles-down',\n  icon: [384, 512, [\"angle-double-down\"], \"f103\", \"M214.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 402.7 329.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 210.7 329.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faAngleDoubleDown = faAnglesDown;\nvar faSyringe = {\n  prefix: 'fas',\n  iconName: 'syringe',\n  icon: [576, 512, [128137], \"f48e\", \"M497.5-17c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l15 15-46.1 46.1-63-63c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l7 7-78.1 78.1 41 41c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-41-41-46.1 46.1 41 41c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-41-41-37.7 37.7c-10.5 10.5-16.4 24.7-16.4 39.6l0 88.8-57 57c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57 88.8 0c14.9 0 29.1-5.9 39.6-16.4l229.7-229.7 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-63-63 46.1-46.1 15 15c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-64-64z\"]\n};\nvar faWheatAwn = {\n  prefix: 'fas',\n  iconName: 'wheat-awn',\n  icon: [576, 512, [\"wheat-alt\"], \"e2cd\", \"M79.7 234.6c6.2-4.1 14.7-3.4 20.1 2.1l46.1 46.1 6.1 6.7c19.7 23.8 26.3 55 19.2 83.9 31.7-7.7 66.2 1 90.6 25.3l46.1 46.1c6.2 6.2 6.2 16.4 0 22.6l-7.4 7.4c-37.5 37.5-98.3 37.5-135.8 0L134.1 444.3 49.4 529c-9.4 9.4-24.5 9.4-33.9 0-9.4-9.4-9.4-24.6 0-33.9l84.7-84.7-30.5-30.5c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1zm104-104c6.2-4.1 14.7-3.4 20.1 2.1l46.1 46.1 6.1 6.7c19.7 23.8 26.3 55 19.2 83.9 31.7-7.7 66.2 1 90.6 25.3l46.1 46.1c6.2 6.2 6.2 16.4 0 22.6l-7.4 7.4c-37.5 37.5-98.3 37.5-135.8 0l-94.9-94.9c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1zM495.2 15c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.2L529.2 49 414.7 163.4c7.7 1 15.2 3 22.5 5.9L495.5 111c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.1l-1.7 1.8-52.7 52.7 39 39c6.2 6.2 6.2 16.4 0 22.6l-7.4 7.4c-37.5 37.5-98.3 37.5-135.8 0l-94.9-94.9c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1c6.2-4.1 14.7-3.4 20.1 2.1l39 39 52.7-52.7c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.1l-1.7 1.8-58.3 58.3c2.8 7.1 4.7 14.5 5.7 22.1L495.2 15z\"]\n};\nvar faWheatAlt = faWheatAwn;\nvar faPlaneUp = {\n  prefix: 'fas',\n  iconName: 'plane-up',\n  icon: [512, 512, [], \"e22d\", \"M200 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 173.6 159.2c6.6 6.1 10.4 14.6 10.4 23.6l0 43.7c0 10.9-10.7 18.6-21.1 15.2l-162.9-54.3 0 99.7 66 52.8c3.8 3 6 7.6 6 12.5l0 19.8c0 10.4-9.8 18-19.9 15.5L256 512 147.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C26.7 396.4 16 388.7 16 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L200 151.3 200 24z\"]\n};\nvar faAlignCenter = {\n  prefix: 'fas',\n  iconName: 'align-center',\n  icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z\"]\n};\nvar faHockeyPuck = {\n  prefix: 'fas',\n  iconName: 'hockey-puck',\n  icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96 256 43 256 96-114.6 96-256 96zM0 352L0 242.7c16.9 12.3 37 22.2 58.1 30.1 53 19.9 123 31.2 197.9 31.2s144.9-11.3 197.9-31.2c21.2-7.9 41.2-17.8 58.1-30.1L512 352c0 53-114.6 96-256 96S0 405 0 352z\"]\n};\nvar faCircleArrowLeft = {\n  prefix: 'fas',\n  iconName: 'circle-arrow-left',\n  icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM135 239l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-39 39 150.1 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-150.1 0 39 39c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faArrowCircleLeft = faCircleArrowLeft;\nvar faPlugCircleBolt = {\n  prefix: 'fas',\n  iconName: 'plug-circle-bolt',\n  icon: [640, 512, [], \"e55b\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM352 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm177.4-77c-5.8-4.2-13.8-4-19.4 .5l-80 64c-5.3 4.2-7.4 11.4-5.1 17.8S433.2 416 440 416l32.9 0-15.9 42.4c-2.5 6.7-.2 14.3 5.6 18.6s13.8 4 19.4-.5l80-64c5.3-4.2 7.4-11.4 5.1-17.8S558.8 384 552 384l-32.9 0 15.9-42.4c2.5-6.7 .2-14.3-5.6-18.6z\"]\n};\nvar faRestroom = {\n  prefix: 'fas',\n  iconName: 'restroom',\n  icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-154.8c-8.1 9.2-21.1 13.2-33.5 9.4-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C44.4 156.9 83.6 128 128 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1-12.4 3.9-25.4-.2-33.5-9.4L200 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM320 0c13.3 0 24 10.7 24 24l0 464c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-464c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1l-17.8 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faAnchorLock = {\n  prefix: 'fas',\n  iconName: 'anchor-lock',\n  icon: [640, 512, [], \"e4ad\", \"M320.5 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-32-96c-53 0-96 43-96 96 0 41.8 26.7 77.4 64 90.5l0 257.9c-62.9-14.3-110.2-69.7-111.9-136.5l16.1 14.1c10 8.7 25.1 7.7 33.9-2.3s7.7-25.1-2.3-33.9l-64-56c-9-7.9-22.6-7.9-31.6 0l-64 56c-10 8.7-11 23.9-2.3 33.9s23.9 11 33.9 2.3l16.2-14.2c2.1 113.1 94.4 204.1 208 204.1 28.3 0 55.4-5.7 80-15.9l0-.2 0-72.2c-14.4 9.6-30.6 16.7-48 20.7l0-257.9c37.3-13.2 64-48.7 64-90.5 0-53-43-96-96-96zm272 304.1l0 47.9-64 0 0-47.9c0-17.7 14.3-32 32-32s32 14.3 32 32zM416.5 400l0 96c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-96c0-20.9-13.4-38.7-32-45.3l0-50.6c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 50.6c-18.6 6.6-32 24.4-32 45.3z\"]\n};\nvar faTimeline = {\n  prefix: 'fas',\n  iconName: 'timeline',\n  icon: [576, 512, [], \"e29c\", \"M160 169.3c28.3-12.3 48-40.5 48-73.3 0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3l0 54.7-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0 0 54.7c-28.3 12.3-48 40.5-48 73.3 0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-54.7 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-54.7c28.3-12.3 48-40.5 48-73.3 0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3l0 54.7-256 0 0-54.7z\"]\n};\nvar faLightbulb = {\n  prefix: 'fas',\n  iconName: 'lightbulb',\n  icon: [384, 512, [128161], \"f0eb\", \"M292.9 384c7.3-22.3 21.9-42.5 38.4-59.9 32.7-34.4 52.7-80.9 52.7-132.1 0-106-86-192-192-192S0 86 0 192c0 51.2 20 97.7 52.7 132.1 16.5 17.4 31.2 37.6 38.4 59.9l201.7 0zM288 432l-192 0 0 16c0 44.2 35.8 80 80 80l32 0c44.2 0 80-35.8 80-80l0-16zM184 112c-39.8 0-72 32.2-72 72 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-66.3 53.7-120 120-120 13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faCircleArrowRight = {\n  prefix: 'fas',\n  iconName: 'circle-arrow-right',\n  icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm41-159c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39-150.1 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l150.1 0-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80z\"]\n};\nvar faArrowCircleRight = faCircleArrowRight;\nvar faMarsAndVenus = {\n  prefix: 'fas',\n  iconName: 'mars-and-venus',\n  icon: [512, 512, [9893], \"f224\", \"M368 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l112 0c17.7 0 32 14.3 32 32l0 112c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7-63 63c19.5 28.4 31 62.7 31 99.8 0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9c-81.9-15-144-86.8-144-173.1 0-97.2 78.8-176 176-176 37 0 71.4 11.4 99.8 31l63-63-34.7 0zM352 208a112 112 0 1 0 -224 0 112 112 0 1 0 224 0z\"]\n};\nvar faNetworkWired = {\n  prefix: 'fas',\n  iconName: 'network-wired',\n  icon: [576, 512, [], \"f6ff\", \"M248 88l80 0 0 48-80 0 0-48zm-8-56c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l16 0 0 32-224 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 32-16 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-16 0 0-32 192 0 0 32-16 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-16 0 0-32 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-32 16 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-96 0zM448 376l8 0 0 48-80 0 0-48 72 0zm-256 0l8 0 0 48-80 0 0-48 72 0z\"]\n};\nvar faBuildingShield = {\n  prefix: 'fas',\n  iconName: 'building-shield',\n  icon: [576, 512, [], \"e4d8\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l201.2 0c-12.5-14.7-23.2-30.8-31.8-48l-89.5 0 0-80c0-17.7 14.3-32 32-32l32 0 0-26.7c0-18.1 6.1-35.2 16.6-48.8-.4-1.4-.6-2.9-.6-4.5l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 1 86.7-28.9c3.1-1 6.2-1.8 9.3-2.5L416 64c0-35.3-28.7-64-64-64L96 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM445.3 488.5l-13.3 6.3 0-188.1 96 32 0 19.6c0 55.8-32.2 106.5-82.7 130.3zM421.9 259.5l-112 37.3c-13.1 4.4-21.9 16.6-21.9 30.4l0 31.1c0 74.4 43 142.1 110.2 173.7l18.5 8.7c4.8 2.2 10 3.4 15.2 3.4s10.5-1.2 15.2-3.4l18.5-8.7C533 500.3 576 432.6 576 358.2l0-31.1c0-13.8-8.8-26-21.9-30.4l-112-37.3c-6.6-2.2-13.7-2.2-20.2 0z\"]\n};\nvar faCode = {\n  prefix: 'fas',\n  iconName: 'code',\n  icon: [576, 512, [], \"f121\", \"M360.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm64.6 136.1c-12.5 12.5-12.5 32.8 0 45.3l73.4 73.4-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0zm-274.7 0c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 150.6 182.6c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faFeatherPointed = {\n  prefix: 'fas',\n  iconName: 'feather-pointed',\n  icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M475.3 .1c9.9-.8 19.6 3 26.6 10s10.8 16.7 10 26.6c-4 49.3-17.4 126.2-46.3 199.7-1.8 4.5-5.5 7.9-10.2 9.3L374.5 270c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2l38.6 0c12 0 19.7 12.8 13.5 23.1-4 6.7-8.3 13.2-12.7 19.6-2 2.9-5 5-8.4 6.1L310.5 366c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2l16 0c14.6 0 21 17.4 8.8 25.4-68 45-137.7 43.3-182.4 31.3-12.7-3.4-24-9.9-34.4-17.9L48 496c-8.8 8.8-23.2 8.8-32 0s-8.8-23.2 0-32l80-80 .5 .5c.7-1.3 1.6-2.5 2.7-3.6L256 224c8.8-8.8 8.8-23.2 0-32s-23.2-8.8-32 0L89.7 326.2c-8.9 8.9-24 4.4-25-8.2-4.3-53.2 9.3-123.1 72.6-186.4 91.1-91.1 254.2-124.7 337.9-131.5z\"]\n};\nvar faFeatherAlt = faFeatherPointed;\nvar faFileCircleQuestion = {\n  prefix: 'fas',\n  iconName: 'file-circle-question',\n  icon: [576, 512, [], \"e4ef\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-100c-11.6 0-21.3 8.2-23.5 19.2-1.8 8.7-10.2 14.3-18.9 12.5s-14.3-10.2-12.5-18.9c5.2-25.6 27.8-44.8 54.9-44.8 30.9 0 56 25.1 56 56 0 19.8-11.7 37.8-29.8 45.9l-10.4 4.6c-1.2 7.7-7.8 13.5-15.8 13.5-8.8 0-16-7.2-16-16 0-11.2 6.6-21.3 16.8-25.9l12.4-5.5c6.6-2.9 10.8-9.4 10.8-16.6 0-13.3-10.7-24-24-24z\"]\n};\nvar faSignature = {\n  prefix: 'fas',\n  iconName: 'signature',\n  icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92l0 32.4-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72.5 0c4.2 36 34.8 64 72 64 26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8S405.7 320 416 320l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-83.6 0 18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3l0-7.8c0-53-43-96-96-96s-96 43-96 96l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3-4.7 0-8.5-3.8-8.5-8.5l0-71.9c0-14.1 9.3-26.6 22.8-30.7zM616 416c13.3 0 24-10.7 24-24s-10.7-24-24-24l-292.9 0c-6.5 16.3-13.7 32.3-21.6 48L616 416z\"]\n};\nvar faEarthAmericas = {\n  prefix: 'fas',\n  iconName: 'earth-americas',\n  icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M55.7 199.7l30.9 30.9c6 6 14.1 9.4 22.6 9.4l21.5 0c8.5 0 16.6 3.4 22.6 9.4l29.3 29.3c6 6 9.4 14.1 9.4 22.6l0 37.5c0 8.5 3.4 16.6 9.4 22.6l13.3 13.3c6 6 9.4 14.1 9.4 22.6l0 18.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-2.7c0-8.5 3.4-16.6 9.4-22.6l45.3-45.3c6-6 9.4-14.1 9.4-22.6l0-34.7c0-17.7-14.3-32-32-32l-82.7 0c-8.5 0-16.6-3.4-22.6-9.4l-16-16c-4.2-4.2-6.6-10-6.6-16 0-12.5 10.1-22.6 22.6-22.6l34.7 0c12.5 0 22.6-10.1 22.6-22.6 0-6-2.4-11.8-6.6-16l-19.7-19.7C242 130 240 125.1 240 120s2-10 5.7-13.7l17.3-17.3c5.8-5.8 9.1-13.7 9.1-21.9 0-7.2-2.4-13.7-6.4-18.9-3.2-.1-6.4-.2-9.6-.2-95.4 0-175.7 64.2-200.3 151.7zM464 256c0-34.6-8.4-67.2-23.4-95.8-6.4 .9-12.7 3.9-17.9 9.1l-13.4 13.4c-6 6-9.4 14.1-9.4 22.6l0 34.7c0 17.7 14.3 32 32 32l24.1 0c2.5 0 5-.3 7.3-.8 .4-5 .5-10.1 .5-15.2zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n};\nvar faEarth = faEarthAmericas;\nvar faEarthAmerica = faEarthAmericas;\nvar faGlobeAmericas = faEarthAmericas;\nvar faCarrot = {\n  prefix: 'fas',\n  iconName: 'carrot',\n  icon: [640, 512, [129365], \"f787\", \"M453.1-36.7L440.9-24.6c-31.2 31.2-31.2 81.9 0 113.1 15.6 15.6 31.2 31.2 46.9 46.9 31.2 31.2 81.9 31.2 113.1 0l12.1-12.1c6.2-6.2 6.2-16.4 0-22.6L600.9 88.6c-31.2-31.2-81.9-31.2-113.1 0 31.2-31.2 31.2-81.9 0-113.1L475.7-36.7c-6.2-6.2-16.4-6.2-22.6 0zM331.6 96c-45.2 0-87.1 20.4-115 54.3L273.3 207c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L191.6 193.2 67.2 466.8c-5.5 12.1-2.9 26.4 6.5 35.9s23.7 12 35.9 6.5l141.6-64.4-43.8-43.8c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.5 56.5 95.3-43.3c53.1-24.1 87.2-77.1 87.2-135.5 0-82.2-66.6-148.8-148.8-148.8z\"]\n};\nvar faTemperatureFull = {\n  prefix: 'fas',\n  iconName: 'temperature-full',\n  icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 0C107 0 64 43 64 96l0 164.7C34.5 287 16 325.4 16 368 16 447.5 80.5 512 160 512s144-64.5 144-144c0-42.6-18.5-81-48-107.3L256 96c0-53-43-96-96-96zm64 368c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3L136 96c0-13.3 10.7-24 24-24s24 10.7 24 24l0 212.7c23.5 9.5 40 32.5 40 59.3z\"]\n};\nvar faTemperature4 = faTemperatureFull;\nvar faThermometer4 = faTemperatureFull;\nvar faThermometerFull = faTemperatureFull;\nvar faTableCellsRowLock = {\n  prefix: 'fas',\n  iconName: 'table-cells-row-lock',\n  icon: [640, 512, [], \"e67a\", \"M256 288l0-64 153.3 0c17.1-42.2 56-73.2 102.7-79l0-49c0-35.3-28.7-64-64-64L128 32C92.7 32 64 60.7 64 96l0 320c0 35.3 28.7 64 64 64l241.3 0c-.9-5.2-1.3-10.6-1.3-16.1l0-47.9-112 0 0-64 113.3 0c3.7-22 14.8-41.4 30.7-55.6l0-8.4-144 0zm0-192l192 0 0 64-192 0 0-64zM560 272.1l0 47.9-64 0 0-47.9c0-17.7 14.3-32 32-32s32 14.3 32 32zM416 368l0 96c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-96c0-20.9-13.4-38.7-32-45.3l0-50.6c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 50.6c-18.6 6.6-32 24.4-32 45.3z\"]\n};\nvar faBoltLightning = {\n  prefix: 'fas',\n  iconName: 'bolt-lightning',\n  icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28L228.9 0c15 0 27.1 12.1 27.1 27.1 0 3.2-.6 6.5-1.7 9.5L208 160 347.3 160c20.2 0 36.7 16.4 36.7 36.7 0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7l-2.9 0c-15.7 0-28.5-12.8-28.5-28.5 0-2.3 .3-4.6 .9-6.9L176 288 32 288c-17.7 0-32-14.3-32-32z\"]\n};\nvar faCloudShowersWater = {\n  prefix: 'fas',\n  iconName: 'cloud-showers-water',\n  icon: [512, 512, [], \"e4e4\", \"M279.2 55.7C263.9 22.8 230.6 0 192 0 139 0 96 43 96 96 60.7 96 32 124.7 32 160s28.7 64 64 64l320 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-1.6 0c-7.4-36.5-39.7-64-78.4-64-22.2 0-42.3 9.1-56.8 23.7zM410.6 476.1c20.7 15.6 46 30.7 74.2 34.5 13.1 1.8 25.2-7.5 27-20.6s-7.5-25.2-20.6-27c-15.9-2.1-33.2-11.3-51.7-25.2-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-18.5 13.9-35.8 23.1-51.7 25.2-13.1 1.8-22.4 13.8-20.6 27s13.8 22.4 27 20.6c28.2-3.8 53.6-18.9 74.2-34.5 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zM100.1 303.6c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-21.3 64C29 365 35.8 378.6 48.4 382.8s26.2-2.6 30.4-15.2l21.3-64zm120 0c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-21.3 64c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.3-64zm112 0c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-21.3 64c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.3-64zm120 0c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-21.3 64c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.3-64z\"]\n};\nvar faArrowUpLong = {\n  prefix: 'fas',\n  iconName: 'arrow-up-long',\n  icon: [320, 512, [\"long-arrow-up\"], \"f176\", \"M182.6-22.6c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 77.3 128 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-434.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faLongArrowUp = faArrowUpLong;\nvar faAddressCard = {\n  prefix: 'fas',\n  iconName: 'address-card',\n  icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 256l64 0c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80zm-24-96a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm240-48l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faAngleRight = {\n  prefix: 'fas',\n  iconName: 'angle-right',\n  icon: [256, 512, [8250], \"f105\", \"M247.1 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L179.2 256 41.9 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nvar faFaceMeh = {\n  prefix: 'fas',\n  iconName: 'face-meh',\n  icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM176 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM176 320l160 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-160 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMeh = faFaceMeh;\nvar faArrowUpFromGroundWater = {\n  prefix: 'fas',\n  iconName: 'arrow-up-from-ground-water',\n  icon: [640, 512, [], \"e4b5\", \"M303 7c9.4-9.4 24.6-9.4 33.9 0l88 88c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47 0 278.1c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-278.1-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L303 7zM240 192l0 163.1c-10.6-2.2-21.3-3.2-32-3.1-32.5 .2-64.9 10.7-92.3 31.4-8.8 6.6-15.9 10.9-21.7 13.5l-.8 .4c-3.7 1.7-6.4 2.9-9.8 .3-6-4.5-12.6-8-19.3-10.4L64 240c0-26.5 21.5-48 48-48l128 0zm336 48l0 155.2c-1.1 .8-2.2 1.5-3.3 2.4-4.1 3.1-8.3 .8-12.6-1.5-.6-.3-1.2-.6-1.8-1-5.2-2.7-11.1-6.6-18-11.7-28.1-21.1-61.3-31.6-94.4-31.4-15.5 .1-31 2.5-46 7.3l0-167.3 128 0c26.5 0 48 21.5 48 48zM403.4 476.1C379.1 494.3 351.1 512 320 512s-59.1-17.7-83.4-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.5-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0z\"]\n};\nvar faMap = {\n  prefix: 'fas',\n  iconName: 'map',\n  icon: [512, 512, [128506, 62072], \"f279\", \"M512 48c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4L349.5 77.5 170.1 17.6c-8.1-2.7-16.8-2.1-24.4 1.7l-128 64C6.8 88.8 0 99.9 0 112L0 464c0 11.1 5.7 21.4 15.2 27.2s21.2 6.4 31.1 1.4l116.1-58.1 179.4 59.8c8.1 2.7 16.8 2.1 24.4-1.7l128-64c10.8-5.4 17.7-16.5 17.7-28.6l0-352zM192 376.9l0-284.5 128 42.7 0 284.5-128-42.7z\"]\n};\nvar faUserPlus = {\n  prefix: 'fas',\n  iconName: 'user-plus',\n  icon: [640, 512, [], \"f234\", \"M285.7 304c98.5 0 178.3 79.8 178.3 178.3 0 16.4-13.3 29.7-29.7 29.7L77.7 512C61.3 512 48 498.7 48 482.3 48 383.8 127.8 304 226.3 304l59.4 0zM528 80c13.3 0 24 10.7 24 24l0 48 48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0 0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0 0-48c0-13.3 10.7-24 24-24zM256 248a120 120 0 1 1 0-240 120 120 0 1 1 0 240z\"]\n};\nvar faVenus = {\n  prefix: 'fas',\n  iconName: 'venus',\n  icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zM223.9 349.1C305.9 334.1 368 262.3 368 176 368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144.1 173.1-.1 1-.1 1.9-.1 2.9l0 64-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-64c0-1 0-1.9-.1-2.9z\"]\n};\nvar faDiagramSuccessor = {\n  prefix: 'fas',\n  iconName: 'diagram-successor',\n  icon: [448, 512, [], \"e47a\", \"M289.2 137.9c2.5-6 8.3-9.9 14.8-9.9l40 0 0-24c0-13.3-10.7-24-24-24l-98 0c1.3 5.1 2 10.5 2 16l0 64c0 35.3-28.7 64-64 64l-96 0c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l256 0c39.8 0 72 32.2 72 72l0 24 40 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-64 64c-6.2 6.2-16.4 6.2-22.6 0l-64-64c-4.6-4.6-5.9-11.5-3.5-17.4zM384 480L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM160 160l0-64-96 0 0 64 96 0z\"]\n};\nvar faHeadSideCoughSlash = {\n  prefix: 'fas',\n  iconName: 'head-side-cough-slash',\n  icon: [576, 512, [], \"e062\", \"M535-24.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 537.1c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l25-25 0-447.2c0-15 10.5-28.3 25.4-29.8 7.4-.7 14.9-1.1 22.6-1.1 112.7 0 206 83.3 221.7 191.7 .4 3 1.7 5.9 3.6 8.3l2.2 2.6 227.5-227.5zM133.8 512L288 357.8 288 416c0 53-43 96-96 96l-58.2 0zM176 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm336 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-88 72a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm-64 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm128 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm24 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-88-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faDiagramProject = {\n  prefix: 'fas',\n  iconName: 'diagram-project',\n  icon: [512, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 16 128 0 0-16c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-16-128 0 0 16c0 7.3-1.7 14.3-4.6 20.5l68.6 91.5 80 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-7.3 1.7-14.3 4.6-20.5L128 224 48 224c-26.5 0-48-21.5-48-48L0 80z\"]\n};\nvar faProjectDiagram = faDiagramProject;\nvar faTerminal = {\n  prefix: 'fas',\n  iconName: 'terminal',\n  icon: [512, 512, [], \"f120\", \"M9.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 256 9.4 118.6zM224 384l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faHouseFire = {\n  prefix: 'fas',\n  iconName: 'house-fire',\n  icon: [640, 512, [], \"e50c\", \"M448 192c14.1 .4 23.8 11.4 32.7 21.7 2 2.3 4 4.6 6 6.7l19 19.9 12.2-13.8c5.4-6.1 13.3-8.9 20.9-8.9 7.2 0 14.3 2.6 19.9 7.8 19.7 18.3 39.8 43.2 55 70.6 15.1 27.2 26.2 58.2 26.2 88.2 0 88.7-71.3 159.8-160 159.8-89.6 0-160-71.3-160-159.8 0-37.3 16-73.4 36.8-104.5 20.9-31.3 47.5-59 70.9-80.1 5.7-5.2 13.1-7.7 20.3-7.5zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l147.5 137c-19.2-4.3-40 .5-55.5 14.4-36.4 32.6-67.7 69.8-90.3 106.4-10.3 16.6-19.7 34.9-26.8 53.7L272 320c-26.5 0-48 21.5-48 48l0 96 64.6 0c7.3 17.2 16.8 33.4 28.2 48L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM489.3 343.7c-5.4-4.7-13.1-4.7-18.5 0-17.7 15.4-54.7 51.9-54.7 88.4 0 35.3 28.7 64 64 64s64-28.7 64-64c0-36.5-37-73-54.7-88.4z\"]\n};\nvar faMask = {\n  prefix: 'fas',\n  iconName: 'mask',\n  icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448l8.4 0c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4l8.4 0c96 0 176-64 176-176S512 64 288 64zM96 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faHurricane = {\n  prefix: 'fas',\n  iconName: 'hurricane',\n  icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6 184 1.2 192 8.6 192 17.9l0 63.3c0 8.4 6.5 15.3 14.7 16.5 100.3 14.9 177.3 101.3 177.3 205.7 0 103.6-75.7 189.5-174.9 205.4-9.2 1.5-17.1-5.9-17.1-15.2l0-63.3C192 421.9 185.5 415 177.3 413.7 77 398.9 0 312.4 0 208zm288 48a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faEarthAfrica = {\n  prefix: 'fas',\n  iconName: 'earth-africa',\n  icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M447.6 175c-31.6-74.6-105.5-127-191.6-127-22.1 0-43.4 3.5-63.4 9.8-.4 2-.6 4.1-.6 6.2l0 73.4c0 12.5 10.1 22.6 22.6 22.6 6 0 11.8-2.4 16-6.6l16-16c6-6 14.1-9.4 22.6-9.4l5.5 0c28.5 0 42.8 34.5 22.6 54.6-6 6-14.1 9.4-22.6 9.4l-61.5 0c-8.5 0-16.6 3.4-22.6 9.4l-21.3 21.3c-6 6-9.4 14.1-9.4 22.6l0 42.7c0 17.7 14.3 32 32 32l32 0c17.7 0 32 14.3 32 32l0 32c0 17.7 14.3 32 32 32l2.7 0c8.5 0 16.6-3.4 22.6-9.4l29.3-29.3c6-6 9.4-14.1 9.4-22.6l0-18.7c0-8.8 7.2-16 16-16s16-7.2 16-16l0-34.7c0-8.5-3.4-16.6-9.4-22.6l-16-16c-4.2-4.2-6.6-10-6.6-16 0-12.5 10.1-22.6 22.6-22.6l45 0c12.4 0 22.7-7.1 28-17zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n};\nvar faGlobeAfrica = faEarthAfrica;\nvar faThumbtack = {\n  prefix: 'fas',\n  iconName: 'thumbtack',\n  icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0L320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-29.5 0 10.3 134.1c37.1 21.2 65.8 56.4 78.2 99.7l3.8 13.4c2.8 9.7 .8 20-5.2 28.1S362 352 352 352L32 352c-10 0-19.5-4.7-25.5-12.7s-8-18.4-5.2-28.1L5 297.8c12.4-43.3 41-78.5 78.2-99.7L93.5 64 64 64C46.3 64 32 49.7 32 32zM160 400l64 0 0 112c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-112z\"]\n};\nvar faThumbTack = faThumbtack;\nvar faHandPointDown = {\n  prefix: 'fas',\n  iconName: 'hand-point-down',\n  icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208-64 0 0 208zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-64 64c17.7 0 32-14.3 32-32l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6 13.2 0 25.4 4 35.6 10.8 8.7-24.9 32.5-42.8 60.4-42.8 11.7 0 22.6 3.1 32 8.6l0-8.6C384 71.6 312.4 0 224 0L162.3 0C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149l0 27c0 35.3 28.7 64 64 64l88 0c22.1 0 40-17.9 40-40s-17.9-40-40-40l-56 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l56 0c39.8 0 72 32.2 72 72z\"]\n};\nvar faFaceMehBlank = {\n  prefix: 'fas',\n  iconName: 'face-meh-blank',\n  icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm208-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faTemperatureEmpty = {\n  prefix: 'fas',\n  iconName: 'temperature-empty',\n  icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M64 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144S16 447.5 16 368c0-42.6 18.5-81 48-107.3L64 96zm96 336c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faTemperature0 = faTemperatureEmpty;\nvar faThermometer0 = faTemperatureEmpty;\nvar faThermometerEmpty = faTemperatureEmpty;\nvar faBorderNone = {\n  prefix: 'fas',\n  iconName: 'border-none',\n  icon: [448, 512, [], \"f850\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM160 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM288 416c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM160 480c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zM288 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM416 480c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm0-384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM32 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM416 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM32 160a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM416 160a32 32 0 1 0 0 64 32 32 0 1 0 0-64z\"]\n};\nvar faHighlighter = {\n  prefix: 'fas',\n  iconName: 'highlighter',\n  icon: [576, 512, [], \"f591\", \"M315 315L473.4 99.9 444.1 70.6 229 229 315 315zm-187 5l0 0 0-71.7c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0 457.6 0 468.5 4.5 476.6 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5 0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5l-71.7 0-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l51.7-51.7 70.6 70.6-19.7 19.7c-4.5 4.5-10.6 7-17 7L24 512c-13.3 0-24-10.7-24-24l0-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nvar faMoneyBillWave = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave',\n  icon: [512, 512, [], \"f53a\", \"M0 419.6L0 109.5c0-23.2 24.1-38.6 46.3-32 87.7 26.2 149.7 5.5 212.1-15.3 64.5-21.5 129.4-43.1 223.3-13.1 18.5 5.9 30.3 23.8 30.3 43.3l0 310.1c0 23.2-24.1 38.6-46.2 32-87.7-26.2-149.8-5.5-212.1 15.3-64.5 21.5-129.4 43.1-223.3 13.1-18.5-5.9-30.3-23.8-30.3-43.3zM336 256c0-53-35.8-96-80-96s-80 43-80 96 35.8 96 80 96 80-43 80-96zM120 413.6c4.4 0 7.9-3.8 7.2-8.1-4.6-27.8-27-49.5-55.2-53-4.4-.5-8 3.1-8 7.5l0 39.9c0 3.6 2.4 6.8 6 7.7 17.9 4.2 34.3 6.1 50 6.1zm318.5-51.1c5 .8 9.5-3 9.5-8l0-42.6c0-4.4-3.6-8.1-8-7.5-25.2 3.1-45.9 20.9-53.2 44.6-1.4 4.7 2.3 9.1 7.2 9.2 14.2 .4 29 1.7 44.4 4.3zM448 152l0-39.9c0-3.6-2.5-6.8-6-7.7-17.9-4.2-34.3-6.1-50-6.1-4.4 0-7.9 3.8-7.2 8.1 4.6 27.8 27 49.5 55.2 53 4.4 .5 8-3.1 8-7.5zM125.2 162.9c1.4-4.7-2.3-9.1-7.2-9.2-14.2-.4-29-1.7-44.4-4.3-5-.8-9.5 3-9.5 8L64 200c0 4.4 3.6 8.1 8 7.5 25.2-3.1 45.9-20.9 53.2-44.6z\"]\n};\nvar faToiletPaperSlash = {\n  prefix: 'fas',\n  iconName: 'toilet-paper-slash',\n  icon: [576, 512, [], \"e072\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-94.5-94.5c40.2-23 69.5-96.9 69.5-184.6 0-106-43-192-96-192s-96 86-96 192c0 24.1 2.2 47.2 6.3 68.4L304 238.2 304 224c0-58.9 11.8-114.5 33.2-157.2 5.9-11.7 13.1-23.7 21.9-34.8L128 32c-8.3 0-16.4 2.1-24.1 6.1l-63-63zM32 224l0 264c0 30.9 25.1 56 56 56l160 0c30.9 0 56-25.1 56-56l0-114.2-256-256C37.9 148.2 32 184.7 32 224zm416 64c-17.7 0-32-28.7-32-64s14.3-64 32-64 32 28.7 32 64-14.3 64-32 64z\"]\n};\nvar faFileShield = {\n  prefix: 'fas',\n  iconName: 'file-shield',\n  icon: [576, 512, [], \"e4f0\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l201.2 0C261 469.4 240 414.5 240 356.4l0-31.1c0-34.4 22-65 54.7-75.9l112-37.3c3.1-1 6.2-1.8 9.3-2.5l0-39.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zm87.8 312.5l-13.3 6.3 0-188.1 96 32 0 19.6c0 55.8-32.2 106.5-82.7 130.3zM421.9 259.5l-112 37.3c-13.1 4.4-21.9 16.6-21.9 30.4l0 31.1c0 74.4 43 142.1 110.2 173.7l18.5 8.7c4.8 2.2 10 3.4 15.2 3.4s10.5-1.2 15.2-3.4l18.5-8.7C533 500.3 576 432.6 576 358.2l0-31.1c0-13.8-8.8-26-21.9-30.4l-112-37.3c-6.6-2.2-13.7-2.2-20.2 0z\"]\n};\nvar faTextHeight = {\n  prefix: 'fas',\n  iconName: 'text-height',\n  icon: [576, 512, [], \"f034\", \"M40 32C17.9 32 0 49.9 0 72l0 56c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 64 0 0 320-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320 64 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-56c0-22.1-17.9-40-40-40L40 32zM438.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4 0-229.5 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4 0 229.5-9.4-9.4z\"]\n};\nvar faFaceGrinTongue = {\n  prefix: 'fas',\n  iconName: 'face-grin-tongue',\n  icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256c0 104.4 62.5 194.2 152.2 234.1-5.3-13-8.2-27.2-8.2-42.1l0-61.7c-16.9-16.5-30.1-36.7-38.3-59.3-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1c11.9-3.7 23.9 6.3 19.6 18.1-8.3 22.6-21.5 42.8-38.3 59.3l0 61.7c0 14.9-2.9 29.1-8.2 42.1 89.7-39.8 152.2-129.6 152.2-234.1 0-141.4-114.6-256-256-256S0 114.6 0 256zm176-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm16 240l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9-2.8 12.6-20.8 12.6-23.6 0-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faFileSignature = {\n  prefix: 'fas',\n  iconName: 'file-signature',\n  icon: [640, 512, [], \"f573\", \"M64.1 64c0-35.3 28.7-64 64-64L277.6 0c17 0 33.3 6.7 45.3 18.7L429.3 125.3c12 12 18.7 28.3 18.7 45.3l0 97.5-132 132-42.1 0-16.1-53.6c-4.7-15.7-19.1-26.4-35.5-26.4-11.3 0-21.9 5.1-28.9 13.9L133.3 409c-8.3 10.3-6.6 25.5 3.7 33.7s25.5 6.6 33.7-3.8l47.1-58.8 15.2 50.7c3 10.2 12.4 17.1 23 17.1l31.5 0c-.9 3.1-1.7 6.3-2.3 9.5l-10.9 54.5-146.2 0c-35.3 0-64-28.7-64-64l0-384zm208-5.5l0 93.5c0 13.3 10.7 24 24 24l93.5 0-117.5-117.5zm60.2 408.4c2.5-12.4 8.6-23.8 17.5-32.7l118.9-118.9 80 80-118.9 118.9c-8.9 8.9-20.3 15-32.7 17.5l-59.6 11.9c-.9 .2-1.9 .3-2.9 .3-8 0-14.6-6.5-14.6-14.6 0-1 .1-1.9 .3-2.9l11.9-59.6zm267.8-123l-28.8 28.8-80-80 28.8-28.8c22.1-22.1 57.9-22.1 80 0s22.1 57.9 0 80z\"]\n};\nvar faBuildingWheat = {\n  prefix: 'fas',\n  iconName: 'building-wheat',\n  icon: [640, 512, [], \"e4db\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l249.3 0c-6-14.8-9.3-31-9.3-48 0-17.7 7.2-33.7 18.8-45.3-11.9-19.4-18.8-42.3-18.8-66.7 0-17.7 7.2-33.7 18.8-45.3-11.9-19.4-18.8-42.3-18.8-66.7 0-25.2 14.5-46.9 35.6-57.4-2.4-7.1-3.6-14.7-3.6-22.6l0-32C368 96.7 388 70.1 415.9 60.1 413.9 26.6 386 0 352 0L96 0zM208 352l32 0c17.7 0 32 14.3 32 32l0 80-96 0 0-80c0-17.7 14.3-32 32-32zM128 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm144-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm352 0l-16 0c-44.2 0-80 35.8-80 80 0 8.8 7.2 16 16 16l16 0c44.2 0 80-35.8 80-80 0-8.8-7.2-16-16-16zm16 128c0-8.8-7.2-16-16-16l-16 0c-44.2 0-80 35.8-80 80 0 8.8 7.2 16 16 16l16 0c44.2 0 80-35.8 80-80zm0 112c0-8.8-7.2-16-16-16l-16 0c-44.2 0-80 35.8-80 80 0 8.8 7.2 16 16 16l16 0c44.2 0 80-35.8 80-80zM496 528c0-44.2-35.8-80-80-80l-16 0c-8.8 0-16 7.2-16 16 0 44.2 35.8 80 80 80l16 0c8.8 0 16-7.2 16-16zm-16-96c8.8 0 16-7.2 16-16 0-44.2-35.8-80-80-80l-16 0c-8.8 0-16 7.2-16 16 0 44.2 35.8 80 80 80l16 0zm16-128c0-44.2-35.8-80-80-80l-16 0c-8.8 0-16 7.2-16 16 0 44.2 35.8 80 80 80l16 0c8.8 0 16-7.2 16-16zM512 64c-13.3 0-24 10.7-24 24l0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104c0-13.3-10.7-24-24-24zm96 64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32zM440 104c-13.3 0-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32c0-13.3-10.7-24-24-24z\"]\n};\nvar faPlugCircleMinus = {\n  prefix: 'fas',\n  iconName: 'plug-circle-minus',\n  icon: [640, 512, [], \"e55e\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM352 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nvar faFutbol = {\n  prefix: 'fas',\n  iconName: 'futbol',\n  icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6l59.2 0c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faCirclePlus = {\n  prefix: 'fas',\n  iconName: 'circle-plus',\n  icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusCircle = faCirclePlus;\nvar faBrazilianRealSign = {\n  prefix: 'fas',\n  iconName: 'brazilian-real-sign',\n  icon: [512, 512, [], \"e46c\", \"M400 16c17.7 0 32 14.3 32 32l0 16 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48.9 0c-26 0-47.1 21.1-47.1 47.1 0 22.5 15.9 41.8 37.9 46.2l32.8 6.6c51.9 10.4 89.3 56 89.3 109 0 50.6-33.8 93.3-80 106.7l0 20.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64.9 0c26 0 47.1-21.1 47.1-47.1 0-22.5-15.9-41.8-37.9-46.2l-32.8-6.6c-51.9-10.4-89.3-56-89.3-109 0-50.6 33.8-93.2 80-106.7L368 48c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144 0 54.3-30 101.5-74.4 126.1l41 136.7c5.1 16.9-4.5 34.8-21.5 39.8s-34.8-4.5-39.8-21.5L120.1 319.8c-2.7 .1-5.4 .2-8.1 .2l-48 0 0 128c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80l-48 0 0 160z\"]\n};\nvar faStarAndCrescent = {\n  prefix: 'fas',\n  iconName: 'star-and-crescent',\n  icon: [512, 512, [9770], \"f699\", \"M0 256c0-141.4 114.6-256 256-256 33 0 64.6 6.3 93.6 17.7 7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5 7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512 114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nvar faFaceSurprise = {\n  prefix: 'fas',\n  iconName: 'face-surprise',\n  icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM176 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-48 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faHospitalUser = {\n  prefix: 'fas',\n  iconName: 'hospital-user',\n  icon: [640, 512, [], \"f80d\", \"M64 64C64 28.7 92.7 0 128 0L384 0c35.3 0 64 28.7 64 64l0 121.3c-46.9 19-80 65-80 118.7 0 27.7 8.8 53.4 23.8 74.4-51.5 21-87.8 71.6-87.8 130.7 0 1 0 1.9 0 2.9l-176 0c-35.3 0-64-28.7-64-64L64 64zM208 400l0 64 53.4 0c7.2-29.4 21.3-56.1 40.4-78.3-6.1-19.5-24.3-33.7-45.8-33.7-26.5 0-48 21.5-48 48zM248 88c-8.8 0-16 7.2-16 16l0 32-32 0c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l32 0 0 32c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-32 32 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-32 0 0-32c0-8.8-7.2-16-16-16l-16 0zM416 304a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM352 512c0-53 43-96 96-96l96 0c53 0 96 43 96 96 0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32z\"]\n};\nvar faArrowDownUpLock = {\n  prefix: 'fas',\n  iconName: 'arrow-down-up-lock',\n  icon: [576, 512, [], \"e4b0\", \"M262.6 422.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l25.4 25.4 0-114.7-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l256 0 0-114.7-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l80-80c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-25.4-25.4 0 94.8c-25.3 20.3-42.8 50.1-47 83.9l-145 0 0 114.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM192 32l0 144-64 0 0-144c0-17.7 14.3-32 32-32s32 14.3 32 32zM496 304.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM352 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nvar faFolder = {\n  prefix: 'fas',\n  iconName: 'folder',\n  icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 448l384 0c35.3 0 64-28.7 64-64l0-240c0-35.3-28.7-64-64-64L298.7 80c-6.9 0-13.7-2.2-19.2-6.4L241.1 44.8C230 36.5 216.5 32 202.7 32L64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faHollyBerry = {\n  prefix: 'fas',\n  iconName: 'holly-berry',\n  icon: [512, 512, [], \"f7aa\", \"M256.2 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM277 383.8c1 .1 2.1 .2 3.2 .2 39.8 0 72 32.2 72 72l0 22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.9 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6-34.6 0-62.7-28.1-62.7-62.7l0-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7 4.2 9.7 5.8 20.8 3.7 32.3l-6.3 34.8c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.8 234.5c-15.5-5.2-31.6 6.4-31.6 22.8l0 32c0 34.6-28.1 62.7-62.7 62.7-16.4 0-27.9 16-22.8 31.6L15 396.4c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.4 489.4 22.8 505.8 40.7 501l19.4-5.3c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8l0-32c0-34.6 28.1-62.7 62.7-62.7 16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5l-19.4 5.3c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384.2 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faVenusDouble = {\n  prefix: 'fas',\n  iconName: 'venus-double',\n  icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144.1 173.1 .1 1 .1 1.9 .1 2.9l0 64 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-64c0-1 0-1.9 .1-2.9-82-15-144.1-86.8-144.1-173.1 0-97.2 78.8-176 176-176S368 78.8 368 176zM357.5 327c14.4-15.8 26.6-33.7 36.1-53.1 16.1 9 34.7 14.1 54.5 14.1 61.9 0 112-50.1 112-112S509.9 64 448 64c-19.8 0-38.3 5.1-54.5 14.1-9.5-19.4-21.6-37.3-36.1-53.1 26.4-15.9 57.4-25 90.5-25 97.2 0 176 78.8 176 176 0 86.3-62.1 158.1-144.1 173.1 .1 .9 .1 1.9 .1 2.9l0 64 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-64c0-1 0-1.9 .1-2.9-21.1-3.9-40.9-11.5-58.6-22.2z\"]\n};\nvar faClipboardQuestion = {\n  prefix: 'fas',\n  iconName: 'clipboard-question',\n  icon: [384, 512, [], \"e4e3\", \"M311.4 32l8.6 0c35.3 0 64 28.7 64 64l0 352c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l8.6 0C83.6 12.9 104.3 0 128 0L256 0c23.7 0 44.4 12.9 55.4 32zM248 112c13.3 0 24-10.7 24-24s-10.7-24-24-24L136 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0zM192 248c16.1 0 29.2 13.1 29.2 29.2 0 8.7-3.1 13.9-6.9 17.7-4.5 4.4-10.7 7.5-16.8 9.5-14.9 5-29.5 19.3-29.5 39.5 0 13.3 10.7 24 24 24 11.5 0 21.2-8.1 23.5-19 19.2-7.1 53.7-26.3 53.7-71.8 0-42.6-34.6-77.2-77.2-77.2s-77.2 34.6-77.2 77.2c0 13.3 10.7 24 24 24s24-10.7 24-24c0-16.1 13.1-29.2 29.2-29.2zm28 168c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28z\"]\n};\nvar faHotdog = {\n  prefix: 'fas',\n  iconName: 'hotdog',\n  icon: [512, 512, [127789], \"f80f\", \"M288 0c-20.5 0-40.1 8.1-54.6 22.6L22.6 233.4C8.1 247.9 0 267.5 0 288 0 300.2 2.9 312.1 8.2 322.7L322.7 8.2C312.1 2.9 300.2 0 288 0zM224 512c20.5 0 40.1-8.1 54.6-22.6L489.4 278.6c14.5-14.5 22.6-34.1 22.6-54.6 0-12.2-2.9-24.1-8.2-34.7L189.3 503.8c10.7 5.4 22.6 8.2 34.7 8.2zM456.6 168.6c31.2-31.2 31.2-81.9 0-113.1s-81.9-31.2-113.1 0l-288 288c-31.2 31.2-31.2 81.9 0 113.1s81.9 31.2 113.1 0l288-288z\"]\n};\nvar faArrowUpFromBracket = {\n  prefix: 'fas',\n  iconName: 'arrow-up-from-bracket',\n  icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 192 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32S0 334.3 0 352l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-64z\"]\n};\nvar faMicroscope = {\n  prefix: 'fas',\n  iconName: 'microscope',\n  icon: [512, 512, [128300], \"f610\", \"M176 0c-26.5 0-48 21.5-48 48l0 208c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64 32 0c70.7 0 128 57.3 128 128S390.7 448 320 448L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16.9 0c30.4-34 48.9-78.8 48.9-128 0-106-86-192-192-192l-32 0 0-80c0-26.5-21.5-48-48-48L176 0zM120 352c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0z\"]\n};\nvar faCloud = {\n  prefix: 'fas',\n  iconName: 'cloud',\n  icon: [576, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144l304 0c70.7 0 128-57.3 128-128 0-51.6-30.5-96.1-74.5-116.3 6.7-13.1 10.5-28 10.5-43.7 0-53-43-96-96-96-17.7 0-34.2 4.8-48.4 13.1-24.1-45.8-72.2-77.1-127.6-77.1-79.5 0-144 64.5-144 144 0 8 .7 15.9 1.9 23.5-56.9 19.2-97.9 73.1-97.9 136.5z\"]\n};\nvar faBaseballBatBall = {\n  prefix: 'fas',\n  iconName: 'baseball-bat-ball',\n  icon: [576, 512, [], \"f432\", \"M464.1 544a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm8.4-576c15.1 0 29.7 5.8 40.7 16.2l47.2 44.8c12.6 12 19.1 29 17.5 46.3-1.2 13.3-7 25.8-16.5 35.2L363.1 309c-7.3 7.3-15.7 13.4-25 18L206 393c-9.2 4.6-17.7 10.7-25 18l-92 92 1.7 1.8c7.7 9.4 7.1 23.3-1.7 32.1s-22.7 9.3-32.1 1.7l-1.8-1.7-48-48-1.7-1.8c-7.7-9.4-7.1-23.3 1.7-32.1s22.7-9.3 32.1-1.7l1.8 1.7 92-92c7.3-7.3 13.4-15.7 18-25l66.1-132.1c4.6-9.2 10.7-17.7 18-25L430.8-14.7C441.9-25.8 456.9-32 472.5-32z\"]\n};\nvar faCarRear = {\n  prefix: 'fas',\n  iconName: 'car-rear',\n  icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96l181.2 0c13.6 0 25.7 8.6 30.2 21.4l26.1 74.6-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256l0 96c0 23.7 12.9 44.4 32 55.4L32 448c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-32 256 0 0 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-40.6c19.1-11.1 32-31.7 32-55.4l0-96c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32L165.4 32c-40.8 0-77.1 25.8-90.6 64.3zM208 288l96 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm360-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCarAlt = faCarRear;\nvar faThumbtackSlash = {\n  prefix: 'fas',\n  iconName: 'thumbtack-slash',\n  icon: [576, 512, [\"thumb-tack-slash\"], \"e68f\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L417.8 352 448 352c10 0 19.5-4.7 25.5-12.7s8-18.4 5.2-28.1L475 297.8c-12.4-43.3-41-78.5-78.2-99.7L386.5 64 416 64c17.7 0 32-14.3 32-32S433.7 0 416 0L160 0c-7.4 0-14.1 2.5-19.5 6.6L190.1 56.3 185.3 119.4 41-24.9zM282.2 352L149.7 219.6c-22.7 20.5-39.8 47.4-48.7 78.3l-3.8 13.4c-2.8 9.7-.8 20 5.2 28.1S118 352 128 352l154.2 0zM256 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-112-64 0 0 112z\"]\n};\nvar faThumbTackSlash = faThumbtackSlash;\nvar faPlusMinus = {\n  prefix: 'fas',\n  iconName: 'plus-minus',\n  icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128-128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-128zM0 480c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHouseCircleCheck = {\n  prefix: 'fas',\n  iconName: 'house-circle-check',\n  icon: [640, 512, [], \"e509\", \"M496 544a144 144 0 1 1 0-288 144 144 0 1 1 0 288zM268.6 6.5c12.2-9.3 29.7-8.7 41.2 2l217.6 202c-10.2-1.7-20.7-2.6-31.3-2.6-78.6 0-146.1 47.2-175.8 114.8-5.1-1.8-10.5-2.8-16.2-2.8l-32 0c-26.5 0-48 21.5-48 48l0 96 91 0c6.1 17.3 14.6 33.4 25.1 48L144 512c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208 2.4-2zM553.4 339.1c-7.1-5.2-17.1-3.6-22.3 3.5l-53 72.8-26.7-26.8c-6.2-6.2-16.4-6.2-22.6 0-6.2 6.2-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.7s8.9-2.8 11.7-6.6l64-88c5.2-7.1 3.6-17.1-3.5-22.3z\"]\n};\nvar faCalendarDay = {\n  prefix: 'fas',\n  iconName: 'calendar-day',\n  icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zm0 256c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0z\"]\n};\nvar faLibra = {\n  prefix: 'fas',\n  iconName: 'libra',\n  icon: [512, 512, [], \"e84b\", \"M480 384c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l448 0zM256 32c97.2 0 176 78.8 176 176 0 16.6-2.4 32.7-6.7 48l54.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-104.2 0c-11.8 0-22.7-6.5-28.2-16.9s-4.9-23.1 1.6-32.9c11.9-17.8 18.8-39.1 18.8-62.2 0-61.9-50.1-112-112-112S144 146.1 144 208c0 23.1 6.9 44.4 18.8 62.2 6.6 9.8 7.2 22.5 1.6 32.9S148.1 320 136.2 320L32 320c-17.7 0-32-14.3-32-32s14.3-32 32-32l54.8 0c-4.3-15.3-6.8-31.4-6.8-48 0-97.2 78.8-176 176-176z\"]\n};\nvar faCircle = {\n  prefix: 'fas',\n  iconName: 'circle',\n  icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n};\nvar faMobileVibrate = {\n  prefix: 'fas',\n  iconName: 'mobile-vibrate',\n  icon: [576, 512, [], \"e816\", \"M384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64l-192 0c-35.3 0-64-28.7-64-64l0-384c0-35.3 28.7-64 64-64L384 0zM248 416c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zM48.8 133.4c9.4-7.7 23.3-7.1 32.1 1.7 9.4 9.4 9.4 24.6 0 33.9l-31 31 25.4 25.4 2.9 3.2c6.3 7.7 9.8 17.4 9.8 27.4 0 11.5-4.6 22.5-12.7 30.6l-25.4 25.4 31 31 1.7 1.8c7.7 9.4 7.1 23.3-1.7 32.1s-22.7 9.3-32.1 1.7L47 377 12.7 342.6C5.6 335.5 1.2 326.2 .2 316.3L0 312 .2 307.7c1-9.9 5.4-19.2 12.5-26.3L38.1 256 12.7 230.6C5.6 223.5 1.2 214.2 .2 204.3L0 200 .2 195.7c1-9.9 5.4-19.2 12.5-26.3L47 135 48.8 133.4zM495 135c8.8-8.8 22.7-9.3 32.1-1.7l1.8 1.7 34.3 34.3c7.1 7.1 11.5 16.4 12.5 26.3l.2 4.3-.2 4.3c-1 9.9-5.4 19.2-12.5 26.3l-25.4 25.4 25.4 25.4c7.1 7.1 11.5 16.4 12.5 26.3l.2 4.3-.2 4.3c-1 9.9-5.4 19.2-12.5 26.3l-34.3 34.3-1.8 1.7c-9.4 7.7-23.3 7.1-32.1-1.7s-9.3-22.7-1.7-32.1l1.7-1.8 31-31-25.4-25.4c-8.1-8.1-12.7-19.1-12.7-30.6 0-10 3.5-19.7 9.8-27.4l2.9-3.2 25.4-25.4-31-31c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faFaceGrinSquint = {\n  prefix: 'fas',\n  iconName: 'face-grin-squint',\n  icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM122.6 143.2c4.5-6.8 13.3-9.2 20.6-5.5l79.6 40c5.4 2.7 8.8 8.2 8.8 14.3s-3.4 11.6-8.8 14.3l-79.6 40c-7.3 3.6-16.1 1.3-20.6-5.5s-3.1-15.9 3.1-21.1L159 192 125.8 164.3c-6.2-5.2-7.6-14.3-3.1-21.1zm263.6 21.1L353 192 386.2 219.7c6.2 5.2 7.6 14.3 3.1 21.1s-13.3 9.2-20.6 5.5l-79.6-40c-5.4-2.7-8.8-8.2-8.8-14.3s3.4-11.6 8.8-14.3l79.6-40c7.3-3.6 16.1-1.3 20.6 5.5s3.1 15.9-3.1 21.1z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faUsersBetweenLines = {\n  prefix: 'fas',\n  iconName: 'users-between-lines',\n  icon: [576, 512, [], \"e591\", \"M24 16l528 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 64C10.7 64 0 53.3 0 40S10.7 16 24 16zm0 448l528 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24zM392 192a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm27.2 100.4c9.1-2.9 18.8-4.4 28.8-4.4 53 0 96 43 96 96l0 10.7c0 11.8-9.6 21.3-21.3 21.3l-78.8 0c2.7-7.5 4.1-15.6 4.1-24l0-8c0-34.1-10.6-65.7-28.8-91.6zm-262.4 0C138.6 318.3 128 349.9 128 384l0 8c0 8.4 1.4 16.5 4.1 24l-78.8 0C41.6 416 32 406.4 32 394.7L32 384c0-53 43-96 96-96 10 0 19.7 1.5 28.8 4.4zM72 192a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm152-16a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM176 384c0-61.9 50.1-112 112-112s112 50.1 112 112l0 8c0 13.3-10.7 24-24 24l-176 0c-13.3 0-24-10.7-24-24l0-8z\"]\n};\nvar faHouseMedicalCircleXmark = {\n  prefix: 'fas',\n  iconName: 'house-medical-circle-xmark',\n  icon: [640, 512, [], \"e513\", \"M309.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S50.8 272 64 272l16 0 0 176c0 35.3 28.7 64 64 64l196 0c-21.2-29.5-34.3-65.3-35.9-104L272 408c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 20 0c34.9-48.5 91.7-80 156-80 10.7 0 21.1 .9 31.3 2.5L309.8 8.6zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 400z\"]\n};\nvar faTableList = {\n  prefix: 'fas',\n  iconName: 'table-list',\n  icon: [448, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 0l0 64 64 0 0-64-64 0zm320 0l-192 0 0 64 192 0 0-64zM64 224l0 64 64 0 0-64-64 0zm320 0l-192 0 0 64 192 0 0-64zM64 352l0 64 64 0 0-64-64 0zm320 0l-192 0 0 64 192 0 0-64z\"]\n};\nvar faThList = faTableList;\nvar faFlaskVial = {\n  prefix: 'fas',\n  iconName: 'flask-vial',\n  icon: [640, 512, [], \"e4f3\", \"M184.6 411.5c-3.1 7.3-5.4 14.9-6.8 22.6-14.5 8.8-31.5 13.9-49.8 13.9-53 0-96-43-96-96L32 64C14.3 64 0 49.7 0 32S14.3 0 32 0L224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 255.6-39.4 91.9zM96 64l0 128 64 0 0-128-64 0zM352 0L512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 153.4 91.3 213c2.3 5.4 3.8 11.1 4.4 17l.3 .6-.3 0c.2 1.8 .3 3.6 .3 5.4 0 32.3-26.2 58.6-58.6 58.6l-266.9 0c-32.3 0-58.6-26.2-58.6-58.6 0-1.8 .1-3.6 .3-5.4l-.3 0 .3-.6c.6-5.8 2.1-11.6 4.4-17L320 217.4 320 64c-17.7 0-32-14.3-32-32S302.3 0 320 0l32 0zM453.2 242.6c-3.4-8-5.2-16.5-5.2-25.2l0-153.4-64 0 0 153.4c0 8.7-1.8 17.2-5.2 25.2l-33.2 77.4 140.7 0-33.2-77.4z\"]\n};\nvar faCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'circle-exclamation',\n  icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512a256 256 0 1 1 0-512 256 256 0 1 1 0 512zm0-192a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-192c-18.2 0-32.7 15.5-31.4 33.7l7.4 104c.9 12.6 11.4 22.3 23.9 22.3 12.6 0 23-9.7 23.9-22.3l7.4-104c1.3-18.2-13.1-33.7-31.4-33.7z\"]\n};\nvar faExclamationCircle = faCircleExclamation;\nvar faTaxi = {\n  prefix: 'fas',\n  iconName: 'taxi',\n  icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32l0 32-8.9 0c-42 0-79.1 27.3-91.6 67.4l-23 73.5C14.5 219.1 0 243.9 0 272L0 448c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-32 320 0 0 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-176c0-28.1-14.5-52.9-36.4-67.1l-23-73.5C440.1 91.3 402.9 64 360.9 64l-8.9 0 0-32c0-17.7-14.3-32-32-32L192 0zM151.1 128l209.9 0c14 0 26.4 9.1 30.5 22.5l13 41.5-296.9 0 13-41.5c4.2-13.4 16.5-22.5 30.5-22.5zM96 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCab = faTaxi;\nvar faTextSlash = {\n  prefix: 'fas',\n  iconName: 'text-slash',\n  icon: [576, 512, [\"remove-format\"], \"f87d\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L322.7 256.9 368.2 96 471 96 465 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C545.6 61.3 522.7 32 491.5 32l-319 0c-19.8 0-37.3 12.1-44.5 30.1l-87-87zM180.4 114.5l4.6-18.5 116.7 0-30.8 109-90.5-90.5zM241 310.8L211.3 416 160 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-42.2 0 15.1-53.3-51.9-51.9z\"]\n};\nvar faRemoveFormat = faTextSlash;\nvar faPeoplePulling = {\n  prefix: 'fas',\n  iconName: 'people-pulling',\n  icon: [576, 512, [], \"e535\", \"M80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64L0 320c0 17.7 14.3 32 32 32 9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8l-20.5-122.7 15.7 0 30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7 8.6 3.6 18 3.1 25.9-.7 3.4-1.6 6.6-3.9 9.3-6.7 3.1-3.2 5.5-7 7.1-11.4 .1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9l-21.4-10.7-15.3-36.8c-17.1-41.1-57.3-67.9-101.9-67.9-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128l-53 0zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nvar faBackward = {\n  prefix: 'fas',\n  iconName: 'backward',\n  icon: [576, 512, [9194], \"f04a\", \"M204.3 43.1C215.9 32 233 28.9 247.7 35.2S272 56 272 72l0 136.3 172.3-165.1C455.9 32 473 28.9 487.7 35.2S512 56 512 72l0 368c0 16-9.6 30.5-24.3 36.8s-31.8 3.2-43.4-7.9L272 303.7 272 440c0 16-9.6 30.5-24.3 36.8s-31.8 3.2-43.4-7.9l-192-184C4.5 277.3 0 266.9 0 256s4.5-21.3 12.3-28.9l192-184z\"]\n};\nvar faCarBurst = {\n  prefix: 'fas',\n  iconName: 'car-burst',\n  icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M232 16.1l0-48c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24zM32 168.1l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24zM281.5 70.6c9.4 9.4 24.6 9.4 33.9 0l33.9-33.9c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L281.5 36.6c-9.4 9.4-9.4 24.6 0 33.9zm-181 215l33.9-33.9c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L66.6 251.6c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0zM66.6 2.7c-9.4 9.4-9.4 24.6 0 33.9l33.9 33.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L100.5 2.7C91.1-6.7 76-6.7 66.6 2.7zM352.9 175.4L505 216.2c6.4 1.7 11.1 7.3 11.8 13.9l7.2 74-231.5-62 43.2-60.5c3.9-5.4 10.7-7.9 17.2-6.2zM223.6 228.5l-2.1 2.9c-21.7 5.5-39.9 22.3-46.1 45.5-4.1 15.5-12.4 46.4-24.8 92.7l-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 278.2 74.5-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6 4.1-15.5 12.4-46.4 24.8-92.7l8.3-30.9c6.2-23.2-1.1-46.8-17.2-62.5l-.3-3.6-10-103c-3.2-33.2-26.7-60.9-58.9-69.5L369.5 113.6c-32.2-8.6-66.4 3.6-85.8 30.8l-60.2 84.2zm48.7 57.8a32 32 0 1 1 -16.6 61.8 32 32 0 1 1 16.6-61.8zm208.1 88.9a32 32 0 1 1 61.8 16.6 32 32 0 1 1 -61.8-16.6z\"]\n};\nvar faCarCrash = faCarBurst;\nvar faLink = {\n  prefix: 'fas',\n  iconName: 'link',\n  icon: [576, 512, [128279, \"chain\"], \"f0c1\", \"M419.5 96c-16.6 0-32.7 4.5-46.8 12.7-15.8-16-34.2-29.4-54.5-39.5 28.2-24 64.1-37.2 101.3-37.2 86.4 0 156.5 70 156.5 156.5 0 41.5-16.5 81.3-45.8 110.6l-71.1 71.1c-29.3 29.3-69.1 45.8-110.6 45.8-86.4 0-156.5-70-156.5-156.5 0-1.5 0-3 .1-4.5 .5-17.7 15.2-31.6 32.9-31.1s31.6 15.2 31.1 32.9c0 .9 0 1.8 0 2.6 0 51.1 41.4 92.5 92.5 92.5 24.5 0 48-9.7 65.4-27.1l71.1-71.1c17.3-17.3 27.1-40.9 27.1-65.4 0-51.1-41.4-92.5-92.5-92.5zM275.2 173.3c-1.9-.8-3.8-1.9-5.5-3.1-12.6-6.5-27-10.2-42.1-10.2-24.5 0-48 9.7-65.4 27.1L91.1 258.2c-17.3 17.3-27.1 40.9-27.1 65.4 0 51.1 41.4 92.5 92.5 92.5 16.5 0 32.6-4.4 46.7-12.6 15.8 16 34.2 29.4 54.6 39.5-28.2 23.9-64 37.2-101.3 37.2-86.4 0-156.5-70-156.5-156.5 0-41.5 16.5-81.3 45.8-110.6l71.1-71.1c29.3-29.3 69.1-45.8 110.6-45.8 86.6 0 156.5 70.6 156.5 156.9 0 1.3 0 2.6 0 3.9-.4 17.7-15.1 31.6-32.8 31.2s-31.6-15.1-31.2-32.8c0-.8 0-1.5 0-2.3 0-33.7-18-63.3-44.8-79.6z\"]\n};\nvar faChain = faLink;\nvar faBackwardStep = {\n  prefix: 'fas',\n  iconName: 'backward-step',\n  icon: [384, 512, [\"step-backward\"], \"f048\", \"M363 36.8c-12.9-7-28.7-6.3-41 1.8L64 208.1 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144.1 258 169.6c12.3 8.1 28 8.8 41 1.8s21-20.5 21-35.2l0-368c0-14.7-8.1-28.2-21-35.2z\"]\n};\nvar faStepBackward = faBackwardStep;\nvar faX = {\n  prefix: 'fas',\n  iconName: 'x',\n  icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nvar faCircleUser = {\n  prefix: 'fas',\n  iconName: 'circle-user',\n  icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320l-64 0c-47.4 0-88.9 25.8-111 64.2 35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faRectangleList = {\n  prefix: 'fas',\n  iconName: 'rectangle-list',\n  icon: [512, 512, [\"list-alt\"], \"f022\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm96 256a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-32-96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm120-56l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 128l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faListAlt = faRectangleList;\nvar faHand = {\n  prefix: 'fas',\n  iconName: 'hand',\n  icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4S-3.6 325.7 12.4 341L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208z\"]\n};\nvar faHandPaper = faHand;\nvar faCancer = {\n  prefix: 'fas',\n  iconName: 'cancer',\n  icon: [512, 512, [], \"e847\", \"M408 152c57.4 0 104 46.6 104 104 0 141.4-114.6 256-256 256-54.3 0-104.8-17-146.3-45.9-14.5-10.1-18-30.1-7.9-44.6s30.1-18 44.6-7.9c31.1 21.7 68.9 34.4 109.7 34.4 67.9 0 127.5-35.3 161.7-88.5-3.2 .3-6.4 .5-9.7 .5-57.4 0-104-46.6-104-104s46.6-104 104-104zM256 0c54.3 0 104.8 17 146.3 45.9 14.5 10.1 18 30.1 7.9 44.6s-30.1 18-44.6 7.9c-31.1-21.7-68.9-34.4-109.7-34.4-67.9 0-127.5 35.2-161.7 88.4 3.2-.3 6.4-.4 9.7-.4 57.4 0 104 46.6 104 104S161.4 360 104 360 0 313.4 0 256C0 254.1 0 252.2 .1 250.4 3.1 111.6 116.5 0 256 0zM104 216a40 40 0 1 0 0 80 40 40 0 1 0 0-80zm304 0a40 40 0 1 0 0 80 40 40 0 1 0 0-80z\"]\n};\nvar faVanShuttle = {\n  prefix: 'fas',\n  iconName: 'van-shuttle',\n  icon: [576, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 64C28.7 64 0 92.7 0 128L0 336c0 35.3 28.7 64 64 64l.4 0c4 44.9 41.7 80 87.6 80s83.6-35.1 87.6-80l104.7 0c4 44.9 41.7 80 87.6 80 46.1 0 83.9-35.4 87.7-80.5 31.7-3.8 56.3-30.8 56.3-63.5l0-101.3c0-13.8-4.5-27.3-12.8-38.4l-80-106.7C471.1 73.5 452.1 64 432 64L64 64zM504 224l-120 0 0-96 48 0 72 96zM64 224l0-96 96 0 0 96-96 0zm160 0l0-96 96 0 0 96-96 0zM392 392a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM152 352a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faShuttleVan = faVanShuttle;\nvar faStairs = {\n  prefix: 'fas',\n  iconName: 'stairs',\n  icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96z\"]\n};\nvar faHorseHead = {\n  prefix: 'fas',\n  iconName: 'horse-head',\n  icon: [512, 512, [], \"f7ab\", \"M0 464L0 316.9C0 208.5 68.3 111.8 170.5 75.6L340.2 15.5c21.4-7.6 43.8 8.3 43.8 30.9 0 11-5.5 21.2-14.6 27.3L336 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5-16 16-37.8 25.1-60.5 25.1l-3.4 0c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0c-6.3 0-12.5-.5-18.6-1.5-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2-4.4-7.7-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4 0 20.3-16.5 36.8-36.8 36.8L48 512c-26.5 0-48-21.5-48-48zM328 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faVault = {\n  prefix: 'fas',\n  iconName: 'vault',\n  icon: [512, 512, [], \"e2c5\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64 0 17.7 14.3 32 32 32s32-14.3 32-32l256 0c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM256 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM64 256a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zm384-48c0 17.8-9.7 33.3-24 41.6l0 78.4c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-78.4c-14.3-8.3-24-23.8-24-41.6 0-26.5 21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faClosedCaptioningSlash = {\n  prefix: 'fas',\n  iconName: 'closed-captioning-slash',\n  icon: [576, 512, [], \"e135\", \"M7-24.9c9.4-9.4 24.6-9.4 33.9 0L129.8 64 480 64c35.3 0 64 28.7 64 64l0 256c0 25.5-14.9 47.4-36.4 57.8L569 503.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9.1C-2.3-.3-2.3-15.5 7-24.9zm345 311l0-70.2c0-4.4 3.6-8 8-8l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 22.2 48 48zm61.5 61.5c20.2-8.4 34.5-28.4 34.5-51.7 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-22.2 0 43.7 43.7zM130.3 200.1c-1.5 5-2.3 10.4-2.3 15.9l0 80c0 30.9 25.1 56 56 56l32 0c18.1 0 34.1-8.5 44.4-21.8L378.2 448 96 448c-35.3 0-64-28.7-64-64l0-256c0-7.8 1.4-15.3 4-22.2l94.3 94.3zm93.8 93.8c-.1 .7-.1 1.4-.1 2.1 0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-50.2 48.1 48.1z\"]\n};\nvar faDrumSteelpan = {\n  prefix: 'fas',\n  iconName: 'drum-steelpan',\n  icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128l0 192c0 80-128.9 128-288 128S0 432 0 352L0 160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4 0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5 47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4-47.1 19.9-55 39.9-55 49.8s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5 0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8c-.9 4.3-1.4 8.7-1.4 13.2 0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2-19.8-1.8-40.8-2.8-62.6-2.8s-42.8 1-62.6 2.8z\"]\n};\nvar faThumbsUp = {\n  prefix: 'fas',\n  iconName: 'thumbs-up',\n  icon: [512, 512, [128077, 61575], \"f164\", \"M80 160c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32L0 192c0-17.7 14.3-32 32-32l48 0zM270.6 16C297.9 16 320 38.1 320 65.4l0 4.2c0 6.8-1.3 13.6-3.8 19.9L288 160 448 160c26.5 0 48 21.5 48 48 0 19.7-11.9 36.6-28.9 44 17 7.4 28.9 24.3 28.9 44 0 23.4-16.8 42.9-39 47.1 4.4 7.3 7 15.8 7 24.9 0 22.2-15 40.8-35.4 46.3 2.2 5.5 3.4 11.5 3.4 17.7 0 26.5-21.5 48-48 48l-87.9 0c-36.3 0-71.6-12.4-99.9-35.1L184 435.2c-15.2-12.1-24-30.5-24-50l0-186.6c0-14.9 3.5-29.6 10.1-42.9L226.3 43.3C234.7 26.6 251.8 16 270.6 16z\"]\n};\nvar faStamp = {\n  prefix: 'fas',\n  iconName: 'stamp',\n  icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47 12.6-16.2 20.1-36.6 20.1-58.8 0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8 10.7 13.8 19.9 29.6 19.9 47 0 29.9-24.3 54.2-54.2 54.2L112 256c-61.9 0-112 50.1-112 112 0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112l-33.8 0c-29.9 0-54.2-24.3-54.2-54.2zM56 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l400 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L56 464z\"]\n};\nvar faMenorah = {\n  prefix: 'fas',\n  iconName: 'menorah',\n  icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1L64 64c0 17.7-14.3 32-32 32S0 81.7 0 64l0-1.2c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32S96 81.7 96 64l0-1.2c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32l0 128c0 17.7 14.3 32 32 32l192 0 0-160c0-17.7 14.3-32 32-32s32 14.3 32 32l0 160 192 0c17.7 0 32-14.3 32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 128c0 53-43 96-96 96l-192 0 0 64 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0 0-64-192 0c-53 0-96-43-96-96L0 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 128-64 0 0-128c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 128-64 0 0-128c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32l0 128-64 0 0-128c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 128-64 0 0-128c0-17.7 14.3-32 32-32z\"]\n};\nvar faChildren = {\n  prefix: 'fas',\n  iconName: 'children',\n  icon: [640, 512, [], \"e4e1\", \"M160.5 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm-72 480l0-80-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L86.7 285.5 58 323.3c-10.7 14.1-30.8 16.8-44.8 6.2S-3.7 298.7 7 284.7L65.9 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47L314 284.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.7-37.8 31.1 93.4c3.5 10.4-4.3 21.1-15.2 21.1l-17.8 0 0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80-16 0 0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480.5 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm-8 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-179.5-12.9 20.5c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9l12.3 0c33 0 63.7 16.9 81.2 44.9L619.6 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10l-12.9-20.5 0 179.5c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0z\"]\n};\nvar faChartLine = {\n  prefix: 'fas',\n  iconName: 'chart-line',\n  icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7 262.6 153.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l73.4-73.4 57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLineChart = faChartLine;\nvar faSquareEnvelope = {\n  prefix: 'fas',\n  iconName: 'square-envelope',\n  icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM209.1 267.9L108.4 207.4c-7.7-4.6-12.4-12.9-12.4-21.9 0-14.1 11.4-25.5 25.5-25.5l204.9 0c14.1 0 25.5 11.4 25.5 25.5 0 9-4.7 17.3-12.4 21.9L238.9 267.9c-4.5 2.7-9.6 4.1-14.9 4.1s-10.4-1.4-14.9-4.1zM352 237.3l0 82.7c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32l0-82.7 96.7 58C202.1 301 213 304 224 304s21.9-3 31.3-8.7l96.7-58z\"]\n};\nvar faEnvelopeSquare = faSquareEnvelope;\nvar faBanSmoking = {\n  prefix: 'fas',\n  iconName: 'ban-smoking',\n  icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8l79.2 79.2-50.7 0c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l146.7 0 92.5 92.5c-31.4 22.4-69.8 35.5-111.2 35.5-106 0-192-86-192-192 0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32 82.7 0 0 32-50.7 0zm32 32l18.7 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32L269.3 224 144.8 99.5c31.4-22.4 69.8-35.5 111.2-35.5 106 0 192 86 192 192 0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16 0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16s7.2 16 16 16 16-7.2 16-16c0-26.5-21.5-48-48-48l-32 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16z\"]\n};\nvar faSmokingBan = faBanSmoking;\nvar faTruckFront = {\n  prefix: 'fas',\n  iconName: 'truck-front',\n  icon: [448, 512, [], \"e2b7\", \"M0 112C0 67.8 35.8 32 80 32l288 0c44.2 0 80 35.8 80 80l0 256c0 26.2-12.6 49.4-32 64l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48C12.6 417.4 0 394.2 0 368L0 112zm96 80l0 64 256 0 0-64c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32zm32 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm224 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBuilding = {\n  prefix: 'fas',\n  iconName: 'building',\n  icon: [384, 512, [127970, 61687], \"f1ad\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM176 352l32 0c17.7 0 32 14.3 32 32l0 80-96 0 0-80c0-17.7 14.3-32 32-32zM96 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM240 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM96 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm144-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nvar faBullseye = {\n  prefix: 'fas',\n  iconName: 'bullseye',\n  icon: [512, 512, [], \"f140\", \"M448 256a192 192 0 1 0 -384 0 192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faArrowLeftLong = {\n  prefix: 'fas',\n  iconName: 'arrow-left-long',\n  icon: [576, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 544 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-434.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nvar faLongArrowLeft = faArrowLeftLong;\nvar faChessRook = {\n  prefix: 'fas',\n  iconName: 'chess-rook',\n  icon: [384, 512, [9820], \"f447\", \"M0 32L0 133.5c0 17 6.7 33.3 18.7 45.3L64 224 64 384 7.8 454.3C2.7 460.6 0 468.4 0 476.5 0 496.1 15.9 512 35.5 512l312.9 0c19.6 0 35.5-15.9 35.5-35.5 0-8.1-2.7-15.9-7.8-22.2l-56.2-70.3 0-160 45.3-45.3c12-12 18.7-28.3 18.7-45.3L384 32c0-17.7-14.3-32-32-32L320 0c-17.7 0-32 14.3-32 32l0 32-48 0 0-32c0-17.7-14.3-32-32-32L176 0c-17.7 0-32 14.3-32 32l0 32-48 0 0-32C96 14.3 81.7 0 64 0L32 0C14.3 0 0 14.3 0 32z\"]\n};\nvar faBlenderPhone = {\n  prefix: 'fas',\n  iconName: 'blender-phone',\n  icon: [576, 512, [], \"f6b6\", \"M151.4 13.2c10.2 5.8 14.5 18.4 10 29.3L138.2 98.8c-3.9 9.6-13.7 15.4-24 14.4l-20.2-2C78.7 152.9 78 198.9 91.9 241.1l22.4-2.2c10.3-1 20 4.8 24 14.4l23.2 56.3c4.5 10.9 .2 23.4-10 29.3l-2.9 1.6c-33.6 19.2-81.7 16.2-106.2-21.6-56.3-86.6-56.3-199.1 0-285.7 24.6-37.7 72.7-40.7 106.2-21.6l2.9 1.6zM224 336L193.7 17.5C192.8 8.1 200.2 0 209.6 0l324 0c21.3 0 36.6 20.3 30.8 40.8L553.1 80 440 80c-13.3 0-24 10.7-24 24s10.7 24 24 24l99.4 0-18.3 64-81.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l67.4 0-27.4 96-256 0zm8 48l240 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-240 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm120 88a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faArrowTurnUp = {\n  prefix: 'fas',\n  iconName: 'arrow-turn-up',\n  icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nvar faLevelUp = faArrowTurnUp;\nvar faBicycle = {\n  prefix: 'fas',\n  iconName: 'bicycle',\n  icon: [640, 512, [128690], \"f206\", \"M331.7 43.3C336 36.3 343.7 32 352 32l104 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-65.6 0 72.2 148.4c10.7-2.9 21.9-4.4 33.4-4.4 70.7 0 128 57.3 128 128s-57.3 128-128 128-128-57.3-128-128c0-42 20.2-79.2 51.4-102.6l-20.4-41.9-73.5 147c-2.3 4.8-6.3 8.8-11.4 11.2-.6 .3-1.2 .5-1.8 .7-2.9 1.1-5.9 1.6-8.9 1.5L271 368c-7.9 63.1-61.7 112-127 112-70.7 0-128-57.3-128-128S73.3 224 144 224c10.8 0 21.2 1.3 31.2 3.8l28.5-56.9-11.5-26.9-40.2 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l56 0c9.6 0 18.3 5.7 22.1 14.5l14.3 33.5 123.7 0-37.7-77.5c-3.6-7.4-3.2-16.2 1.2-23.2zM228.5 228.7l-45.6 91.3 84.8 0-39.1-91.3zM305.7 287l47.5-95-88.2 0 40.7 95zm168.7 75.5l-29.7-61c-12.8 13-20.7 30.8-20.7 50.5 0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72c-2.7 0-5.5 .2-8.1 .5l29.7 61c5.8 11.9 .8 26.3-11.1 32.1s-26.3 .8-32.1-11.1zM149.2 368c-20.2 0-33.4-21.3-24.3-39.4l24.2-48.5c-1.7-.1-3.4-.2-5.1-.2-39.8 0-72 32.2-72 72s32.2 72 72 72c34.3 0 62.9-23.9 70.2-56l-65 0z\"]\n};\nvar faCircleArrowDown = {\n  prefix: 'fas',\n  iconName: 'circle-arrow-down',\n  icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM239 377l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l39 39 0-150.1c0-13.3 10.7-24 24-24s24 10.7 24 24l0 150.1 39-39c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0z\"]\n};\nvar faArrowCircleDown = faCircleArrowDown;\nvar faGear = {\n  prefix: 'fas',\n  iconName: 'gear',\n  icon: [512, 512, [9881, \"cog\"], \"f013\", \"M195.1 9.5C198.1-5.3 211.2-16 226.4-16l59.8 0c15.2 0 28.3 10.7 31.3 25.5L332 79.5c14.1 6 27.3 13.7 39.3 22.8l67.8-22.5c14.4-4.8 30.2 1.2 37.8 14.4l29.9 51.8c7.6 13.2 4.9 29.8-6.5 39.9L447 233.3c.9 7.4 1.3 15 1.3 22.7s-.5 15.3-1.3 22.7l53.4 47.5c11.4 10.1 14 26.8 6.5 39.9l-29.9 51.8c-7.6 13.1-23.4 19.2-37.8 14.4l-67.8-22.5c-12.1 9.1-25.3 16.7-39.3 22.8l-14.4 69.9c-3.1 14.9-16.2 25.5-31.3 25.5l-59.8 0c-15.2 0-28.3-10.7-31.3-25.5l-14.4-69.9c-14.1-6-27.2-13.7-39.3-22.8L73.5 432.3c-14.4 4.8-30.2-1.2-37.8-14.4L5.8 366.1c-7.6-13.2-4.9-29.8 6.5-39.9l53.4-47.5c-.9-7.4-1.3-15-1.3-22.7s.5-15.3 1.3-22.7L12.3 185.8c-11.4-10.1-14-26.8-6.5-39.9L35.7 94.1c7.6-13.2 23.4-19.2 37.8-14.4l67.8 22.5c12.1-9.1 25.3-16.7 39.3-22.8L195.1 9.5zM256.3 336a80 80 0 1 0 -.6-160 80 80 0 1 0 .6 160z\"]\n};\nvar faCog = faGear;\nvar faMarsAndVenusBurst = {\n  prefix: 'fas',\n  iconName: 'mars-and-venus-burst',\n  icon: [640, 512, [], \"e523\", \"M464-32c0 17.7 14.3 32 32 32l34.7 0-63 63c-28.4-19.5-62.7-31-99.8-31-97.2 0-176 78.8-176 176 0 86.3 62.1 158.1 144 173.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9c81.9-15 144-86.8 144-173.1 0-37-11.4-71.4-31-99.8l63-63 0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-112c0-17.7-14.3-32-32-32L496-64c-17.7 0-32 14.3-32 32zM368 96a112 112 0 1 1 0 224 112 112 0 1 1 0-224zM190.9-21.9C188.4-28 182.6-32 176-32s-12.4 4-14.9 10.1l-29.4 74-76.2-23.1c-6.3-1.9-13.1 .2-17.2 5.3S33.8 46.5 37 52.2l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2-5.6 79.4c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L152.1 268c-5.3-19.1-8.1-39.2-8.1-60 0-65.4 28-124.2 72.6-165.1L190.9-21.9z\"]\n};\nvar faOtter = {\n  prefix: 'fas',\n  iconName: 'otter',\n  icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5 23.5 0 42.6-19.1 42.6-42.6l0-21.4c0-35.3-28.7-64-64-64l-64 0c-35.3 0-64 28.7-64 64l0 21.4c0 23.5 19.1 42.6 42.6 42.6 6.6 0 13.1-1.5 19.1-4.5 9.3-4.7 16.4-8.2 21.2-10.6L135.1 185c-4.5-3-7.1-8-7.1-13.3l0-3.7c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24l0 3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4l-12.9-6.4-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6-3.6 0-7.1-.2-10.6-.6l0 .6c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l160 0 0-64c0-23.7 12.9-44.4 32-55.4 9.4-5.4 20.3-8.6 32-8.6l0-16c0-26.5 21.5-48 48-48 8.8 0 16 7.2 16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-99.7c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1 0 0c0 123.7-100.3 224-224 224l-160.6 0C132 480 32 380 32 256.6l0-39.8c-10.1-14.6-16-32.3-16-51.4l0-21.4 0-1.4C6.7 139.3 0 130.5 0 120 0 106.7 10.7 96 24 96l2.8 0C44.8 58.2 83.3 32 128 32l64 0c44.7 0 83.2 26.2 101.2 64l2.8 0c13.3 0 24 10.7 24 24 0 10.5-6.7 19.3-16 22.6l0 1.4 0 21.4c0 1.4 0 2.8-.1 4.3 12-6.2 25.7-9.6 40.1-9.6l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-13.3 0-24 10.7-24 24l0 8 56.4 0c-15.2 17-24.4 39.4-24.4 64l-32 0c-42.3 0-78.2-27.4-91-65.3-5.1 .9-10.3 1.3-15.6 1.3-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faCircleChevronLeft = {\n  prefix: 'fas',\n  iconName: 'circle-chevron-left',\n  icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256a256 256 0 1 0 -512 0 256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nvar faChevronCircleLeft = faCircleChevronLeft;\nvar faCircleQuestion = {\n  prefix: 'fas',\n  iconName: 'circle-question',\n  icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm0-336c-17.7 0-32 14.3-32 32 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 47.2-36 67.2-56 74.5l0 3.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8.1c0-20.5 14.8-35.2 30.1-40.2 6.4-2.1 13.2-5.5 18.2-10.3 4.3-4.2 7.7-10 7.7-19.6 0-17.7-14.3-32-32-32zM224 368a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faWalkieTalkie = {\n  prefix: 'fas',\n  iconName: 'walkie-talkie',\n  icon: [384, 512, [], \"f8ef\", \"M88-32c13.3 0 24 10.7 24 24l0 72 48 0c0-17.7 14.3-32 32-32s32 14.3 32 32l32 0c0-17.7 14.3-32 32-32s32 14.3 32 32l16 0c26.5 0 48 21.5 48 48l0 160.9c0 9.9-2.3 19.7-6.8 28.6l-20.2 40.4c-3.3 6.7-5.1 14-5.1 21.5l0 84.7c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-84.7c0-7.5-1.7-14.8-5.1-21.5L6.8 301.5C2.3 292.6 0 282.8 0 272.9L0 112C0 85.5 21.5 64 48 64l16 0 0-72c0-13.3 10.7-24 24-24zm32 176c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nvar faUserGroup = {\n  prefix: 'fas',\n  iconName: 'user-group',\n  icon: [576, 512, [128101, \"user-friends\"], \"f500\", \"M64 128a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zM0 464c0-97.2 78.8-176 176-176s176 78.8 176 176l0 6c0 23.2-18.8 42-42 42L42 512c-23.2 0-42-18.8-42-42l0-6zM432 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 240c79.5 0 144 64.5 144 144l0 22.4c0 23-18.6 41.6-41.6 41.6l-144.8 0c6.6-12.5 10.4-26.8 10.4-42l0-6c0-51.5-17.4-98.9-46.5-136.7 22.6-14.7 49.6-23.3 78.5-23.3z\"]\n};\nvar faUserFriends = faUserGroup;\nvar faHouseChimney = {\n  prefix: 'fas',\n  iconName: 'house-chimney',\n  icon: [512, 512, [63499, \"home-lg\"], \"e3af\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-288 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208zM240 320c-26.5 0-48 21.5-48 48l0 96 128 0 0-96c0-26.5-21.5-48-48-48l-32 0z\"]\n};\nvar faHomeLg = faHouseChimney;\nvar faRightFromBracket = {\n  prefix: 'fas',\n  iconName: 'right-from-bracket',\n  icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M505 273c9.4-9.4 9.4-24.6 0-33.9L361 95c-6.9-6.9-17.2-8.9-26.2-5.2S320 102.3 320 112l0 80-112 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l112 0 0 80c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2L505 273zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nvar faSignOutAlt = faRightFromBracket;\nvar faFile = {\n  prefix: 'fas',\n  iconName: 'file',\n  icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-277.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176z\"]\n};\nvar faPlaneSlash = {\n  prefix: 'fas',\n  iconName: 'plane-slash',\n  icon: [576, 512, [], \"e069\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-183.4-183.4 7.1-7.7 127.3 0c30.9 0 56-25.1 56-56s-25.1-56-56-56L392.7 200 233.5 26.4C227.5 19.8 218.9 16 209.9 16l-43.7 0c-10.9 0-18.6 10.7-15.2 21.1L175.1 109.2 41-24.9zM130.2 200l-24.6 0-52.8-66c-3-3.8-7.6-6-12.5-6l-19.8 0c-10.4 0-18 9.8-15.5 19.9L32 256 5 364.1C2.4 374.2 10.1 384 20.5 384l19.8 0c4.9 0 9.5-2.2 12.5-6l52.8-66 99.7 0-54.3 162.9c-3.5 10.4 4.3 21.1 15.2 21.1l43.7 0c9 0 17.5-3.8 23.6-10.4L320.7 390.5 130.2 200z\"]\n};\nvar faCloudShowersHeavy = {\n  prefix: 'fas',\n  iconName: 'cloud-showers-heavy',\n  icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96 0-42.5 27.6-78.6 65.9-91.2-1.3-6.7-1.9-13.7-1.9-20.8 0-61.9 50.1-112 112-112 43.1 0 80.5 24.3 99.2 60 14.7-17.1 36.5-28 60.8-28 44.2 0 80 35.8 80 80 0 5.5-.6 10.8-1.6 16 .5 0 1.1 0 1.6 0 53 0 96 43 96 96s-43 96-96 96L96 320zm6.8 79.6l-32 96C66.6 508.2 53 515 40.4 510.8S21 493 25.2 480.4l32-96C61.4 371.8 75 365 87.6 369.2S107 387 102.8 399.6zm120 0l-32 96c-4.2 12.6-17.8 19.4-30.4 15.2S141 493 145.2 480.4l32-96c4.2-12.6 17.8-19.4 30.4-15.2S227 387 222.8 399.6zm112 0l-32 96c-4.2 12.6-17.8 19.4-30.4 15.2S253 493 257.2 480.4l32-96c4.2-12.6 17.8-19.4 30.4-15.2S339 387 334.8 399.6zm120 0l-32 96c-4.2 12.6-17.8 19.4-30.4 15.2S373 493 377.2 480.4l32-96c4.2-12.6 17.8-19.4 30.4-15.2S459 387 454.8 399.6z\"]\n};\nvar faPersonFalling = {\n  prefix: 'fas',\n  iconName: 'person-falling',\n  icon: [512, 512, [], \"e546\", \"M320 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 5.4c0 45-23.6 86.6-62.1 109.8l-4.6 2.8C131.4 184.7 96 247.1 96 314.6L96 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-69.4c0-16.7 3.3-33 9.4-48L359.2 500.2c11.1 13.7 31.3 15.8 45 4.7s15.8-31.3 4.7-45L295.2 320 400 320 438.4 371.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C437.3 263.1 423.1 256 408 256l-89 0-62.9-75.5c40.3-36 63.9-87.9 63.9-143.1l0-5.4zM104 144a56 56 0 1 0 0-112 56 56 0 1 0 0 112z\"]\n};\nvar faTurnDown = {\n  prefix: 'fas',\n  iconName: 'turn-down',\n  icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9S332.9 320 320 320l-64 0 0-160C256 71.6 184.4 0 96 0L32 0C14.3 0 0 14.3 0 32L0 96c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32l0 160-64 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nvar faLevelDownAlt = faTurnDown;\nvar faUpRightAndDownLeftFromCenter = {\n  prefix: 'fas',\n  iconName: 'up-right-and-down-left-from-center',\n  icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0L488 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87-39-39c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512L24 512c-13.3 0-24-10.7-24-24L0 344c0-9.7 5.8-18.5 14.8-22.2S34.1 320.2 41 327l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2S177.7 512 168 512z\"]\n};\nvar faExpandAlt = faUpRightAndDownLeftFromCenter;\nvar faUserTag = {\n  prefix: 'fas',\n  iconName: 'user-tag',\n  icon: [640, 512, [], \"f507\", \"M256.1 8a120 120 0 1 1 0 240 120 120 0 1 1 0-240zM226.4 304l59.4 0c6.7 0 13.2 .4 19.7 1.1-.9 4.9-1.4 9.9-1.4 15l0 92.1c0 25.5 10.1 49.9 28.1 67.9l31.9 31.9-286.3 0c-16.4 0-29.7-13.3-29.7-29.7 0-98.5 79.8-178.3 178.3-178.3zM352.1 412.2l0-92.1c0-17.7 14.3-32 32-32l92.1 0c12.7 0 24.9 5.1 33.9 14.1l96 96c18.7 18.7 18.7 49.1 0 67.9l-76.1 76.1c-18.7 18.7-49.1 18.7-67.9 0l-96-96c-9-9-14.1-21.2-14.1-33.9zm104-44.2a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHandSparkles = {\n  prefix: 'fas',\n  iconName: 'hand-sparkles',\n  icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32l0 208c0 8.8 7.2 16 16 16s16-7.2 16-16l0-176c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-112c0-17.7 14.3-32 32-32s32 14.3 32 32l0 178.2c-19.2 5.4-34.7 20.4-40.4 40.3l-6.5 22.7-22.7 6.5c-25.2 7.2-42.5 30.2-42.5 56.4 0 22.1 12.4 42 31.4 51.9-27.5 17.8-60.2 28.1-95.4 28.1l-19.2 0c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6l0-272c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-208c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6l-7.3 25.4-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7l25.4 7.3 7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6l7.3-25.4 25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7l-25.4-7.3-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456 570.2 504.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456 487.7 442.2c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408 549.8 359.7c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nvar faArrowsToDot = {\n  prefix: 'fas',\n  iconName: 'arrows-to-dot',\n  icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32l0 32 32 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9S179.1 64 192 64l32 0 0-32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9S332.9 448 320 448l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9S64 332.9 64 320l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9S448 179.1 448 192l0 32 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFaceSadCry = {\n  prefix: 'fas',\n  iconName: 'face-sad-cry',\n  icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6L160 296c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 171.7C44.4 421.6 0 344 0 256 0 114.6 114.6 0 256 0S512 114.6 512 256c0 88-44.4 165.6-112 211.7L400 296c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 197.4zM152 196l16 0c11 0 20 9 20 20s9 20 20 20 20-9 20-20c0-33.1-26.9-60-60-60l-16 0c-33.1 0-60 26.9-60 60 0 11 9 20 20 20s20-9 20-20 9-20 20-20zm172 20c0-11 9-20 20-20l16 0c11 0 20 9 20 20s9 20 20 20 20-9 20-20c0-33.1-26.9-60-60-60l-16 0c-33.1 0-60 26.9-60 60 0 11 9 20 20 20s20-9 20-20zM208 336l0 32c0 26.5 21.5 48 48 48s48-21.5 48-48l0-32c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faDongSign = {\n  prefix: 'fas',\n  iconName: 'dong-sign',\n  icon: [384, 512, [], \"e169\", \"M288-16c-17.7 0-32 14.3-32 32l0 32-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0 0 72.2c-22.9-15.3-50.4-24.2-80-24.2-79.5 0-144 64.5-144 144S96.5 432 176 432c30 0 57.8-9.1 80.8-24.8 3.3 14.2 16 24.8 31.2 24.8 17.7 0 32-14.3 32-32l0-304 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-32c0-17.7-14.3-32-32-32zM96 288a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 464z\"]\n};\nvar faPeopleLine = {\n  prefix: 'fas',\n  iconName: 'people-line',\n  icon: [576, 512, [], \"e534\", \"M288 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm96 312c0 25-12.7 47-32 59.9l0 44.1-128 0 0-44.1C204.7 359 192 337 192 312l0-40c0-53 43-96 96-96s96 43 96 96l0 40zm16 104l0-27.3c19.9-22.5 32-52.2 32-84.7l0-32c0-26.7-7.3-51.6-19.9-73.1 11.1-4.5 23.2-6.9 35.9-6.9 53 0 96 43 96 96l0 32c0 23.7-12.9 44.4-32 55.4l0 40.6-112 0zM64 375.4C44.9 364.4 32 343.7 32 320l0-32c0-53 43-96 96-96 12.7 0 24.8 2.5 35.9 6.9-12.6 21.4-19.9 46.4-19.9 73.1l0 32c0 32.5 12.1 62.1 32 84.7l0 27.3-112 0 0-40.6zM128 32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm320 0a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM24 464l528 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSquareRss = {\n  prefix: 'fas',\n  iconName: 'square-rss',\n  icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 136c0-13.3 10.7-24 24-24 137 0 248 111 248 248 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24 83.9 0 152 68.1 152 152 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faRssSquare = faSquareRss;\nvar faCalendarMinus = {\n  prefix: 'fas',\n  iconName: 'calendar-minus',\n  icon: [448, 512, [], \"f272\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zm24 264c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nvar faChartDiagram = {\n  prefix: 'fas',\n  iconName: 'chart-diagram',\n  icon: [512, 512, [], \"e695\", \"M80 32C53.5 32 32 53.5 32 80s21.5 48 48 48l152 0 0 40-48 48-72 0c-39.8 0-72 32.2-72 72l0 64-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-64c0-13.3 10.7-24 24-24l72 0 48 48 0 40-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-40 48-48 72 0c13.3 0 24 10.7 24 24l0 64-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-64c0-39.8-32.2-72-72-72l-72 0-48-48 0-40 152 0c26.5 0 48-21.5 48-48s-21.5-48-48-48L80 32z\"]\n};\nvar faFaceTired = {\n  prefix: 'fas',\n  iconName: 'face-tired',\n  icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4 6.2 11.7 10.3 24.4 10.3 35.9 0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3l-3.2 0c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8S128 405.2 128 400c0-11.6 4.2-24.2 10.3-35.9 6.3-12 15.3-24.3 26.4-35.4zM122.6 159.2c4.5-6.8 13.3-9.2 20.6-5.5l79.6 40c5.4 2.7 8.8 8.2 8.8 14.3s-3.4 11.6-8.8 14.3l-79.6 40c-7.3 3.6-16.1 1.3-20.6-5.5s-3.1-15.9 3.1-21.1L159 208 125.8 180.3c-6.2-5.2-7.6-14.3-3.1-21.1zm263.6 21.1L353 208 386.2 235.7c6.2 5.2 7.6 14.3 3.1 21.1s-13.3 9.2-20.6 5.5l-79.6-40c-5.4-2.7-8.8-8.2-8.8-14.3s3.4-11.6 8.8-14.3l79.6-40c7.3-3.6 16.1-1.3 20.6 5.5s3.1 15.9-3.1 21.1z\"]\n};\nvar faTired = faFaceTired;\nvar faHandPointRight = {\n  prefix: 'fas',\n  iconName: 'hand-point-right',\n  icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm64-64c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32 0 13.2 4 25.4 10.8 35.6-24.9 8.7-42.8 32.5-42.8 60.4 0 11.7 3.1 22.6 8.6 32l-8.6 0C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64l0 88c0 22.1-17.9 40-40 40s-40-17.9-40-40l0-56c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 56c0 39.8 32.2 72 72 72z\"]\n};\nvar faArrowUp = {\n  prefix: 'fas',\n  iconName: 'arrow-up',\n  icon: [384, 512, [8593], \"f062\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 105.4 105.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nvar faCubesStacked = {\n  prefix: 'fas',\n  iconName: 'cubes-stacked',\n  icon: [512, 512, [], \"e4e6\", \"M192 32c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64zm32 352l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm192 0l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM320 192l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm-182.6-3.9c12.5-12.5 32.8-12.5 45.3 0l45.3 45.3c12.5 12.5 12.5 32.8 0 45.3l-45.3 45.3c-12.5 12.5-32.8 12.5-45.3 0L92.1 278.6c-12.5-12.5-12.5-32.8 0-45.3l45.3-45.3zM32 384l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32z\"]\n};\nvar faChildCombatant = {\n  prefix: 'fas',\n  iconName: 'child-combatant',\n  icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176.5 128a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-16 352l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192.2 20.9 33.2c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-39.9-63.3C266.8 184 223.3 160 176.5 160S86.2 184 61.3 223.6L21.4 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10l20.9-33.2 0 192.2c0 17.7 14.3 32 32 32s32-14.3 32-32zM448.5 0l-32 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l0 100.3c-9.6 5.5-16 15.9-16 27.7l0 32c-17.7 0-32 14.3-32 32l0 144c0 17.7 14.3 32 32 32l16 0 0 96c0 8.8 7.2 16 16 16l59.5 0c10.4 0 18-9.8 15.5-19.9l-23-92.1 44 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-48 0 0-26.7 53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2l0-84.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 56-16 5.3 0-109.3c0-11.8-6.4-22.2-16-27.7l0-116.3c0-8.8-7.2-16-16-16z\"]\n};\nvar faChildRifle = faChildCombatant;\nvar faVestPatches = {\n  prefix: 'fas',\n  iconName: 'vest-patches',\n  icon: [448, 512, [], \"e086\", \"M200 293.9L200 464c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6L64 48C64 21.5 85.5 0 112 0l3.5 0c.3 0 .6 0 1 0 .6 0 1.2 0 1.8 0 18.8 0 34.1 9.7 44.1 18.8 9.3 8.4 28.5 21.2 61.7 21.2s52.4-12.8 61.7-21.2c10-9.1 25.3-18.8 44.1-18.8 .6 0 1.2 0 1.8 0 .3 0 .6 0 1 0L336 0c26.5 0 48 21.5 48 48l0 97.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6L448 464c0 26.5-21.5 48-48 48l-104 0c-26.5 0-48-21.5-48-48l0-170.1c0-3.9 .5-7.8 1.4-11.6L303.6 65.4C285.9 77.2 259.8 88 224 88s-61.9-10.8-79.6-22.6l54.2 216.8c1 3.8 1.4 7.7 1.4 11.6zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305 111.5 320.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288 128.5 272.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280l0 40c0 8.8 7.2 16 16 16l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faMartiniGlassEmpty = {\n  prefix: 'fas',\n  iconName: 'martini-glass-empty',\n  icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 32C19.1 32 7.4 39.8 2.4 51.8S.2 77.5 9.4 86.6l214.6 214.6 0 146.7-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-146.7 214.6-214.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 32 480 32L32 32zM256 242.7L109.3 96 402.7 96 256 242.7z\"]\n};\nvar faGlassMartini = faMartiniGlassEmpty;\nvar faMagnet = {\n  prefix: 'fas',\n  iconName: 'magnet',\n  icon: [448, 512, [129522], \"f076\", \"M0 176L0 288C0 411.7 100.3 512 224 512S448 411.7 448 288l0-112-128 0 0 112c0 53-43 96-96 96s-96-43-96-96l0-112-128 0zm0-48l128 0 0-64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64zm320 0l128 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64z\"]\n};\nvar faRoadBarrier = {\n  prefix: 'fas',\n  iconName: 'road-barrier',\n  icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 266.3 149.2 96 64 96 64 64c0-17.7-14.3-32-32-32zM405.2 96l-74.3 0-5.4 10.7-90.6 181.3 74.3 0 5.4-10.7 90.6-181.3zM362.8 288l74.3 0 5.4-10.7 90.6-181.3-74.3 0-5.4 10.7-90.6 181.3zM202.8 96l-5.4 10.7-90.6 181.3 74.3 0 5.4-10.7 90.6-181.3-74.3 0zm288 192l85.2 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.7-85.2 170.3z\"]\n};\nvar faCompassDrafting = {\n  prefix: 'fas',\n  iconName: 'compass-drafting',\n  icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M99.3 256.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2 0-53 43-96 96-96s96 43 96 96c0 14.3-3.1 27.9-8.8 40.2l44.4 76.7c-23.1 26-53.7 45.1-88.4 53.8L256 191.9 187.9 309.5c21.5 6.8 44.3 10.5 68.1 10.5 70.7 0 133.8-32.7 174.9-84 11.1-13.8 31.2-16 45-5s16 31.2 5 45c-52.7 65.8-133.9 108-224.8 108-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496l0-55.4c0-8.4 2.2-16.7 6.5-24.1l60-103.7c-12.8-11.2-24.6-23.5-35.3-36.8-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1zM381.1 407.9c32.5-13 62.4-31 88.9-52.9l35.6 61.5c4.2 7.3 6.5 15.6 6.5 24.1l0 55.4c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9l-32.3-55.8zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDraftingCompass = faCompassDrafting;\nvar faSquarePersonConfined = {\n  prefix: 'fas',\n  iconName: 'square-person-confined',\n  icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56l0 102.1c0 36.4-29.5 65.9-65.9 65.9-17.5 0-34.3-6.9-46.6-19.3l-54.7-54.7-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9l41.4 41.4 0-58.7z\"]\n};\nvar faPlateWheat = {\n  prefix: 'fas',\n  iconName: 'plate-wheat',\n  icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zM56 64l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24S42.7 64 56 64zM24 136l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16 44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80l0-16zM400 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zm80 160l0 16c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80 8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80zm-96 16l0 16c0 44.2-35.8 80-80 80-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80 8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320l456.4 0c14.8 0 26.2 12.9 24.4 27.6-6.3 50.2-44.4 89.4-92.6 98.4l0 2c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nvar faSignHanging = {\n  prefix: 'fas',\n  iconName: 'sign-hanging',\n  icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32l0 32 352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0C14.3 128 0 113.7 0 96S14.3 64 32 64l32 0 0-32C64 14.3 78.3 0 96 0zM208 176l240 0c17.7 0 32 14.3 32 32l0 144c0 17.7-14.3 32-32 32l-240 0c-17.7 0-32-14.3-32-32l0-144c0-17.7 14.3-32 32-32z\"]\n};\nvar faSign = faSignHanging;\nvar faCarBattery = {\n  prefix: 'fas',\n  iconName: 'car-battery',\n  icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 64c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l16 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l16 0zM392 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 32-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-32zM64 240c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 216c-13.3 0-24 10.7-24 24z\"]\n};\nvar faBatteryCar = faCarBattery;\nvar faShirt = {\n  prefix: 'fas',\n  iconName: 'shirt',\n  icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M320.2 112c44.2 0 80-35.8 80-80l53.5 0c17 0 33.3 6.7 45.3 18.7L617.6 169.4c12.5 12.5 12.5 32.8 0 45.3l-50.7 50.7c-12.5 12.5-32.8 12.5-45.3 0l-41.4-41.4 0 224c0 35.3-28.7 64-64 64l-192 0c-35.3 0-64-28.7-64-64l0-224-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0L22.9 214.6c-12.5-12.5-12.5-32.8 0-45.3L141.5 50.7c12-12 28.3-18.7 45.3-18.7l53.5 0c0 44.2 35.8 80 80 80z\"]\n};\nvar faTShirt = faShirt;\nvar faTshirt = faShirt;\nvar faParagraph = {\n  prefix: 'fas',\n  iconName: 'paragraph',\n  icon: [448, 512, [182], \"f1dd\", \"M160 0L416 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 416c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-416-48 0 0 416c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160-48 0C71.6 320 0 248.4 0 160S71.6 0 160 0z\"]\n};\nvar faEnvelopesBulk = {\n  prefix: 'fas',\n  iconName: 'envelopes-bulk',\n  icon: [576, 512, [\"mail-bulk\"], \"f674\", \"M112 0C85.5 0 64 21.5 64 48l0 160 80 0 0-32c0-53 43-96 96-96l208 0 0-32c0-26.5-21.5-48-48-48L112 0zM240 128c-26.5 0-48 21.5-48 48l0 32 80 0c53 0 96 43 96 96l0 112 160 0c26.5 0 48-21.5 48-48l0-192c0-26.5-21.5-48-48-48l-288 0zm200 64l48 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24zM48 256c-26.5 0-48 21.5-48 48l0 10.4 156.6 86.2c1.1 .6 2.2 .9 3.4 .9s2.4-.3 3.4-.9L320 314.4 320 304c0-26.5-21.5-48-48-48L48 256zM320 369.2L186.6 442.6c-8.1 4.5-17.3 6.8-26.6 6.8s-18.4-2.4-26.6-6.8L0 369.2 0 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-94.8z\"]\n};\nvar faMailBulk = faEnvelopesBulk;\nvar faGuitar = {\n  prefix: 'fas',\n  iconName: 'guitar',\n  icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6-11 11-18 24.6-21.4 39.6-3.7 16.6-19.1 30.7-36.1 31.6-25.6 1.3-49.3 10.7-67.3 28.6-44.8 44.8-36.4 125.8 18.7 180.9S183.6 528 228.4 483.2c17.9-17.9 27.4-41.7 28.6-67.3 .9-17 15-32.3 31.6-36.1 15-3.4 28.6-10.5 39.6-21.4 31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faSuitcase = {\n  prefix: 'fas',\n  iconName: 'suitcase',\n  icon: [512, 512, [129523], \"f0f2\", \"M200 48l112 0c4.4 0 8 3.6 8 8l0 40-128 0 0-40c0-4.4 3.6-8 8-8zm-56 8l0 424 224 0 0-424c0-30.9-25.1-56-56-56L200 0c-30.9 0-56 25.1-56 56zM416 96l0 384 32 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-32 0zM96 480l0-384-32 0C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l32 0z\"]\n};\nvar faCircleUp = {\n  prefix: 'fas',\n  iconName: 'circle-up',\n  icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm11.3-387.3l104 104c4.6 4.6 5.9 11.5 3.5 17.4S366.5 256 360 256l-56 0 0 96c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96-56 0c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l104-104c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faF = {\n  prefix: 'fas',\n  iconName: 'f',\n  icon: [320, 512, [102], \"46\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-128 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32z\"]\n};\nvar faXmarksLines = {\n  prefix: 'fas',\n  iconName: 'xmarks-lines',\n  icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faEarthOceania = {\n  prefix: 'fas',\n  iconName: 'earth-oceania',\n  icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM192 150.6c0-12.5 10.1-22.6 22.6-22.6l41.4 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.7 0c-8.5 0-16.6-3.4-22.6-9.4l-16-16c-4.2-4.2-6.6-10-6.6-16zM432 256c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM411.3 379.3l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM224 432c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm-96-80c-17.7 0-32-14.3-32-32l0-18.7c0-8.5 3.4-16.6 9.4-22.6l48-48c4.2-4.2 10-6.6 16-6.6l6.6 0c8.8 0 16 7.2 16 16s7.2 16 16 16 16-7.2 16-16 7.2-16 16-16l6.6 0c6 0 11.8 2.4 16 6.6l48 48c6 6 9.4 14.1 9.4 22.6l0 50.7c0 17.7-14.3 32-32 32l-50.7 0c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4L128 352z\"]\n};\nvar faGlobeOceania = faEarthOceania;\nvar faCommentSlash = {\n  prefix: 'fas',\n  iconName: 'comment-slash',\n  icon: [576, 512, [], \"f4b3\", \"M41-25C31.6-34.3 16.4-34.3 7-25S-2.3-.4 7 9L535 537c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-96.6-96.6c44.4-43.2 71.6-101.8 71.6-166.5 0-132.5-114.6-240-256-240-63 0-120.8 21.4-165.4 56.8L41-25zm19.4 155C42.2 163 32 200.3 32 239.9 32 294.2 51.2 344.2 83.6 384.4L34.8 476.7c-4.8 9-3.3 20 3.6 27.5S56.1 514 65.5 510l118.4-50.7c31.8 13.3 67.1 20.7 104.1 20.7 36.4 0 70.9-7.1 102.3-19.9L60.3 130.1z\"]\n};\nvar faPlay = {\n  prefix: 'fas',\n  iconName: 'play',\n  icon: [448, 512, [9654], \"f04b\", \"M91.2 36.9c-12.4-6.8-27.4-6.5-39.6 .7S32 57.9 32 72l0 368c0 14.1 7.5 27.2 19.6 34.4s27.2 7.5 39.6 .7l336-184c12.8-7 20.8-20.5 20.8-35.1s-8-28.1-20.8-35.1l-336-184z\"]\n};\nvar faVialCircleCheck = {\n  prefix: 'fas',\n  iconName: 'vial-circle-check',\n  icon: [512, 512, [], \"e596\", \"M32 32C32 14.3 46.3 0 64 0L288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 161.4c-66.1 30.3-112 97.1-112 174.6 0 39.7 12 76.6 32.7 107.2-10.3 3.1-21.3 4.8-32.7 4.8-61.9 0-112-50.1-112-112L64 64C46.3 64 32 49.7 32 32zm96 32l0 128 96 0 0-128-96 0zm96 336a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n};\nvar faBridgeCircleCheck = {\n  prefix: 'fas',\n  iconName: 'bridge-circle-check',\n  icon: [576, 512, [], \"e4c9\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l8 0 0 64-40 0 0 112c37.6 9.4 64 43.2 64 82l0 94c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96 6.4 0 12.7 .6 18.7 1.8 34.7-49.5 92.2-81.8 157.3-81.8 28.6 0 55.6 6.2 80 17.4l0-65.4-40 0 0-64 8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM424 96l0 64-80 0 0-64 80 0zM296 96l0 64-80 0 0-64 80 0zM88 96l80 0 0 64-80 0 0-64zM576 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n};\nvar faCediSign = {\n  prefix: 'fas',\n  iconName: 'cedi-sign',\n  icon: [384, 512, [], \"e0df\", \"M232 32c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 26.5C88.8 73.9 16 156.4 16 256S88.8 438.1 184 453.5l0 26.5c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24.6c46.8-3.7 89.1-23.6 121.3-53.9 12.9-12.1 13.4-32.4 1.3-45.2s-32.4-13.4-45.2-1.3c-20.7 19.6-47.6 32.7-77.3 36.2l0-270.1c29.8 3.5 56.6 16.6 77.3 36.2 12.9 12.1 33.1 11.5 45.2-1.3s11.5-33.1-1.3-45.2C321.1 80.2 278.8 60.3 232 56.6L232 32zm-48 91.8l0 264.4C124.3 373.8 80 320.1 80 256s44.3-117.8 104-132.2z\"]\n};\nvar faPuzzlePiece = {\n  prefix: 'fas',\n  iconName: 'puzzle-piece',\n  icon: [512, 512, [129513], \"f12e\", \"M224 0c35.3 0 64 21.5 64 48 0 10.4-4.4 20-12 27.9-6.6 6.9-12 15.3-12 24.9 0 15 12.2 27.2 27.2 27.2l44.8 0c26.5 0 48 21.5 48 48l0 44.8c0 15 12.2 27.2 27.2 27.2 9.5 0 18-5.4 24.9-12 7.9-7.5 17.5-12 27.9-12 26.5 0 48 28.7 48 64s-21.5 64-48 64c-10.4 0-20.1-4.4-27.9-12-6.9-6.6-15.3-12-24.9-12-15 0-27.2 12.2-27.2 27.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2 0-9.2 5.8-17.3 13.2-22.8 11.6-8.7 18.8-20.7 18.8-34 0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34 7.4 5.5 13.2 13.5 13.2 22.8 0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2c0-12.8 10.4-23.2 23.2-23.2 9.2 0 17.3 5.8 22.8 13.2 8.7 11.6 20.7 18.8 34 18.8 26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8-5.5 7.4-13.5 13.2-22.8 13.2-12.8 0-23.2-10.4-23.2-23.2L0 176c0-26.5 21.5-48 48-48l108.8 0c15 0 27.2-12.2 27.2-27.2 0-9.5-5.4-18-12-24.9-7.5-7.9-12-17.5-12-27.9 0-26.5 28.7-48 64-48z\"]\n};\nvar faHelmetUn = {\n  prefix: 'fas',\n  iconName: 'helmet-un',\n  icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0 107.5 0 0 107.5 0 240l0 56.3C0 344.8 39.2 384 87.7 384l127.3 0 128.6 121.4c4.5 4.2 10.4 6.6 16.5 6.6l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-86.5 0-1.5-1.5 0-174.5 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.5 0zM320 417.2l-78-73.7 32.4-55.5 45.6 0 0 129.2zM285.3 103.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faGlassWater = {\n  prefix: 'fas',\n  iconName: 'glass-water',\n  icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM73 156.5l-6.6-92.5 251.3 0-6.6 92.5-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0-20.9-10.4-45.5-10.4-66.4 0-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nvar faHeartCircleBolt = {\n  prefix: 'fas',\n  iconName: 'heart-circle-bolt',\n  icon: [576, 512, [], \"e4fc\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm177.4-77c-5.8-4.2-13.8-4-19.4 .5l-80 64c-5.3 4.2-7.4 11.4-5.1 17.8S369.2 416 376 416l32.9 0-15.9 42.4c-2.5 6.7-.2 14.3 5.6 18.6s13.8 4 19.4-.5l80-64c5.3-4.2 7.4-11.4 5.1-17.8S494.8 384 488 384l-32.9 0 15.9-42.4c2.5-6.7 .2-14.3-5.6-18.6z\"]\n};\nvar faPumpSoap = {\n  prefix: 'fas',\n  iconName: 'pump-soap',\n  icon: [320, 512, [], \"e06b\", \"M96 0l0 80 128 0 0-24 72 0c13.3 0 24-10.7 24-24S309.3 8 296 8l-72 0 0-8c0-17.7-14.3-32-32-32l-64 0C110.3-32 96-17.7 96 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zM224 344c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9 3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C187 263.1 224 311.5 224 344z\"]\n};\nvar faHandScissors = {\n  prefix: 'fas',\n  iconName: 'hand-scissors',\n  icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32 0 25.3 19.5 46 44.3 47.9-7.7 8.5-12.3 19.8-12.3 32.1 0 26.5 21.5 48 48 48l96 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3-22.8-22.8-53.6-35.6-85.8-35.6L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4l-67.1-21.4 0 .1-204-64.1C62.9 59.2 40.5 70.9 33.9 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nvar faDolly = {\n  prefix: 'fas',\n  iconName: 'dolly',\n  icon: [576, 512, [\"dolly-box\"], \"f472\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l72.9 0 92.1 276.2c-22.5 17.6-37 45-37 75.8 0 53 43 96 96 96 52.4 0 95.1-42 96-94.3l202.1-67.4c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2L331.8 357c-17.2-22.1-43.9-36.5-74-37L165.7 43.8C156.9 17.6 132.5 0 104.9 0L32 0zM208 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM280.5 89.3c-25.2 8.2-39 35.3-30.8 60.5l39.6 121.7c8.2 25.2 35.3 39 60.5 30.8l121.7-39.6c25.2-8.2 39-35.3 30.8-60.5L462.8 80.5c-8.2-25.2-35.3-39-60.5-30.8L280.5 89.3z\"]\n};\nvar faDollyBox = faDolly;\nvar faPaperclip = {\n  prefix: 'fas',\n  iconName: 'paperclip',\n  icon: [512, 512, [128206], \"f0c6\", \"M224.6 12.8c56.2-56.2 147.4-56.2 203.6 0s56.2 147.4 0 203.6l-164 164c-34.4 34.4-90.1 34.4-124.5 0s-34.4-90.1 0-124.5L292.5 103.3c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L185 301.3c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l164-164c31.2-31.2 31.2-81.9 0-113.1s-81.9-31.2-113.1 0l-164 164c-53.1 53.1-53.1 139.2 0 192.3s139.2 53.1 192.3 0L428.3 284.3c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L343.4 459.6c-78.1 78.1-204.7 78.1-282.8 0s-78.1-204.7 0-282.8l164-164z\"]\n};\nvar faDemocrat = {\n  prefix: 'fas',\n  iconName: 'democrat',\n  icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3 1-2.8 3.8-4.7 6.8-4.7 1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1c1.4-1.3 3.2-2.1 5.2-2.1 3 0 5.8 1.8 6.8 4.7 2.4 6.5 6.2 18.4 6.2 27.3 0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8l219.2 0 32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17l0 87.4-352 0-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3l-2 0C23.9 256 0 232.1 0 202.7 0 190.6 4.1 178.9 11.7 169.4L87.6 74.6C78.1 67.4 64 53.2 64 32zM544 352l0 128c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-160 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-128 352 0zM256 280a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm248-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM368 280a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faSquareArrowUpRight = {\n  prefix: 'fas',\n  iconName: 'square-arrow-up-right',\n  icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM272 296c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-112 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l54.1 0-103 103c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l103-103 0 54.1z\"]\n};\nvar faExternalLinkSquare = faSquareArrowUpRight;\nvar faFerry = {\n  prefix: 'fas',\n  iconName: 'ferry',\n  icon: [640, 512, [], \"e4ea\", \"M224 32c0-17.7 14.3-32 32-32L384 0c17.7 0 32 14.3 32 32l0 32 48 0c44.2 0 80 35.8 80 80l0 128-.1 0c.1 .7 .1 1.3 .1 2 0 30.2-7.6 59.8-22 86.3l-12.7 23.3-.6 1c-22.3-11.3-46.5-16.8-70.8-16.7-32.5 .2-64.9 10.7-92.4 31.4-22.1 16.6-29.1 16.6-51.2 0-28.1-21.1-61.3-31.6-94.4-31.4-23.6 .2-47.1 5.7-68.7 16.7l-.6-1-12.7-23.3c-14.4-26.5-22-56.2-22-86.3 0-.7 0-1.4 .1-2l-.1 0 0-128c0-44.2 35.8-80 80-80l48 0 0-32zM160 256l320 0 0-112c0-8.8-7.2-16-16-16l-288 0c-8.8 0-16 7.2-16 16l0 112zM403.4 476.1C379.1 494.3 351.1 512 320 512s-59.1-17.7-83.4-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.5-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0z\"]\n};\nvar faMosquito = {\n  prefix: 'fas',\n  iconName: 'mosquito',\n  icon: [576, 512, [], \"e52b\", \"M178.5 495.2c-7.5 9.6-21 12.1-31.3 5.3S133.5 480 138.9 469l1.2-2.2 36.2-58 0-41 .3-4c.6-3.9 2.2-7.7 4.6-10.9l39.3-52.2-66.2 59.5c-17 15.3-39 23.7-61.9 23.8l-8.1 0c-46.6 0-84.4-37.8-84.4-84.4 0-43 32.4-79.2 75.1-83.9l130.5-14.5-44.8-38.3-2.4-2.4c-5.3-6-7.3-14.4-5.3-22.3l13.3-53.4-25.9-38.9-1.3-2.1c-5.8-10.8-2.7-24.6 7.4-31.7 10.1-7.1 23.7-5.1 31.4 4.3l1.5 2 32 48 1.4 2.2c2.8 5.3 3.5 11.6 2.1 17.6l-12.3 49.2 53.3 45.7 0-28.8c0-11.8 6.5-22.1 16-27.7l0-60.5 .3-3.3c1.5-7.3 8-12.7 15.7-12.7s14.2 5.5 15.7 12.7l.3 3.2 0 60.5c9.6 5.5 16 15.8 16 27.7l0 28.9 53.4-45.8-12.3-49.2c-1.5-5.9-.7-12.2 2.1-17.6l1.4-2.2 32-48 1.5-2c7.7-9.4 21.3-11.5 31.4-4.3 10.1 7.1 13.1 20.9 7.4 31.7l-1.3 2.1-25.9 38.9 13.3 53.4c2 8-.1 16.3-5.3 22.3l-2.4 2.4-44.7 38.3 130.5 14.5c42.8 4.8 75.1 40.9 75.1 83.9 0 46.6-37.8 84.4-84.4 84.4l-8.1 0c-22.8 0-44.9-8.5-61.9-23.8l-66.1-59.5 39.2 52.2c2.4 3.2 4 7 4.6 10.9l.3 4 0 41 36.2 58 1.2 2.1c5.4 11 2 24.7-8.3 31.5s-23.8 4.4-31.3-5.3l-1.4-2-40-64-1.6-3.1c-1.4-3.1-2.1-6.6-2.1-10.1l0-39.8-32.4-43.1 0 74.7c0 17.7-14.3 32-32 32-17.7 0-32-14.3-32-32l0-74.6-32.3 43 0 39.8c0 3.5-.7 6.9-2.1 10.1l-1.6 3.1-40 64-1.4 2z\"]\n};\nvar faBuildingCircleArrowRight = {\n  prefix: 'fas',\n  iconName: 'building-circle-arrow-right',\n  icon: [576, 512, [], \"e4d1\", \"M32 64C32 28.7 60.7 0 96 0L352 0c35.3 0 64 28.7 64 64l0 144.7c-35.7 2.9-68.5 15.6-96 35.4l0-4c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l4 0c-13.8 19.2-24.1 41-30.1 64.5-1.9-.4-3.9-.5-5.9-.5l-32 0c-17.7 0-32 14.3-32 32l0 80 74.9 0c6.1 17.3 14.6 33.4 25.1 48L96 512c-35.3 0-64-28.7-64-64L32 64zM144 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM144 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6l28.7 28.7-89.4 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l89.4 0-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faLeftRight = {\n  prefix: 'fas',\n  iconName: 'left-right',\n  icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M502.6 406.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9S352 492.9 352 480l0-64-320 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l320 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c12.5 12.5 12.5 32.8 0 45.3zM9.4 150.6c-12.5-12.5-12.5-32.8 0-45.3l96-96c9.2-9.2 22.9-11.9 34.9-6.9S160 19.1 160 32l0 64 320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96z\"]\n};\nvar faArrowsAltH = faLeftRight;\nvar faVirus = {\n  prefix: 'fas',\n  iconName: 'virus',\n  icon: [512, 512, [], \"e074\", \"M296 40c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 44.1-53.3 66.1-84.5 35-15.6-15.6-40.9-15.6-56.6 0s-15.6 40.9 0 56.6c31.2 31.2 9.1 84.5-35 84.5-22.1 0-40 17.9-40 40s17.9 40 40 40c44.1 0 66.1 53.3 35 84.5-15.6 15.6-15.6 40.9 0 56.6s40.9 15.6 56.6 0c31.2-31.2 84.5-9.1 84.5 35 0 22.1 17.9 40 40 40s40-17.9 40-40c0-44.1 53.3-66.1 84.5-35 15.6 15.6 40.9 15.6 56.6 0s15.6-40.9 0-56.6c-31.2-31.2-9.1-84.5 35-84.5 22.1 0 40-17.9 40-40s-17.9-40-40-40c-44.1 0-66.1-53.3-35-84.5 15.6-15.6 15.6-40.9 0-56.6s-40.9-15.6-56.6 0C349.3 106.1 296 84.1 296 40zM160 224a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm160 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGem = {\n  prefix: 'fas',\n  iconName: 'gem',\n  icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8l240 0c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5L210.5 179.8 63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8l-147.2-12.3 57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nvar faToilet = {\n  prefix: 'fas',\n  iconName: 'toilet',\n  icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l8 0 0 148.9c-1.9 1.4-3.8 2.9-5.6 4.4-15.5 13.2-26.4 31.6-26.4 54.6 0 46.9 14.3 84.1 37 112.5 14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8S85.7 512 96 512l256 0c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8 22.7-28.4 37-65.5 37-112.5 0-23.1-10.9-41.5-26.4-54.6-1.8-1.5-3.7-3-5.6-4.4l0-148.9 8 0c13.3 0 24-10.7 24-24S437.3 0 424 0L24 0zM96 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zM224 288c-88.4 0-160-14.3-160-32s71.6-32 160-32 160 14.3 160 32-71.6 32-160 32z\"]\n};\nvar faSingleQuoteLeft = {\n  prefix: 'fas',\n  iconName: 'single-quote-left',\n  icon: [192, 512, [], \"e81b\", \"M128 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64L0 216C0 149.7 53.7 96 120 96l8 0z\"]\n};\nvar faMoneyBills = {\n  prefix: 'fas',\n  iconName: 'money-bills',\n  icon: [576, 512, [], \"e1f3\", \"M160 32c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32zm176 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM160 152l0-48c0-4.4 3.6-8 8-8l48 0c4.4 0 8.1 3.6 7.5 8-3.6 29-26.6 51.9-55.5 55.5-4.4 .5-8-3.1-8-7.5zm0 112c0-4.4 3.6-8.1 8-7.5 29 3.6 51.9 26.6 55.5 55.5 .5 4.4-3.1 8-7.5 8l-48 0c-4.4 0-8-3.6-8-8l0-48zM504 159.5c-29-3.6-51.9-26.6-55.5-55.5-.5-4.4 3.1-8 7.5-8l48 0c4.4 0 8 3.6 8 8l0 48c0 4.4-3.6 8.1-8 7.5zM512 264l0 48c0 4.4-3.6 8-8 8l-48 0c-4.4 0-8.1-3.6-7.5-8 3.6-29 26.6-51.9 55.5-55.5 4.4-.5 8 3.1 8 7.5zM48 152c0-13.3-10.7-24-24-24S0 138.7 0 152L0 416c0 35.3 28.7 64 64 64l392 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L64 432c-8.8 0-16-7.2-16-16l0-264z\"]\n};\nvar faTabletButton = {\n  prefix: 'fas',\n  iconName: 'tablet-button',\n  icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faRectangleXmark = {\n  prefix: 'fas',\n  iconName: 'rectangle-xmark',\n  icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM167 167c9.4-9.4 24.6-9.4 33.9 0l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faWrench = {\n  prefix: 'fas',\n  iconName: 'wrench',\n  icon: [576, 512, [128295], \"f0ad\", \"M509.4 98.6c7.6-7.6 20.3-5.7 24.1 4.3 6.8 17.7 10.5 37 10.5 57.1 0 88.4-71.6 160-160 160-17.5 0-34.4-2.8-50.2-8L146.9 498.9c-28.1 28.1-73.7 28.1-101.8 0s-28.1-73.7 0-101.8L232 210.2c-5.2-15.8-8-32.6-8-50.2 0-88.4 71.6-160 160-160 20.1 0 39.4 3.7 57.1 10.5 10 3.8 11.8 16.5 4.3 24.1l-88.7 88.7c-3 3-4.7 7.1-4.7 11.3l0 41.4c0 8.8 7.2 16 16 16l41.4 0c4.2 0 8.3-1.7 11.3-4.7l88.7-88.7z\"]\n};\nvar faTrashCan = {\n  prefix: 'fas',\n  iconName: 'trash-can',\n  icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M136.7 5.9C141.1-7.2 153.3-16 167.1-16l113.9 0c13.8 0 26 8.8 30.4 21.9L320 32 416 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 8.7-26.1zM32 144l384 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-304zm88 64c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24zm104 0c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24zm104 0c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faTableCells = {\n  prefix: 'fas',\n  iconName: 'table-cells',\n  icon: [448, 512, [\"th\"], \"f00a\", \"M384 96l0 64-64 0 0-64 64 0zm0 128l0 64-64 0 0-64 64 0zm0 128l0 64-64 0 0-64 64 0zM256 288l-64 0 0-64 64 0 0 64zm-64 64l64 0 0 64-64 0 0-64zm-64-64l-64 0 0-64 64 0 0 64zM64 352l64 0 0 64-64 0 0-64zm0-192l0-64 64 0 0 64-64 0zm128 0l0-64 64 0 0 64-64 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nvar faTh = faTableCells;\nvar faRibbon = {\n  prefix: 'fas',\n  iconName: 'ribbon',\n  icon: [384, 512, [127895], \"f4d6\", \"M235.1 0c33.4 0 64.5 17.4 81.9 45.9 1.2 2 13 21.3 35.3 57.8 21.1 34.5 18.3 78.5-7 110L278.3 297.7 364.5 406c5.5 6.9 4.4 16.9-2.5 22.5l-80 64c-6.9 5.5-17 4.4-22.5-2.5L38.6 213.8C13.3 182.3 10.5 138.3 31.6 103.8 54 67.2 65.7 47.9 67 45.9 84.4 17.4 115.4 0 148.9 0l86.3 0zM192 189.2l48.6-61.2-97.3 0 48.6 61.2zM75 336.2l86.2 107.8-36.8 46c-5.5 6.9-15.6 8-22.5 2.5l-80-64c-6.9-5.5-8-15.6-2.5-22.5L75 336.2z\"]\n};\nvar faLandmarkFlag = {\n  prefix: 'fas',\n  iconName: 'landmark-flag',\n  icon: [512, 512, [], \"e51c\", \"M352-32L240-32c-8.8 0-16 7.2-16 16l0 144-176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 224-51.2 38.4C4.7 460.4 0 469.9 0 480 0 497.7 14.3 512 32 512l448 0c17.7 0 32-14.3 32-32 0-10.1-4.7-19.6-12.8-25.6l-51.2-38.4 0-224 16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-192 0 0-64 80 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zm48 224l0 224-64 0 0-224 64 0zm-112 0l0 224-64 0 0-224 64 0zm-112 0l0 224-64 0 0-224 64 0z\"]\n};\nvar faUpDownLeftRight = {\n  prefix: 'fas',\n  iconName: 'up-down-left-right',\n  icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9S179.1 128 192 128l32 0 0 96-96 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9S128 332.9 128 320l0-32 96 0 0 96-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9S332.9 384 320 384l-32 0 0-96 96 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S384 179.1 384 192l0 32-96 0 0-96 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faArrowsAlt = faUpDownLeftRight;\nvar faCarSide = {\n  prefix: 'fas',\n  iconName: 'car-side',\n  icon: [640, 512, [128663], \"f5e4\", \"M147 106.7l-29.8 85.3 122.9 0 0-96-77.9 0c-6.8 0-12.9 4.3-15.1 10.7zM48.6 193.9L86.5 85.6C97.8 53.5 128.1 32 162.1 32L360 32c25.2 0 48.9 11.9 64 32l96.2 128.3C587.1 196.5 640 252.1 640 320l0 16c0 35.3-28.7 64-64 64l-16.4 0c-4 44.9-41.7 80-87.6 80s-83.6-35.1-87.6-80l-144.7 0c-4 44.9-41.7 80-87.6 80s-83.6-35.1-87.6-80l-.4 0c-35.3 0-64-28.7-64-64l0-80c0-30.1 20.7-55.3 48.6-62.1zM440 192l-67.2-89.6c-3-4-7.8-6.4-12.8-6.4l-72 0 0 96 152 0zM152 432a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm360-40a40 40 0 1 0 -80 0 40 40 0 1 0 80 0z\"]\n};\nvar faTrashArrowUp = {\n  prefix: 'fas',\n  iconName: 'trash-arrow-up',\n  icon: [448, 512, [\"trash-restore\"], \"f829\", \"M167.1-16l113.9 0c13.8 0 26 8.8 30.4 21.9L320 32 416 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 8.7-26.1C141.1-7.2 153.3-16 167.1-16zM32 144l384 0-21.1 323.1C393.3 492.4 372.3 512 347 512L101 512c-25.3 0-46.3-19.6-47.9-44.9L32 144zm209 79c-9.4-9.4-24.6-9.4-33.9 0l-72 72c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l31-31 0 102.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-102.1 31 31c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTrashRestore = faTrashArrowUp;\nvar faLifeRing = {\n  prefix: 'fas',\n  iconName: 'life-ring',\n  icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3S491.8 142.1 458 98.7c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256S20.2 369.9 54 413.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faCopyright = {\n  prefix: 'fas',\n  iconName: 'copyright',\n  icon: [512, 512, [169], \"f1f9\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM205.1 306.9c28.1 28.1 73.7 28.1 101.8 0 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-46.9 46.9-122.8 46.9-169.7 0s-46.9-122.8 0-169.7 122.8-46.9 169.7 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-28.1-28.1-73.7-28.1-101.8 0s-28.1 73.7 0 101.8z\"]\n};\nvar faFilePrescription = {\n  prefix: 'fas',\n  iconName: 'file-prescription',\n  icon: [384, 512, [], \"f572\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM88 192c-13.3 0-24 10.7-24 24l0 144c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 22.5 0 58.4 55-33.4 31.6c-9.6 9.1-10.1 24.3-.9 33.9s24.3 10.1 33.9 .9l35.4-33.5 35.6 33.5c9.7 9.1 24.8 8.6 33.9-1s8.6-24.8-1-33.9l-33.6-31.6 33.6-31.8c9.6-9.1 10.1-24.3 .9-33.9s-24.3-10.1-33.9-.9l-35.7 33.7-40.9-38.5c12.9-11.7 21.1-28.6 21.1-47.5 0-35.3-28.7-64-64-64l-56 0zm32 80l-8 0 0-32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-24 0z\"]\n};\nvar faEraser = {\n  prefix: 'fas',\n  iconName: 'eraser',\n  icon: [576, 512, [], \"f12d\", \"M178.5 416l123 0 65.3-65.3-173.5-173.5-126.7 126.7 112 112zM224 480l-45.5 0c-17 0-33.3-6.7-45.3-18.7L17 345C6.1 334.1 0 319.4 0 304s6.1-30.1 17-41L263 17C273.9 6.1 288.6 0 304 0s30.1 6.1 41 17L527 199c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41l-135 135 120 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0z\"]\n};\nvar faHourglassStart = {\n  prefix: 'fas',\n  iconName: 'hourglass-start',\n  icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1l67.9 67.9-67.9 67.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1l-67.9-67.9 67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32S369.7 0 352 0L32 0zM288 437l0 11-192 0 0-11c0-25.5 10.1-49.9 28.1-67.9l67.9-67.9 67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nvar faHourglass1 = faHourglassStart;\nvar faCircleLeft = {\n  prefix: 'fas',\n  iconName: 'circle-left',\n  icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256a256 256 0 1 0 -512 0 256 256 0 1 0 512 0zM124.7 244.7l104-104c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 56 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 56c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-104-104c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faCruzeiroSign = {\n  prefix: 'fas',\n  iconName: 'cruzeiro-sign',\n  icon: [448, 512, [], \"e152\", \"M240 96c-88.4 0-160 71.6-160 160 0 71.6 47.1 132.3 112 152.7L192 256c0-13.3 10.7-24 24-24 12.8 0 23.3 10.1 24 22.7 15.5-9.5 33.5-14.7 52.3-14.7l11.8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-11.8 0c-18.8 0-36.1 10-45.4 26.3-4.5 7.9-6.9 16.8-6.9 25.9l0 75.8c42.5 0 81.1-16.6 109.8-43.6 12.9-12.1 33.1-11.5 45.2 1.3s11.5 33.1-1.3 45.2C353.7 456.8 299.5 480 240 480 116.3 480 16 379.7 16 256S116.3 32 240 32c59.5 0 113.7 23.2 153.7 61.1 12.9 12.1 13.4 32.4 1.3 45.2s-32.4 13.4-45.2 1.3C321.1 112.6 282.5 96 240 96z\"]\n};\nvar faSmoking = {\n  prefix: 'fas',\n  iconName: 'smoking',\n  icon: [576, 512, [128684], \"f48d\", \"M360 0c13.3 0 24 10.7 24 24l0 19c0 40.3 16 79 44.5 107.5l21 21C469 191 480 217.4 480 245l0 19c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-19c0-14.9-5.9-29.1-16.4-39.6l-21-21C357.1 146.9 336 96 336 43l0-19c0-13.3 10.7-24 24-24zM552 288c-13.3 0-24-10.7-24-24l0-19c0-40.3-16-79-44.5-107.5l-21-21C443 97 432 70.6 432 43l0-19c0-13.3 10.7-24 24-24s24 10.7 24 24l0 19c0 14.9 5.9 29.1 16.4 39.6l21 21C554.9 141.1 576 192 576 245l0 19c0 13.3-10.7 24-24 24zM320 448l96 0 0-32-96 0 0 32zM0 416c0-35.3 28.7-64 64-64l384 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L64 512c-35.3 0-64-28.7-64-64l0-32zm576-40l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSquarePollVertical = {\n  prefix: 'fas',\n  iconName: 'square-poll-vertical',\n  icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm56 192c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zm184 88c0-13.3 10.7-24 24-24s24 10.7 24 24l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48zM224 128c13.3 0 24 10.7 24 24l0 208c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24z\"]\n};\nvar faPoll = faSquarePollVertical;\nvar faPersonCircleMinus = {\n  prefix: 'fas',\n  iconName: 'person-circle-minus',\n  icon: [640, 512, [], \"e540\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nvar faBiohazard = {\n  prefix: 'fas',\n  iconName: 'biohazard',\n  icon: [576, 512, [9763], \"f780\", \"M260 12.6c0-8.3-7.6-14.5-15.5-12.1-60.9 18.8-105.1 75.8-105.1 143.1 0 25.1 6.1 48.7 17 69.5-21 1.8-42 8.2-61.5 19.5-57.9 33.6-84.8 100.2-70.9 162.5 1.9 8.4 11.4 12 18.9 7.6 5-2.9 7.6-8.6 7.1-14.4-.3-3.3-.4-6.6-.4-10.1 0-123.5 184.4-123.5 184.4 0 0 88.4-94.5 113.6-148.2 75.4-4.5-3.2-10.5-3.9-15.3-1.1-7 4.1-8.6 13.6-2.7 19.1 46.6 43.8 118 53.9 176.1 20.2 17.9-10.4 32.8-23.9 44.5-39.4 11.7 15.6 26.6 29.1 44.5 39.4 58.1 33.7 129.5 23.6 176.1-20.2 5.9-5.5 4.3-15.1-2.7-19.1-4.8-2.8-10.8-2.1-15.3 1.1-53.7 38.2-148.2 13-148.2-75.4 0-123.5 184.4-123.5 184.4 0 0 3.4-.1 6.8-.4 10.1-.5 5.8 2.1 11.5 7.1 14.4 7.4 4.3 17 .8 18.9-7.6 13.9-62.2-13-128.9-70.9-162.5-19.5-11.3-40.4-17.7-61.5-19.5 10.9-20.8 17-44.4 17-69.5 0-67.3-44.2-124.3-105.1-143.1-7.9-2.4-15.5 3.8-15.5 12.1 0 5.9 4 11 9.5 13.2 83.4 33.6 70.8 178.4-37.8 178.4S167.1 59.4 250.5 25.8c5.5-2.2 9.5-7.3 9.5-13.2zM248.4 288a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM435 317.7c-16.2 0-31.4 5.5-42.1 15-10.1 9.1-18.1 23.4-18.1 45.6 0 21.1 7.2 35 16.5 44.1 32.2-24.6 55.5-60.5 63.9-101.8-6.3-1.9-13.2-3-20.2-3zM202 378.3c0-22.3-8-36.6-18.1-45.6-10.7-9.6-25.9-15-42.1-15-7 0-13.9 1-20.2 3 8.4 41.3 31.6 77.2 63.9 101.8 9.4-9.1 16.5-23.1 16.5-44.2zm41.2-224.3c9 10.2 23.2 18.2 45.2 18.2s36.2-8 45.2-18.2c6.7-7.6 11.5-17.5 13.6-28.4-18.3-6.8-38.2-10.5-58.8-10.5s-40.5 3.7-58.8 10.5c2.2 10.9 6.9 20.8 13.6 28.5z\"]\n};\nvar faBellConcierge = {\n  prefix: 'fas',\n  iconName: 'bell-concierge',\n  icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.3C124.8 156.7 40.2 243.7 32.6 352l446.9 0C471.8 243.7 387.2 156.7 280 145.3l0-33.3 16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24l464 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 400z\"]\n};\nvar faConciergeBell = faBellConcierge;\nvar faRulerHorizontal = {\n  prefix: 'fas',\n  iconName: 'ruler-horizontal',\n  icon: [576, 512, [], \"f547\", \"M48 384c-26.5 0-48-21.5-48-48L0 176c0-26.5 21.5-48 48-48l24 0 0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104 48 0 0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72 48 0 0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104 48 0 0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72 48 0 0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104 24 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 384z\"]\n};\nvar faHorse = {\n  prefix: 'fas',\n  iconName: 'horse',\n  icon: [576, 512, [128014], \"f6f0\", \"M448 238.1l0-78.1 16 0 9.8 19.6c12.5 25.1 42.2 36.4 68.3 26 20.5-8.2 33.9-28 33.9-50.1L576 80c0-19.1-8.4-36.3-21.7-48l5.7 0c8.8 0 16-7.2 16-16S568.8 0 560 0L448 0C377.3 0 320 57.3 320 128l-171.2 0C118.1 128 91.2 144.3 76.3 168.8 33.2 174.5 0 211.4 0 256l0 56c0 13.3 10.7 24 24 24s24-10.7 24-24l0-56c0-13.4 6.6-25.2 16.7-32.5 1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9l33.7 0c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7 0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8L320 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-164.3c19.2-19.2 31.5-45.7 32-75.7l0 0 0-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faCalendar = {\n  prefix: 'fas',\n  iconName: 'calendar',\n  icon: [448, 512, [128197, 128198], \"f133\", \"M128 0C110.3 0 96 14.3 96 32l0 32-32 0C28.7 64 0 92.7 0 128l0 48 448 0 0-48c0-35.3-28.7-64-64-64l-32 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32-128 0 0-32c0-17.7-14.3-32-32-32zM0 224L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192-448 0z\"]\n};\nvar faHandsHoldingChild = {\n  prefix: 'fas',\n  iconName: 'hands-holding-child',\n  icon: [640, 512, [], \"e4fa\", \"M320-32a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM40 64c22.1 0 40 17.9 40 40l0 160.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1 12.9-8.6 14.7-26.9 3.7-37.8-7.3-7.3-23.1-23.1-47.2-47.2-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c24.1 24.1 39.9 39.9 47.2 47.2l0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 221.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0c7.3-7.3 23.1-23.1 47.2-47.2 12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-24.1 24.1-39.9 39.9-47.2 47.2-11 11-9.2 29.2 3.7 37.8 9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3L560 104c0-22.1 17.9-40 40-40zM384.5 149l-19.8-16.7 11.1 88.8c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35-7.6 0-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8-19.8 16.7c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 72.8 295.3 64 320 64s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8z\"]\n};\nvar faItalic = {\n  prefix: 'fas',\n  iconName: 'italic',\n  icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-58.7 0-133.3 320 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l58.7 0 133.3-320-64 0c-17.7 0-32-14.3-32-32z\"]\n};\nvar faKhanda = {\n  prefix: 'fas',\n  iconName: 'khanda',\n  icon: [512, 512, [9772], \"f66d\", \"M240.7 8c8.9-7.4 21.8-7.4 30.7 0l37.8 31.5c8.7 7.3 11.1 19.6 6 29.6-1.2 2.4-2.8 5.5-4.6 9.2 34.2 19.2 57.3 55.8 57.3 97.8s-23.1 78.6-57.3 97.8c1.8 3.7 3.3 6.8 4.6 9.2 5.1 10 2.7 22.3-6 29.6l-37.2 31 0 19.8c22.9-15.7 48.4-33.3 76.7-52.7 42.8-29.4 68.4-78 68.4-130l0-11.1c0-23.9-7.1-47.3-20.4-67.2-5.1-7.7-4.6-17.8 1.7-24.6 6.6-7.1 17.2-8.1 25.2-2.8 27.5 18.1 89.4 67.5 89.4 149.1 0 46.5-20.2 88.6-41.8 120.4-21.6 32-45.6 55-55.3 63.8-7.8 7.1-19 7.9-27.6 3l-70.8-40.3-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7 13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21l-40.2-27.6 0 28.9c9.6 5.5 16 15.9 16 27.7 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7l0-28.1-40.3 27.7c-1.8 11.4-11.8 20.1-23.7 20.1-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-70.8 40.3c-8.7 4.9-19.8 4.1-27.6-3-9.7-8.8-33.7-31.9-55.3-63.8-21.5-31.8-41.8-73.9-41.8-120.4 0-81.7 61.9-131.1 89.4-149.1 8.1-5.3 18.6-4.3 25.2 2.8 6.4 6.9 6.8 17 1.7 24.6-13.3 19.9-20.4 43.3-20.4 67.2l0 11.1c0 51.9 25.6 100.6 68.4 130 28.4 19.6 53.7 36.9 75.6 52l0-19.1-37.2-31c-8.7-7.3-11.1-19.6-6-29.6 1.2-2.4 2.8-5.5 4.6-9.2-34.2-19.2-57.3-55.8-57.3-97.8s23.1-78.6 57.3-97.8c-1.8-3.7-3.3-6.8-4.6-9.2-5.1-10-2.7-22.3 6-29.6L240.7 8zM220.3 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1c6.8-19.2 11.8-38.4 11.8-53.1s-4.9-33.9-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1c-6.8 19.2-11.8 38.4-11.8 53.1s4.9 33.9 11.8 53.1z\"]\n};\nvar faFaceFrownOpen = {\n  prefix: 'fas',\n  iconName: 'face-frown-open',\n  icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM176 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM182.4 382.5c-12.4 5.2-26.5-4.1-21.1-16.4 16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faCheck = {\n  prefix: 'fas',\n  iconName: 'check',\n  icon: [448, 512, [10003, 10004], \"f00c\", \"M434.8 70.1c14.3 10.4 17.5 30.4 7.1 44.7l-256 352c-5.5 7.6-14 12.3-23.4 13.1s-18.5-2.7-25.1-9.3l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l101.5 101.5 234-321.7c10.4-14.3 30.4-17.5 44.7-7.1z\"]\n};\nvar faFingerprint = {\n  prefix: 'fas',\n  iconName: 'fingerprint',\n  icon: [512, 512, [], \"f577\", \"M48 256c0-114.9 93.1-208 208-208 63.1 0 119.6 28.1 157.8 72.5 8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0 114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6-15.2 5-18.7 23.7-8.3 35.9 7.1 8.3 18.8 10.8 29.4 7.9 10.6-2.9 21.8-4.4 33.4-4.4 70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3-1.7 14.6 9.4 27.8 24.2 27.8 11.8 0 21.9-8.6 23.3-20.3 3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4-23.1 29.8-36.8 67.1-36.8 107.7l0 24.9c0 24.2-2.6 48.4-7.8 71.9-3.4 15.6 7.9 31.1 23.9 31.1 10.5 0 19.9-7 22.2-17.3 6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1 7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1-3.8 14.3 6.7 29 21.5 29 9.5 0 17.9-6.2 20.4-15.4 10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9-2.7 13.9 7.7 27.2 21.8 27.2 10.2 0 19-7 21-17 7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z\"]\n};\nvar faChargingStation = {\n  prefix: 'fas',\n  iconName: 'charging-station',\n  icon: [576, 512, [], \"f5e7\", \"M64 64C64 28.7 92.7 0 128 0L288 0c35.3 0 64 28.7 64 64l0 224c44.2 0 80 35.8 80 80l0 12c0 11 9 20 20 20s20-9 20-20l0-127.7c-32.5-10.2-56-40.5-56-76.3l0-32c0-8.8 7.2-16 16-16l16 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 32 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 16 0c8.8 0 16 7.2 16 16l0 32c0 35.8-23.5 66.1-56 76.3L520 380c0 37.6-30.4 68-68 68s-68-30.4-68-68l0-12c0-17.7-14.3-32-32-32l0 129.4c9.3 3.3 16 12.2 16 22.6 0 13.3-10.7 24-24 24L72 512c-13.3 0-24-10.7-24-24 0-10.5 6.7-19.3 16-22.6L64 64zm82.7 125.7l39 0-20.9 66.9c-2.4 7.6 3.3 15.4 11.3 15.4 2.9 0 5.6-1 7.8-2.9l94.6-82c3.1-2.7 4.9-6.6 4.9-10.7 0-7.8-6.3-14.1-14.1-14.1l-39 0 20.9-66.9c2.4-7.6-3.3-15.4-11.3-15.4-2.9 0-5.6 1-7.8 2.9l-94.6 82c-3.1 2.7-4.9 6.6-4.9 10.7 0 7.8 6.3 14.1 14.1 14.1z\"]\n};\nvar faUserLock = {\n  prefix: 'fas',\n  iconName: 'user-lock',\n  icon: [576, 512, [], \"f502\", \"M224 8a120 120 0 1 1 0 240 120 120 0 1 1 0-240zM194.3 304l59.4 0c29.7 0 57.7 7.3 82.3 20.1l0 4.3c-19.6 17.6-32 43.1-32 71.5l0 96c0 5.5 .5 10.9 1.3 16.1L45.7 512C29.3 512 16 498.7 16 482.3 16 383.8 95.8 304 194.3 304zm301.7 .1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM352 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nvar faMobileScreenButton = {\n  prefix: 'fas',\n  iconName: 'mobile-screen-button',\n  icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zm64 0l0 304 224 0 0-304-224 0zM192 472c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faMobileAlt = faMobileScreenButton;\nvar faAnchorCircleCheck = {\n  prefix: 'fas',\n  iconName: 'anchor-circle-check',\n  icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 0c-53 0-96 43-96 96 0 41.8 26.7 77.4 64 90.5l0 257.9c-62.9-14.3-110.2-69.7-111.9-136.5l16.1 14.1c10 8.7 25.1 7.7 33.9-2.3s7.7-25.1-2.3-33.9l-64-56c-9-7.9-22.6-7.9-31.6 0l-64 56c-10 8.7-11 23.9-2.3 33.9s23.9 11 33.9 2.3L80 307.9c2.1 113.1 94.4 204.1 208 204.1 16.6 0 32.7-1.9 48.2-5.6-20.3-30.5-32.2-67-32.2-106.4 0-27.3 5.7-53.3 16-76.9l0-136.6c37.3-13.2 64-48.7 64-90.5 0-53-43-96-96-96zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n};\nvar faPersonWalkingWithCane = {\n  prefix: 'fas',\n  iconName: 'person-walking-with-cane',\n  icon: [576, 512, [\"blind\"], \"f29d\", \"M224-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM160 205.3l-22.6 22.6c-6 6-9.4 14.1-9.4 22.6l0 37.5c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-37.5c0-25.5 10.1-49.9 28.1-67.9l34.4-34.4c23.2-23.2 54.6-36.2 87.3-36.2 36.1 0 70.3 15.8 93.8 43.1l68.6 80c11.5 13.4 9.9 33.6-3.5 45.1s-33.6 9.9-45.1-3.5l-55.7-65 0 118.6 34.5 29.6c17.7 15.2 29.3 36.2 32.6 59.3l12.6 88.1c2.5 17.5-9.7 33.7-27.2 36.2s-33.7-9.7-36.2-27.2l-12.6-88.1c-1.1-7.7-5-14.7-10.9-19.8l-71.4-61.2c-21.3-18.2-33.5-44.9-33.5-72.9l0-69.3zm.1 165.8c2.4 2.3 4.8 4.6 7.4 6.8l46 39.4-2.2 7.6c-4.5 15.7-12.9 30-24.4 41.5l-68.3 68.3c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l68.3-68.3c3.8-3.8 6.6-8.6 8.1-13.8L160.1 371zm233.5-62.2c10.6-8 25.6-5.8 33.6 4.8l144 192c8 10.6 5.8 25.6-4.8 33.6s-25.6 5.8-33.6-4.8l-144-192c-8-10.6-5.8-25.6 4.8-33.6z\"]\n};\nvar faBlind = faPersonWalkingWithCane;\nvar faFileWaveform = {\n  prefix: 'fas',\n  iconName: 'file-waveform',\n  icon: [384, 512, [\"file-medical-alt\"], \"f478\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64l0-96 60.3 0 48.8 62.7c5.1 6.6 13.3 10 21.6 9.1s15.5-6.1 19.1-13.6l42.9-91.2 9.9 19.8c4.1 8.1 12.4 13.3 21.5 13.3l72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-57.2 0-25.4-50.7c-4.1-8.2-12.6-13.4-21.8-13.3s-17.5 5.5-21.4 13.8l-47.3 100.6-32-41.1C86.4 307.4 79.4 304 72 304L0 304 0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5z\"]\n};\nvar faFileMedicalAlt = faFileWaveform;\nvar faHouseCrack = {\n  prefix: 'fas',\n  iconName: 'house-crack',\n  icon: [512, 512, [], \"e3b1\", \"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l86.4 0-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L256 368 195.8 285.2c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L256 448 294.4 512 400 512c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208z\"]\n};\nvar faHatWizard = {\n  prefix: 'fas',\n  iconName: 'hat-wizard',\n  icon: [512, 512, [], \"f6e8\", \"M64 400l85.7-208.2c17-41.3 47.8-75.3 87.2-96.3L383.8 17.2c12.3-6.6 26.5 4.7 23 18.2L369.6 177.8c-1.1 4.1-1.6 8.3-1.6 12.6 0 6.3 1.2 12.6 3.6 18.5l76.4 191.1-207.1 0 11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 260.4 230.9 256 224 256s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 323 144 329.1 144 336s4.4 13 10.9 15.2l40.4 13.5 11.8 35.4-143.1 0zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faUserDoctor = {\n  prefix: 'fas',\n  iconName: 'user-doctor',\n  icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 8a120 120 0 1 0 0 240 120 120 0 1 0 0-240zm60 312.8c-5.4-.5-11-.8-16.6-.8l-86.9 0c-5.6 0-11.1 .3-16.6 .8l0 67.5c16.5 7.6 28 24.3 28 43.6 0 26.5-21.5 48-48 48s-48-21.5-48-48c0-19.4 11.5-36.1 28-43.6l0-58.4C61 353 16 413.6 16 484.6 16 499.7 28.3 512 43.4 512l361.1 0c15.1 0 27.4-12.3 27.4-27.4 0-71-45-131.5-108-154.6l0 37.4c23.3 8.2 40 30.5 40 56.6l0 32c0 11-9 20-20 20s-20-9-20-20l0-32c0-11-9-20-20-20s-20 9-20 20l0 32c0 11-9 20-20 20s-20-9-20-20l0-32c0-26.1 16.7-48.3 40-56.6l0-46.6z\"]\n};\nvar faUserMd = faUserDoctor;\nvar faChartBar = {\n  prefix: 'fas',\n  iconName: 'chart-bar',\n  icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 80l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 112l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarChart = faChartBar;\nvar faSprayCanSparkles = {\n  prefix: 'fas',\n  iconName: 'spray-can-sparkles',\n  icon: [576, 512, [\"air-freshener\"], \"f5d0\", \"M160 32l0 80 128 0 0-80c0-17.7-14.3-32-32-32L192 0c-17.7 0-32 14.3-32 32zm0 128c-53 0-96 43-96 96l0 208c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-208c0-53-43-96-96-96l-128 0zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM448 48c0-1.4-1-3-2.2-3.6L416 32 403.6 2.2C403 1 401.4 0 400 0s-3 1-3.6 2.2L384 32 354.2 44.4c-1.2 .6-2.2 2.2-2.2 3.6 0 1.4 1 3 2.2 3.6L384 64 396.4 93.8C397 95 398.6 96 400 96s3-1 3.6-2.2L416 64 445.8 51.6C447 51 448 49.4 448 48zm76.4 45.8C525 95 526.6 96 528 96s3-1 3.6-2.2L544 64 573.8 51.6c1.2-.6 2.2-2.2 2.2-3.6 0-1.4-1-3-2.2-3.6L544 32 531.6 2.2C531 1 529.4 0 528 0s-3 1-3.6 2.2L512 32 482.2 44.4c-1.2 .6-2.2 2.2-2.2 3.6 0 1.4 1 3 2.2 3.6L512 64 524.4 93.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L512 224 482.2 236.4c-1.2 .6-2.2 2.2-2.2 3.6 0 1.4 1 3 2.2 3.6L512 256 524.4 285.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L544 256 573.8 243.6c1.2-.6 2.2-2.2 2.2-3.6 0-1.4-1-3-2.2-3.6L544 224 531.6 194.2zM512 144c0-1.4-1-3-2.2-3.6L480 128 467.6 98.2C467 97 465.4 96 464 96s-3 1-3.6 2.2L448 128 418.2 140.4c-1.2 .6-2.2 2.2-2.2 3.6 0 1.4 1 3 2.2 3.6L448 160 460.4 189.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 160 509.8 147.6c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nvar faAirFreshener = faSprayCanSparkles;\nvar faBahtSign = {\n  prefix: 'fas',\n  iconName: 'baht-sign',\n  icon: [320, 512, [], \"e0ac\", \"M136 0c-13.3 0-24 10.7-24 24l0 40-74.4 0C16.8 64 0 80.8 0 101.6L0 406.3c0 23 18.7 41.7 41.7 41.7l70.3 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 48 0c61.9 0 112-50.1 112-112 0-40.1-21.1-75.3-52.7-95.1 13.1-18.3 20.7-40.7 20.7-64.9 0-61.9-50.1-112-112-112l-16 0 0-40c0-13.3-10.7-24-24-24zM112 128l0 96-48 0 0-96 48 0zm48 96l0-96 16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0zm-48 64l0 96-48 0 0-96 48 0zm48 96l0-96 48 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-48 0z\"]\n};\nvar faTemperatureArrowUp = {\n  prefix: 'fas',\n  iconName: 'temperature-arrow-up',\n  icon: [512, 512, [\"temperature-up\"], \"e040\", \"M64.5 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144s-144-64.5-144-144c0-42.6 18.5-81 48-107.3L64.5 96zm96 336c35.3 0 64-28.7 64-64 0-26.9-16.5-49.9-40-59.3l0-212.7c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 212.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64zM439.1 9.4l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-9.4-9.4 0 178.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-178.7-9.4 9.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c6-6 14.1-9.4 22.6-9.4s16.6 3.4 22.6 9.4z\"]\n};\nvar faTemperatureUp = faTemperatureArrowUp;\nvar faWebAwesome = {\n  prefix: 'fas',\n  iconName: 'web-awesome',\n  icon: [640, 512, [], \"e682\", \"M372.2 52c0 20.9-12.4 39-30.2 47.2L448 192 552.4 171.1c-5.3-7.7-8.4-17.1-8.4-27.1 0-26.5 21.5-48 48-48s48 21.5 48 48c0 26-20.6 47.1-46.4 48L481 442.3c-10.3 23-33.2 37.7-58.4 37.7l-205.2 0c-25.2 0-48-14.8-58.4-37.7L46.4 192C20.6 191.1 0 170 0 144 0 117.5 21.5 96 48 96s48 21.5 48 48c0 10.1-3.1 19.4-8.4 27.1L192 192 298.1 99.1c-17.7-8.3-30-26.3-30-47.1 0-28.7 23.3-52 52-52s52 23.3 52 52z\"]\n};\nvar faNonBinary = {\n  prefix: 'fas',\n  iconName: 'non-binary',\n  icon: [384, 512, [], \"e807\", \"M192 544c-97.2 0-176-78.8-176-176 0-86.3 62.1-158 144-173l0-47.2-49.7 24.8-3 1.3c-15.2 5.7-32.5-.8-39.9-15.7-7.4-14.8-2.2-32.6 11.5-41.3l2.8-1.6 38.8-19.4-38.8-19.4c-15.8-7.9-22.2-27.1-14.3-42.9 7.4-14.8 24.8-21.4 40-15.6l3 1.3 49.7 24.8 0-44.2c0-17.7 14.3-32 32-32s32 14.3 32 32l0 44.2 49.7-24.8 3-1.3c15.2-5.8 32.5 .8 39.9 15.6s2.2 32.7-11.5 41.3l-2.8 1.6-38.7 19.4 38.7 19.3c15.8 7.9 22.2 27.1 14.3 42.9-7.4 14.8-24.7 21.4-39.9 15.6l-3-1.3-49.7-24.8 0 47.2c81.9 15.1 144 86.8 144 173 0 97.2-78.8 176-176 176zm0-64a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nvar faN = {\n  prefix: 'fas',\n  iconName: 'n',\n  icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6 320 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 384c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4 64 448c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nvar faArrowsUpDownLeftRight = {\n  prefix: 'fas',\n  iconName: 'arrows-up-down-left-right',\n  icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4 0 114.7-114.7 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4 114.7 0 0 114.7-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4 0-114.7 114.7 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4-114.7 0 0-114.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faArrows = faArrowsUpDownLeftRight;\nvar faHouse = {\n  prefix: 'fas',\n  iconName: 'house',\n  icon: [512, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208zM240 320l32 0c26.5 0 48 21.5 48 48l0 96-128 0 0-96c0-26.5 21.5-48 48-48z\"]\n};\nvar faHome = faHouse;\nvar faHomeAlt = faHouse;\nvar faHomeLgAlt = faHouse;\nvar faSpinner = {\n  prefix: 'fas',\n  iconName: 'spinner',\n  icon: [512, 512, [], \"f110\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm0 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM48 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm368 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM75 369.1A48 48 0 1 1 142.9 437 48 48 0 1 1 75 369.1zM75 75A48 48 0 1 1 142.9 142.9 48 48 0 1 1 75 75zM437 369.1A48 48 0 1 1 369.1 437 48 48 0 1 1 437 369.1z\"]\n};\nvar faGavel = {\n  prefix: 'fas',\n  iconName: 'gavel',\n  icon: [576, 512, [\"legal\"], \"f0e3\", \"M169.6 153.4l-18.7-18.7c-12.5-12.5-12.5-32.8 0-45.3L265.6-25.4c12.5-12.5 32.8-12.5 45.3 0L329.6-6.6c12.5 12.5 12.5 32.8 0 45.3L214.9 153.4c-12.5 12.5-32.8 12.5-45.3 0zM276 211.7l-31.4-31.4 112-112 119.4 119.4-112 112-31.4-31.4-232 232c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6l232-232zM390.9 374.6c-12.5-12.5-12.5-32.8 0-45.3L505.6 214.6c12.5-12.5 32.8-12.5 45.3 0l18.7 18.7c12.5 12.5 12.5 32.8 0 45.3L454.9 393.4c-12.5 12.5-32.8 12.5-45.3 0l-18.7-18.7z\"]\n};\nvar faLegal = faGavel;\nvar faTicketSimple = {\n  prefix: 'fas',\n  iconName: 'ticket-simple',\n  icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 64c0 8.8-7.4 15.7-15.7 18.6-18.8 6.5-32.3 24.4-32.3 45.4s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6l0 64c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64l0-64C0 311.2 7.4 304.3 15.7 301.4 34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192l0-64z\"]\n};\nvar faTicketAlt = faTicketSimple;\nvar faDove = {\n  prefix: 'fas',\n  iconName: 'dove',\n  icon: [512, 512, [128330], \"f4ba\", \"M496 64c13.2 0 20.7 15.1 12.8 25.6L480 128 480 304c0 79.5-64.5 144-144 144l-112 0-46.3 46.3c-10.4 10.4-26.5 12.4-39.1 4.8L41.5 440.9c-17-10.2-15-35.5 3.4-42.9L160 352C23.8 311.1 7.5 169.8 22 95.7 25.6 77.9 45.3 71.4 61.3 80.2L320 224 320 144c0-44.2 35.8-80 80-80l96 0zm-96 56a24 24 0 1 0 0 48 24 24 0 1 0 0-48zM182.5-9.6c12.4-13.7 33.3-8.9 42.5 7.1l56.4 98.3c-5.8 14.4-9.2 30.1-9.4 46.5L138.1 68c10.1-31.6 27-58.4 44.4-77.6z\"]\n};\nvar faTarpDroplet = {\n  prefix: 'fas',\n  iconName: 'tarp-droplet',\n  icon: [512, 512, [], \"e57c\", \"M256 160c35.3 0 64-26.9 64-60 0-24-33.7-70.1-52.2-93.5-6.1-7.7-17.5-7.7-23.6 0-18.5 23.4-52.2 69.5-52.2 93.5 0 33.1 28.7 60 64 60zM368 96c0 61.9-50.1 112-112 112S144 157.9 144 96c0-11.1 1.6-21.9 4.6-32L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l277.5 0c17 0 33.3-6.7 45.3-18.7L493.3 322.7c12-12 18.7-28.3 18.7-45.3L512 128c0-35.3-28.7-64-64-64l-84.6 0c3 10.1 4.6 20.9 4.6 32zm85.5 176L336 389.5 336 296c0-13.3 10.7-24 24-24l93.5 0zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTreeCity = {\n  prefix: 'fas',\n  iconName: 'tree-city',\n  icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 48 48 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 16 0c26.5 0 48 21.5 48 48l0 320c0 26.5-21.5 48-48 48l-256 0c-26.5 0-48-21.5-48-48l0-416zm64 64l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 304l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM528 192c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 304l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM96 480l0-160-16 0c-44.2 0-80-35.8-80-80 0-26.7 13.1-50.3 33.2-64.9-.8-4.9-1.2-10-1.2-15.1 0-53 43-96 96-96s96 43 96 96l0 96c0 35.3-28.7 64-64 64l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faTurnUp = {\n  prefix: 'fas',\n  iconName: 'turn-up',\n  icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M169.4 9.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9S332.9 192 320 192l-64 0 0 160c0 88.4-71.6 160-160 160l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l64 0c17.7 0 32-14.3 32-32l0-160-64 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128z\"]\n};\nvar faLevelUpAlt = faTurnUp;\nvar faTemperatureQuarter = {\n  prefix: 'fas',\n  iconName: 'temperature-quarter',\n  icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 0C107 0 64 43 64 96l0 164.7C34.5 287 16 325.4 16 368 16 447.5 80.5 512 160 512s144-64.5 144-144c0-42.6-18.5-81-48-107.3L256 96c0-53-43-96-96-96zm64 368c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3l0-28.7c0-13.3 10.7-24 24-24s24 10.7 24 24l0 28.7c23.5 9.5 40 32.5 40 59.3z\"]\n};\nvar faTemperature1 = faTemperatureQuarter;\nvar faThermometer1 = faTemperatureQuarter;\nvar faThermometerQuarter = faTemperatureQuarter;\nvar faSliders = {\n  prefix: 'fas',\n  iconName: 'sliders',\n  icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 224zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384z\"]\n};\nvar faSlidersH = faSliders;\nvar faMosque = {\n  prefix: 'fas',\n  iconName: 'mosque',\n  icon: [576, 512, [128332], \"f678\", \"M174.8 224l226.4 0c43.5 0 78.8-35.3 78.8-78.8 0-25.5-12.3-49.4-33.1-64.2L297.3-25.4c-5.6-3.9-13-3.9-18.5 0L129.1 81C108.3 95.8 96 119.7 96 145.2 96 188.7 131.3 224 174.8 224zM512 512c35.3 0 64-28.7 64-64l0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-448 0 0-48c0-17.7-14.3-32-32-32S0 206.3 0 224L0 448c0 35.3 28.7 64 64 64l448 0zM240 384c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80-96 0 0-80z\"]\n};\nvar faH = {\n  prefix: 'fas',\n  iconName: 'h',\n  icon: [384, 512, [104], \"48\", \"M320 288l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160-256 0 0-160c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 256 0z\"]\n};\nvar faInfo = {\n  prefix: 'fas',\n  iconName: 'info',\n  icon: [192, 512, [], \"f129\", \"M48 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM0 192c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 256 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-224-32 0c-17.7 0-32-14.3-32-32z\"]\n};\nvar faPersonWalking = {\n  prefix: 'fas',\n  iconName: 'person-walking',\n  icon: [384, 512, [128694, \"walking\"], \"f554\", \"M192 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM105.4 227.9l22.6-22.6 0 69.3c0 28 12.2 54.7 33.5 72.9l71.4 61.2c5.9 5.1 9.8 12.1 10.9 19.8l12.6 88.1c2.5 17.5 18.7 29.7 36.2 27.2s29.7-18.7 27.2-36.2l-12.6-88.1c-3.3-23.1-14.9-44.1-32.6-59.3l-34.5-29.6 0-115.2 3.8 4.7c18.2 22.8 45.8 36 75 36l33.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-33.2 0c-9.7 0-18.9-4.4-25-12l-17.9-22.4c-23-28.8-57.9-45.6-94.8-45.6-32.2 0-63.1 12.8-85.8 35.6L60.1 182.6C42.1 200.6 32 225 32 250.5L32 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-37.5c0-8.5 3.4-16.6 9.4-22.6zm12.4 179.4c-1.5 5.2-4.3 10-8.1 13.8L41.4 489.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.3-68.3c11.5-11.5 19.9-25.8 24.4-41.5l2.2-7.6-46-39.4c-2.5-2.2-5-4.4-7.4-6.8l-10.4 36.2z\"]\n};\nvar faWalking = faPersonWalking;\nvar faArrowTurnDown = {\n  prefix: 'fas',\n  iconName: 'arrow-turn-down',\n  icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nvar faLevelDown = faArrowTurnDown;\nvar faRoad = {\n  prefix: 'fas',\n  iconName: 'road',\n  icon: [512, 512, [128739], \"f018\", \"M223.9 32l-76.2 0c-29.4 0-55.1 20.1-62.1 48.6L1.4 420.5C-6.1 450.7 16.8 480 48 480l175.9 0 0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 176.1 0c31.2 0 54.1-29.3 46.6-59.5L426.5 80.6C419.4 52.1 393.8 32 364.3 32l-76.4 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSpiral = {\n  prefix: 'fas',\n  iconName: 'spiral',\n  icon: [512, 512, [], \"e80a\", \"M115.5 7.4c13.6-11.3 33.8-9.5 45.1 4.1s9.5 33.8-4.1 45.1C100.2 103.5 64 175.2 64 256 64 362 150 448 256 448s192-86 192-192c0-75.1-60.9-136-136-136S176 180.9 176 256c0 44.2 35.8 80 80 80s80-35.8 80-80c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-48.6 39.4-88 88-88s88 39.4 88 88c0 79.5-64.5 144-144 144S112 335.5 112 256c0-110.5 89.5-200 200-200s200 89.5 200 200c0 141.4-114.6 256-256 256S0 397.4 0 256C0 155.8 45 66.1 115.5 7.4z\"]\n};\nvar faFaceFrown = {\n  prefix: 'fas',\n  iconName: 'face-frown',\n  icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm90.6-113.9c-20.4-28-53.4-46.1-90.6-46.1s-70.2 18.1-90.6 46.1c-7.8 10.7-22.8 13.1-33.5 5.3s-13.1-22.8-5.3-33.5C155.7 330 202.8 304 256 304s100.3 26 129.4 65.9c7.8 10.7 5.4 25.7-5.3 33.5s-25.7 5.4-33.5-5.3zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrown = faFaceFrown;\nvar faWineGlassEmpty = {\n  prefix: 'fas',\n  iconName: 'wine-glass-empty',\n  icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C48.7 0 35.6 10.8 32.6 25.7L3.2 173C1.1 183.5 0 194.2 0 205l0 3c0 77.4 55 142 128 156.8l0 115.2-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-115.2C265 350 320 285.4 320 208l0-3c0-10.7-1.1-21.4-3.2-32L287.4 25.7C284.4 10.8 271.3 0 256 0L64 0zm1.9 185.6L90.2 64 229.8 64 254.1 185.6c1.3 6.4 1.9 12.9 1.9 19.4l0 3c0 53-43 96-96 96s-96-43-96-96l0-3c0-6.5 .6-13 1.9-19.4z\"]\n};\nvar faWineGlassAlt = faWineGlassEmpty;\nvar faClapperboard = {\n  prefix: 'fas',\n  iconName: 'clapperboard',\n  icon: [512, 512, [], \"e131\", \"M448 64c2 0 3.9 .1 5.8 .3l-95.7 95.7 67.9 0 72-72c8.8 11 14 24.9 14 40l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l70.1 0-96 96 67.9 0 95-95 1-1 92.1 0-96 96 67.9 0 95-95 1-1 86.1 0z\"]\n};\nvar faForwardStep = {\n  prefix: 'fas',\n  iconName: 'forward-step',\n  icon: [384, 512, [\"step-forward\"], \"f051\", \"M21 36.8c12.9-7 28.7-6.3 41 1.8L320 208.1 320 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 384c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-144.1-258 169.6c-12.3 8.1-28 8.8-41 1.8S0 454.7 0 440L0 72C0 57.3 8.1 43.8 21 36.8z\"]\n};\nvar faStepForward = faForwardStep;\nvar faSquareUpRight = {\n  prefix: 'fas',\n  iconName: 'square-up-right',\n  icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM168 160c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l35 35-67 67c-9.4 9.4-9.4 24.6 0 33.9l24 24c9.4 9.4 24.6 9.4 33.9 0l67-67 35 35c6.9 6.9 17.2 8.9 26.2 5.2S320 321.7 320 312l0-128c0-13.3-10.7-24-24-24l-128 0z\"]\n};\nvar faExternalLinkSquareAlt = faSquareUpRight;\nvar faBookJournalWhills = {\n  prefix: 'fas',\n  iconName: 'book-journal-whills',\n  icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48L96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32zM274.1 99.2c2.6-2.6 6.7-3.1 9.9-1.1 32.1 20 53.4 55.6 53.4 96.2 0 62.6-50.7 113.3-113.3 113.3S110.7 256.9 110.7 194.3c0-40.6 21.4-76.2 53.4-96.2 3.1-2 7.2-1.5 9.9 1.1s3.1 6.7 1.2 9.8c-5.2 8.6-8.2 18.7-8.2 29.5 0 15.1 5.9 28.8 15.5 39.1 2.5 2.7 2.9 6.7 .9 9.7-4.7 7.4-7.4 16.1-7.4 25.5 0 21.6 14.3 39.9 34 45.9l1-24.8c-7.1-4.4-11.8-12.2-11.8-21.1 0-9.6 5.5-18 13.5-22.1l3.3-81.8c.2-4.3 3.7-7.7 8-7.7s7.8 3.4 8 7.7l3.3 81.8c8 4.1 13.5 12.4 13.5 22.1 0 8.9-4.7 16.7-11.8 21.1l1 24.8c19.6-6 33.9-24.1 34-45.6l0-.6c-.1-9.3-2.7-17.9-7.4-25.2-1.9-3.1-1.6-7.1 .9-9.7 9.6-10.2 15.5-23.9 15.5-39.1 0-10.8-3-20.9-8.2-29.5-1.9-3.2-1.4-7.2 1.2-9.8z\"]\n};\nvar faJournalWhills = faBookJournalWhills;\nvar faChampagneGlasses = {\n  prefix: 'fas',\n  iconName: 'champagne-glasses',\n  icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9l125 45.6 125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6l31.3 86.2 41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41c-47.4 17.3-94.8 34.5-142.2 51.8-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-33.9-130-95.2l-14.6-64.7-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6.1 25.2 24.4 19.1 41s-24.4 25.2-41 19.1c-47.4-17.3-94.8-34.6-142.2-51.8-16.6-6.1-25.2-24.4-19.1-41S26.3 392 42.9 398l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8 89.2 32.5 13.1-57.9-75.1-27.4zm240.9 0l-75.1 27.4 13.1 57.9 89.2-32.5-27.2-52.8z\"]\n};\nvar faGlassCheers = faChampagneGlasses;\nvar faDumpster = {\n  prefix: 'fas',\n  iconName: 'dumpster',\n  icon: [576, 512, [], \"f793\", \"M132.3 64L106.7 192 24 192c-13.3 0-24-10.7-24-24l0-4.1c0-2.6 .4-5.1 1.2-7.6L26.5 80.4C29.8 70.6 39 64 49.3 64l83 0zm23.4 128l25.6-128 82.7 0 0 128-108.3 0zM312 64l82.7 0 25.6 128-108.3 0 0-128zm131.7 0l83 0c10.3 0 19.5 6.6 22.8 16.4l25.3 75.9c.8 2.4 1.2 5 1.2 7.6l0 4.1c0 13.3-10.7 24-24 24l-82.7 0-25.6-128zM25.7 240l524.7 0c-.4 2.1-13.3 73.4-38.9 213.7-3 16.3-17.9 27.6-34.4 26.1S448 464.6 448 448l0-16-320 0 0 16c0 16.6-12.6 30.4-29.1 31.9S67.5 470 64.5 453.7C39 313.3 26 242.1 25.7 240z\"]\n};\nvar faHeartCircleXmark = {\n  prefix: 'fas',\n  iconName: 'heart-circle-xmark',\n  icon: [576, 512, [], \"e501\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM432 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-36.7 36.7-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l36.7 36.7-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l36.7-36.7 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-36.7-36.7 36.7-36.7z\"]\n};\nvar faComputer = {\n  prefix: 'fas',\n  iconName: 'computer',\n  icon: [576, 512, [], \"e4e5\", \"M348.8 32C340.7 46.1 336 62.5 336 80l0 16-272 0 0 224 272 0 0 64-272 0c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l284.8 0zM336 432c0 17.5 4.7 33.9 12.8 48L120 480c-13.3 0-24-10.7-24-24s10.7-24 24-24l216 0zM432 32l96 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-352c0-26.5 21.5-48 48-48zm24 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm56 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faWandMagic = {\n  prefix: 'fas',\n  iconName: 'wand-magic',\n  icon: [512, 512, [\"magic\"], \"f0d0\", \"M398.5 12.2l-88.2 88.2 101.3 101.3 88.2-88.2C507.6 105.6 512 95 512 84s-4.4-21.6-12.2-29.5L457.5 12.2C449.6 4.4 439 0 428 0s-21.6 4.4-29.5 12.2zM276.4 134.3L12.2 398.5C4.4 406.4 0 417 0 428s4.4 21.6 12.2 29.5l42.3 42.3C62.4 507.6 73 512 84 512s21.6-4.4 29.5-12.2L377.7 235.6 276.4 134.3z\"]\n};\nvar faMagic = faWandMagic;\nvar faBrain = {\n  prefix: 'fas',\n  iconName: 'brain',\n  icon: [512, 512, [129504], \"f5dc\", \"M120 56c0-30.9 25.1-56 56-56l24 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32l-32 0c-29.8 0-54.9-20.4-62-48-.7 0-1.3 0-2 0-44.2 0-80-35.8-80-80 0-18 6-34.6 16-48-19.4-14.6-32-37.8-32-64 0-30.9 17.6-57.8 43.2-71.1-7.1-12-11.2-26-11.2-40.9 0-44.2 35.8-80 80-80l0-24zm272 0l0 24c44.2 0 80 35.8 80 80 0 15-4.1 29-11.2 40.9 25.7 13.3 43.2 40.1 43.2 71.1 0 26.2-12.6 49.4-32 64 10 13.4 16 30 16 48 0 44.2-35.8 80-80 80-.7 0-1.3 0-2 0-7.1 27.6-32.2 48-62 48l-32 0c-17.7 0-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32l24 0c30.9 0 56 25.1 56 56z\"]\n};\nvar faBriefcaseMedical = {\n  prefix: 'fas',\n  iconName: 'briefcase-medical',\n  icon: [512, 512, [], \"f469\", \"M200 48l112 0c4.4 0 8 3.6 8 8l0 40-128 0 0-40c0-4.4 3.6-8 8-8zm-56 8l0 40-80 0C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-80 0 0-40c0-30.9-25.1-56-56-56L200 0c-30.9 0-56 25.1-56 56zm80 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n};\nvar faHouseMedicalCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'house-medical-circle-exclamation',\n  icon: [640, 512, [], \"e512\", \"M309.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S50.8 272 64 272l16 0 0 176c0 35.3 28.7 64 64 64l196 0c-21.2-29.5-34.3-65.3-35.9-104L272 408c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 20 0c34.9-48.5 91.7-80 156-80 10.7 0 21.1 .9 31.3 2.5L309.8 8.6zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nvar faCodeCommit = {\n  prefix: 'fas',\n  iconName: 'code-commit',\n  icon: [576, 512, [], \"f386\", \"M288 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C430 361 365.4 416 288 416S146 361 131.2 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l99.2 0C146 151 210.6 96 288 96s142 55 156.8 128l99.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-99.2 0z\"]\n};\nvar faPersonBreastfeeding = {\n  prefix: 'fas',\n  iconName: 'person-breastfeeding',\n  icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5-17.6-14.1-22.7-38.1-13.5-57.7l-.7-.1c-38.9-5.6-74.3-25.1-99.7-54.8l0-36.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7-4.9-2.8-9.2-6.4-12.6-10.6-4.6-5.4-7.8-11.7-9.6-18.4-3.3-12-1.9-25.2 4.8-36.6 .6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1l75.2 0c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4 2.9 6.7 4.3 13.8 4 20.8-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nvar faPersonRays = {\n  prefix: 'fas',\n  iconName: 'person-rays',\n  icon: [512, 512, [], \"e54d\", \"M312.5 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7l46.3 62.4c10.5 14.2 30.6 17.2 44.8 6.6s17.2-30.6 6.6-44.8l-70.5-95C338.5 132 298.8 112 256.5 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6l46.3-62.4 0 275.3c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM7.5 7c-9.4 9.4-9.4 24.6 0 33.9l80 80c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41.5 7C32.1-2.3 16.9-2.3 7.5 7zm464 0l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7.5 505c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-80 80c-9.4 9.4-9.4 24.6 0 33.9zm464 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l80 80z\"]\n};\nvar faManatSign = {\n  prefix: 'fas',\n  iconName: 'manat-sign',\n  icon: [384, 512, [], \"e1d5\", \"M192 32c-13.3 0-24 10.7-24 24l0 41.5C73.3 109.3 0 190.1 0 288L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-62.5 44.8-114.5 104-125.8L168 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-293.8c59.2 11.2 104 63.3 104 125.8l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-97.9-73.3-178.7-168-190.5L216 56c0-13.3-10.7-24-24-24z\"]\n};\nvar faSort = {\n  prefix: 'fas',\n  iconName: 'sort',\n  icon: [384, 512, [\"unsorted\"], \"f0dc\", \"M2.4 204.2c5 12 16.6 19.8 29.6 19.8l320 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-9.2 9.2-11.9 22.9-6.9 34.9zm0 103.5c-5 12-2.2 25.7 6.9 34.9l160 160c12.5 12.5 32.8 12.5 45.3 0l160-160c9.2-9.2 11.9-22.9 6.9-34.9S364.9 288 352 288L32 288c-12.9 0-24.6 7.8-29.6 19.8z\"]\n};\nvar faUnsorted = faSort;\nvar faCircleRadiation = {\n  prefix: 'fas',\n  iconName: 'circle-radiation',\n  icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm80 0l64.3 0c8.7 0 15.7-7.1 17.3-15.6 4.4-24.4 18.1-45.5 37.2-59.7 7.4-5.5 10.6-15.6 6-23.6l-32.5-56.3c-4.3-7.5-13.9-10.3-21.2-5.5-48.2 31.5-81.3 84.2-86.3 144.8-.7 8.8 6.5 16 15.3 16zm137.9 89.8c-8.5-3.7-18.8-1.4-23.5 6.6l-31 53.8c-4.3 7.5-1.9 17.2 5.8 21.1 26.1 13.2 55.5 20.7 86.8 20.7s60.7-7.5 86.8-20.7c7.7-3.9 10.1-13.6 5.8-21.1l-31-53.8c-4.6-8-15-10.3-23.5-6.6-11.7 5-24.5 7.8-38.1 7.8s-26.4-2.8-38.1-7.8zM350.4 240.4c1.6 8.6 8.5 15.6 17.3 15.6l64.3 0c8.8 0 16.1-7.2 15.3-16-5-60.6-38.1-113.2-86.3-144.8-7.3-4.8-16.8-2-21.2 5.5L307.3 157c-4.6 8-1.4 18.1 6 23.6 19.1 14.2 32.7 35.4 37.2 59.7zM256 305.7a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faRadiationAlt = faCircleRadiation;\nvar faLaptopCode = {\n  prefix: 'fas',\n  iconName: 'laptop-code',\n  icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 240-64 0 0-240-384 0 0 240-64 0 0-240zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2 0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSink = {\n  prefix: 'fas',\n  iconName: 'sink',\n  icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32 14.3 32 32 32 32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96l0 192-64 0 0-40c0-30.9-25.1-56-56-56l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c4.4 0 8 3.6 8 8l0 40-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-40c0-4.4 3.6-8 8-8l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0c-30.9 0-56 25.1-56 56l0 40-64 0 0-192z\"]\n};\nvar faArrowUpFromWaterPump = {\n  prefix: 'fas',\n  iconName: 'arrow-up-from-water-pump',\n  icon: [640, 512, [], \"e4b6\", \"M144 32c-26.5 0-48 21.5-48 48l0 176-16 0c-26.5 0-48 21.5-48 48l0 79.6c17.6-2 36 2.5 51.3 14 3.4 2.6 6.1 1.4 9.8-.3l.8-.4c5.7-2.6 12.9-6.9 21.7-13.5 27.5-20.7 59.9-31.2 92.3-31.4 33.1-.2 66.3 10.2 94.4 31.4 22.1 16.6 29.1 16.6 51.2 0 27.5-20.7 59.9-31.2 92.4-31.4 33.1-.2 66.3 10.2 94.4 31.4 6.9 5.2 12.8 9 18 11.7 .6 .3 1.2 .6 1.8 1 4.2 2.3 8.5 4.6 12.6 1.5 10.7-8.1 22.9-12.7 35.3-14.1l0-79.5c0-26.5-21.5-48-48-48l-56 0 0-142.1 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L497 39c-9.4-9.4-24.6-9.4-33.9 0l-88 88c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 0 142.1-136 0 0-176c0-26.5-21.5-48-48-48L144 32zM474.6 476.1c19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 482.3 17.6 490.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0z\"]\n};\nvar faMicrophoneLinesSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-lines-slash',\n  icon: [576, 512, [\"microphone-alt-slash\"], \"f539\", \"M7-24.9c9.4-9.4 24.6-9.4 33.9 0l151 151 0-30.2c0-53 43-96 96-96 50.3 0 91.6 38.7 95.7 88L328 88c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0 0 48-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l55.7 0c-1.9 22.9-11.8 43.4-26.9 59l33.9 33.9c25.5-26 41.3-61.6 41.3-100.9l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 52.6-21.1 100.2-55.3 134.8L569 503.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9.1C-2.3-.3-2.3-15.5 7-24.9zM297.8 367.7l41.4 41.4c-8.8 2.4-17.9 4.3-27.3 5.4l0 49.5 48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0 0-49.5C169.3 402.7 96 321.9 96 224l0-40c0-5.1 1.6-9.9 4.4-13.8l43.6 43.6 0 10.2c0 79.5 64.5 144 144 144 3.3 0 6.6-.1 9.8-.3z\"]\n};\nvar faMicrophoneAltSlash = faMicrophoneLinesSlash;\nvar faServer = {\n  prefix: 'fas',\n  iconName: 'server',\n  icon: [448, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm216 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm216 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faUser = {\n  prefix: 'fas',\n  iconName: 'user',\n  icon: [448, 512, [128100, 62144, 62470, \"user-alt\", \"user-large\"], \"f007\", \"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\"]\n};\nvar faUserAlt = faUser;\nvar faUserLarge = faUser;\nvar faSnowflake = {\n  prefix: 'fas',\n  iconName: 'snowflake',\n  icon: [512, 512, [10052, 10054], \"f2dc\", \"M288.2 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 62.1-15-15c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l49 49 0 70.6-61.2-35.3-17.9-66.9c-3.4-12.8-16.6-20.4-29.4-17S95.3 98 98.7 110.8l5.5 20.5-53.7-31C35.2 91.5 15.6 96.7 6.8 112s-3.6 34.9 11.7 43.7l53.7 31-20.5 5.5c-12.8 3.4-20.4 16.6-17 29.4s16.6 20.4 29.4 17l66.9-17.9 61.2 35.3-61.2 35.3-66.9-17.9c-12.8-3.4-26 4.2-29.4 17s4.2 26 17 29.4l20.5 5.5-53.7 31C3.2 365.1-2 384.7 6.8 400s28.4 20.6 43.7 11.7l53.7-31-5.5 20.5c-3.4 12.8 4.2 26 17 29.4s26-4.2 29.4-17l17.9-66.9 61.2-35.3 0 70.6-49 49c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l15-15 0 62.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-62.1 15 15c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-49-49 0-70.6 61.2 35.3 17.9 66.9c3.4 12.8 16.6 20.4 29.4 17s20.4-16.6 17-29.4l-5.5-20.5 53.7 31c15.3 8.8 34.9 3.6 43.7-11.7s3.6-34.9-11.7-43.7l-53.7-31 20.5-5.5c12.8-3.4 20.4-16.6 17-29.4s-16.6-20.4-29.4-17l-66.9 17.9-61.2-35.3 61.2-35.3 66.9 17.9c12.8 3.4 26-4.2 29.4-17s-4.2-26-17-29.4l-20.5-5.5 53.7-31c15.3-8.8 20.6-28.4 11.7-43.7s-28.4-20.5-43.7-11.7l-53.7 31 5.5-20.5c3.4-12.8-4.2-26-17-29.4s-26 4.2-29.4 17l-17.9 66.9-61.2 35.3 0-70.6 49-49c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-15 15 0-62.1z\"]\n};\nvar faTaurus = {\n  prefix: 'fas',\n  iconName: 'taurus',\n  icon: [384, 512, [], \"e84f\", \"M336-16c17.7 0 32 14.3 32 32 0 58.5-28.6 110.3-72.5 142.3 53.2 34.1 88.5 93.8 88.5 161.7 0 106-86 192-192 192S0 426 0 320C0 252.1 35.3 192.4 88.5 158.3 44.6 126.3 16 74.5 16 16 16-1.7 30.3-16 48-16S80-1.7 80 16c0 61.9 50.1 112 112 112S304 77.9 304 16c0-17.7 14.3-32 32-32zM192 192a128 128 0 1 0 0 256 128 128 0 1 0 0-256z\"]\n};\nvar faSkullCrossbones = {\n  prefix: 'fas',\n  iconName: 'skull-crossbones',\n  icon: [448, 512, [128369, 9760], \"f714\", \"M384 144C384 64.5 312.4 0 224 0S64 64.5 64 144c0 47.1 25.1 88.9 64 115.2l0 28.8c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-28.8c38.9-26.3 64-68.1 64-115.2zM160 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM445.5 339.7c-6.8-16.3-25.5-24-41.8-17.2L224 397.3 44.3 322.5c-16.3-6.8-35 .9-41.8 17.2s.9 35 17.2 41.8L140.8 432 19.7 482.5C3.4 489.3-4.3 508 2.5 524.3s25.5 24 41.8 17.2L224 466.7 403.7 541.5c16.3 6.8 35-.9 41.8-17.2s-.9-35-17.2-41.8L307.2 432 428.3 381.5c16.3-6.8 24-25.5 17.2-41.8z\"]\n};\nvar faPesoSign = {\n  prefix: 'fas',\n  iconName: 'peso-sign',\n  icon: [448, 512, [], \"e222\", \"M112 32C94.3 32 80 46.3 80 64l0 64-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 32-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 96 0c65.6 0 122-39.5 146.7-96l37.3 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-24.8 0c.5-5.3 .8-10.6 .8-16s-.3-10.7-.8-16l24.8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-37.3 0C362 71.5 305.6 32 240 32L112 32zm199.6 96l-167.6 0 0-32 96 0c28.4 0 54 12.4 71.6 32zM144 176l190.7 0c.9 5.2 1.3 10.5 1.3 16s-.5 10.8-1.3 16l-190.7 0 0-32zm167.6 80c-17.6 19.6-43.1 32-71.6 32l-96 0 0-32 167.6 0z\"]\n};\nvar faWineGlass = {\n  prefix: 'fas',\n  iconName: 'wine-glass',\n  icon: [320, 512, [127863], \"f4e3\", \"M32.6 25.7C35.6 10.8 48.7 0 64 0L256 0c15.3 0 28.4 10.8 31.4 25.7L316.8 173c2.1 10.5 3.2 21.2 3.2 32l0 3c0 77.4-55 142-128 156.8l0 115.2 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 544c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 0-115.2C55 350 0 285.4 0 208l0-3c0-10.7 1.1-21.4 3.2-32L32.6 25.7zM77.4 128l165.1 0-12.8-64-139.5 0-12.8 64z\"]\n};\nvar faTemperatureHalf = {\n  prefix: 'fas',\n  iconName: 'temperature-half',\n  icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 0C107 0 64 43 64 96l0 164.7C34.5 287 16 325.4 16 368 16 447.5 80.5 512 160 512s144-64.5 144-144c0-42.6-18.5-81-48-107.3L256 96c0-53-43-96-96-96zm64 368c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3l0-92.7c0-13.3 10.7-24 24-24s24 10.7 24 24l0 92.7c23.5 9.5 40 32.5 40 59.3z\"]\n};\nvar faTemperature2 = faTemperatureHalf;\nvar faThermometer2 = faTemperatureHalf;\nvar faThermometerHalf = faTemperatureHalf;\nvar faTicket = {\n  prefix: 'fas',\n  iconName: 'ticket',\n  icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128l0 64C0 200.8 7.4 207.7 15.7 210.6 34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-8.8-7.4-15.7-15.7-18.6-18.8-6.5-32.3-24.4-32.3-45.4s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6l0-64c0-35.3-28.7-64-64-64L64 64zM416 336l0-160-256 0 0 160 256 0zM112 160c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nvar faWheatAwnCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'wheat-awn-circle-exclamation',\n  icon: [640, 512, [], \"e598\", \"M496 576a144 144 0 1 1 0-288 144 144 0 1 1 0 288zM81 529c-9.4 9.3-24.5 9.3-33.9 0-9.4-9.4-9.4-24.6 0-33.9L81 529zm30.2-294.4c6.2-4.1 14.7-3.4 20.1 2.1l46.1 46.1 6.1 6.7c19.7 23.8 26.3 55 19.3 83.9 31.7-7.7 66.2 1 90.6 25.3l12 12c-.8 7-1.2 14.2-1.2 21.4 0 20 3 39.3 8.7 57.4-36.8 21.8-85 17-116.6-14.7L165.6 444.3 81 529C69.7 517.7 58.4 506.3 47 495l84.7-84.7-30.5-30.5c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1zM496 476a20 20 0 1 0 0 40 20 20 0 1 0 0-40zm0-140c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16 8.8 0 16-7.2 16-16l0-80c0-8.8-7.2-16-16-16zM215.2 130.6c6.2-4.1 14.7-3.4 20.1 2.1l46.1 46.1 6.1 6.7c19.7 23.8 26.3 55 19.3 83.9 24.2-5.9 50.1-2.1 71.9 10.8-32.2 24.9-56.2 59.8-67.4 100.1-3.8-2.8-7.5-6-11-9.5l-94.9-94.9c-37.5-37.5-37.5-98.3 0-135.7l7.4-7.4 2.5-2.1zM526.7 15c9.4-9.4 24.6-9.4 33.9 0 8.8 8.8 9.3 22.7 1.7 32.1L560.6 49 446.2 163.4c7.7 1 15.3 3 22.5 5.9L527 111c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.1l-1.7 1.8-52.7 52.7 39 39c3.2 3.2 4.7 7.4 4.7 11.6-17.7-5.4-36.5-8.3-55.9-8.3-34.2 0-66.3 8.9-94.1 24.6l-92.7-92.7c-37.5-37.5-37.5-98.3 0-135.8l7.4-7.4 2.5-2.1c6.2-4.1 14.7-3.4 20.1 2.1l39 39 52.7-52.7c9.4-9.4 24.6-9.4 34 0 8.8 8.8 9.3 22.7 1.6 32.1L465 49 406.7 107.3c2.8 7.1 4.7 14.5 5.8 22.1L526.7 15z\"]\n};\nvar faArrowsTurnRight = {\n  prefix: 'fas',\n  iconName: 'arrows-turn-right',\n  icon: [448, 512, [], \"e4c0\", \"M313.4-6.6c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 128 128 128c-35.3 0-64 28.7-64 64l0 32c0 17.7-14.3 32-32 32S0 241.7 0 224l0-32C0 121.3 57.3 64 128 64l210.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 384 96 384c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32S0 465.7 0 448l0-32c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faCandyCane = {\n  prefix: 'fas',\n  iconName: 'candy-cane',\n  icon: [448, 512, [], \"f786\", \"M421.8 39.6C452 85.2 456.5 142.9 435.1 192l-165.4 0 41.4-41.4c.8-.8 1.5-1.6 2.2-2.4L421.8 39.6zM268 102.9c-.8 .7-1.6 1.4-2.4 2.2l-28.1 28.1c-25 25-65.5 25-90.5 0s-25-65.5 0-90.5L175 14.6C229.9-40.2 314.5-46.7 376.5-5.6L268 102.9zM125.7 336l80-80 181 0-82.5 82.5 0-2.5-178.5 0zm117 64L141.4 501.3c-25 25-65.5 25-90.5 0s-25-65.5 0-90.5l10.7-10.7 181 0z\"]\n};\nvar faWheelchair = {\n  prefix: 'fas',\n  iconName: 'wheelchair',\n  icon: [512, 512, [], \"f193\", \"M136 40a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM117.9 197.6l12.6 63c-38.6 12.4-66.5 48.7-66.5 91.4 0 53 43 96 96 96 35.6 0 66.7-19.4 83.3-48.2 2.3 .1 4.6 .2 7 .2l4.1 0c1 0 2.1 0 3.1 0l55.2 0c-20.4 64.9-81 112-152.7 112-88.4 0-160-71.6-160-160 0-73.8 50-135.9 117.9-154.4zm148.6-28.1l23.7 118.5 60.5 0c33.3 0 63.2 20.7 74.9 51.9l25.5 68 18.7-6.2c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5l-48 16c-16.3 5.4-34-3-40.1-19.1l-36.3-96.9c-2.3-6.2-8.3-10.4-15-10.4l-86.1 0c-.4 0-.8 0-1.3 0l-13.1 0c-30.5 0-56.8-21.5-62.8-51.4L165.3 189.7c-6.4-31.9 18-61.7 50.6-61.7 24.6 0 45.8 17.4 50.6 41.5z\"]\n};\nvar faSpellCheck = {\n  prefix: 'fas',\n  iconName: 'spell-check',\n  icon: [576, 512, [], \"f891\", \"M120 32c-48.6 0-88 39.4-88 88l0 168c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-168c0-48.6-39.4-88-88-88l-16 0zm40 128l-64 0 0-40c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24l0 40zM304 32c-17.7 0-32 14.3-32 32l0 224c0 17.7 14.3 32 32 32l72 0c48.6 0 88-39.4 88-88 0-23.6-9.3-45-24.4-60.8 10.3-14.4 16.4-32.1 16.4-51.2 0-48.6-39.4-88-88-88l-64 0zm64 112l-32 0 0-48 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24zM336 256l0-48 40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0zm233 84c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-105.7 132.1-38.7-38.7c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c6.4 6.4 15.3 9.8 24.4 9.3s17.5-4.9 23.2-12L569 340z\"]\n};\nvar faVolumeOff = {\n  prefix: 'fas',\n  iconName: 'volume-off',\n  icon: [320, 512, [], \"f026\", \"M96 352l-48 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48l48 0 134.1-119.2c6.4-5.7 14.6-8.8 23.1-8.8 19.2 0 34.8 15.6 34.8 34.8l0 378.4c0 19.2-15.6 34.8-34.8 34.8-8.5 0-16.7-3.1-23.1-8.8L96 352z\"]\n};\nvar faLungs = {\n  prefix: 'fas',\n  iconName: 'lungs',\n  icon: [576, 512, [129729], \"f604\", \"M320 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 141.9-32 19.2 0-116.7c0-24.5-19.9-44.4-44.4-44.4-12.5 0-24.4 5.3-32.8 14.5l-26.4 29C42.9 160.8 0 271.8 0 387l0 30.5c0 52.2 42.3 94.5 94.5 94.5 22 0 43.7-5.1 63.4-15l5-2.5c37.4-18.7 61-56.9 61-98.8l0-128 64-38.4 64 38.4 0 128c0 41.8 23.6 80.1 61 98.8l5 2.5c19.7 9.8 41.4 15 63.4 15 52.2 0 94.5-42.3 94.5-94.5l0-6.2c0-111.1-36.7-219-104.4-307L428.9 48.7c-8.1-10.6-20.7-16.7-34-16.7-23.7 0-42.9 19.2-42.9 42.9l0 118.2-32-19.2 0-141.9z\"]\n};\nvar faBookmark = {\n  prefix: 'fas',\n  iconName: 'bookmark',\n  icon: [384, 512, [128278, 61591], \"f02e\", \"M64 0C28.7 0 0 28.7 0 64L0 480c0 11.5 6.2 22.2 16.2 27.8s22.3 5.5 32.2-.4L192 421.3 335.5 507.4c9.9 5.9 22.2 6.1 32.2 .4S384 491.5 384 480l0-416c0-35.3-28.7-64-64-64L64 0z\"]\n};\nvar faBarcode = {\n  prefix: 'fas',\n  iconName: 'barcode',\n  icon: [448, 512, [], \"f02a\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 64c0-17.7-14.3-32-32-32zm88 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24s24-10.7 24-24l0-400c0-13.3-10.7-24-24-24zm72 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32zm208-8l0 400c0 13.3 10.7 24 24 24s24-10.7 24-24l0-400c0-13.3-10.7-24-24-24s-24 10.7-24 24zm-96 0l0 400c0 13.3 10.7 24 24 24s24-10.7 24-24l0-400c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faListOl = {\n  prefix: 'fas',\n  iconName: 'list-ol',\n  icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M0 72C0 58.8 10.7 48 24 48l48 0c13.3 0 24 10.7 24 24l0 104 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-80-24 0C10.7 96 0 85.3 0 72zM30.4 301.2C41.8 292.6 55.7 288 70 288l4.9 0c33.7 0 61.1 27.4 61.1 61.1 0 19.6-9.4 37.9-25.2 49.4l-24 17.5 33.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-90.7 0C13.1 464 0 450.9 0 434.7 0 425.3 4.5 416.5 12.1 411l70.5-51.3c3.4-2.5 5.4-6.4 5.4-10.6 0-7.2-5.9-13.1-13.1-13.1L70 336c-3.9 0-7.7 1.3-10.8 3.6L38.4 355.2c-10.6 8-25.6 5.8-33.6-4.8S-1 324.8 9.6 316.8l20.8-15.6zM224 64l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faList12 = faListOl;\nvar faListNumeric = faListOl;\nvar faFileCircleXmark = {\n  prefix: 'fas',\n  iconName: 'file-circle-xmark',\n  icon: [576, 512, [], \"e5a1\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faCube = {\n  prefix: 'fas',\n  iconName: 'cube',\n  icon: [512, 512, [], \"f1b2\", \"M224.3-2.5c19.8-11.4 44.2-11.4 64 0L464.2 99c19.8 11.4 32 32.6 32 55.4l0 203c0 22.9-12.2 44-32 55.4L288.3 514.5c-19.8 11.4-44.2 11.4-64 0L48.5 413c-19.8-11.4-32-32.6-32-55.4l0-203c0-22.9 12.2-44 32-55.4L224.3-2.5zm207.8 360l0-166.1-143.8 83 0 166.1 143.8-83z\"]\n};\nvar faTape = {\n  prefix: 'fas',\n  iconName: 'tape',\n  icon: [576, 512, [], \"f4db\", \"M412.8 416c41.5-40.7 67.2-97.3 67.2-160 0-123.7-100.3-224-224-224S32 132.3 32 256 132.3 480 256 480l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-131.2 0zM256 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm48 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faBomb = {\n  prefix: 'fas',\n  iconName: 'bomb',\n  icon: [576, 512, [128163], \"f1e2\", \"M480-16c6.9 0 13 4.4 15.2 10.9l13.5 40.4 40.4 13.5C555.6 51 560 57.1 560 64s-4.4 13-10.9 15.2l-40.4 13.5-13.5 40.4C493 139.6 486.9 144 480 144s-13-4.4-15.2-10.9l-13.5-40.4-40.4-13.5C404.4 77 400 70.9 400 64s4.4-13 10.9-15.2l40.4-13.5 13.5-40.4C467-11.6 473.1-16 480-16zM321.4 97.4c12.5-12.5 32.8-12.5 45.3 0l80 80c12.5 12.5 12.5 32.8 0 45.3l-10.9 10.9c7.9 22 12.2 45.7 12.2 70.5 0 114.9-93.1 208-208 208S32 418.9 32 304 125.1 96 240 96c24.7 0 48.5 4.3 70.5 12.3l10.9-10.9zM144 304c0-53 43-96 96-96 13.3 0 24-10.7 24-24s-10.7-24-24-24c-79.5 0-144 64.5-144 144 0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faScaleUnbalanced = {\n  prefix: 'fas',\n  iconName: 'scale-unbalanced',\n  icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M519.8 62.4c16.8-5.6 25.8-23.7 20.2-40.5S516.3-3.9 499.6 1.6l-113 37.7c-13.9-23.5-39.6-39.3-68.9-39.3-44.2 0-80 35.8-80 80 0 3 .2 5.9 .5 8.8L115.6 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2l0 326.7c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-294.7c21-9.2 37.2-27 44.2-49l125.9-42zM437.3 288l72.4-124.2 72.4 124.2-144.9 0zm72.4 96c62.9 0 115.2-34 126-78.9 2.6-11-1-22.3-6.7-32.1L533.8 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L390.4 273.1c-5.7 9.8-9.3 21.1-6.7 32.1 10.8 44.8 63.1 78.9 126 78.9zM126.8 291.8l72.4 124.2-144.9 0 72.4-124.2zM.9 433.1C11.7 478 64 512 126.8 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L150.9 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L7.6 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nvar faBalanceScaleLeft = faScaleUnbalanced;\nvar faSquareCaretLeft = {\n  prefix: 'fas',\n  iconName: 'square-caret-left',\n  icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4S288 142.5 288 152l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faRuler = {\n  prefix: 'fas',\n  iconName: 'ruler',\n  icon: [576, 512, [128207], \"f545\", \"M209.1 516.2c-18.7 18.7-49.1 18.7-67.9 0L28.1 403.1c-18.7-18.7-18.7-49.1 0-67.9l17-17 73.5 73.5c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-73.5-73.5 33.9-33.9 50.9 50.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-50.9-50.9 33.9-33.9 73.5 73.5c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-73.5-73.5 33.9-33.9 50.9 50.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-50.9-50.9 33.9-33.9 73.5 73.5c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-73.5-73.5 17-17c18.7-18.7 49.1-18.7 67.9 0L548.5 108.9c18.7 18.7 18.7 49.1 0 67.9L209.1 516.2z\"]\n};\nvar faI = {\n  prefix: 'fas',\n  iconName: 'i',\n  icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l96 0 0 320-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-320 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32z\"]\n};\nvar faVolumeXmark = {\n  prefix: 'fas',\n  iconName: 'volume-xmark',\n  icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M48 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L96 160 48 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48zM367 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faVolumeMute = faVolumeXmark;\nvar faVolumeTimes = faVolumeXmark;\nvar faArchway = {\n  prefix: 'fas',\n  iconName: 'archway',\n  icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0 0-128c0-53 43-96 96-96s96 43 96 96l0 128 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-272-448 0 0 272z\"]\n};\nvar faPersonDigging = {\n  prefix: 'fas',\n  iconName: 'person-digging',\n  icon: [576, 512, [\"digging\"], \"f85e\", \"M208 40a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM10.5 181.3c5.9-11.9 20.3-16.7 32.2-10.7l24.6 12.3 12.2-20.4c18.9-31.5 53.2-50.5 89.6-50.5 46.2 0 87.7 30.5 100.5 75.4l32.2 112.7 92.9 46.4 25.8-43c5.8-9.6 16.2-15.5 27.4-15.5s21.7 5.9 27.4 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2S555.5 512 544 512l-192 0c-11.5 0-22.2-6.2-27.8-16.2s-5.5-22.3 .4-32.2L370 387.8 21.3 213.5c-11.9-5.9-16.7-20.3-10.7-32.2zM94.3 307.4l112 56c10.8 5.4 17.7 16.5 17.7 28.6l0 88c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-68.2-61.3-30.7-36.3 109c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.7 469.9l48-144c2.9-8.8 9.5-15.9 18.1-19.4s18.3-3.2 26.6 .9z\"]\n};\nvar faDigging = faPersonDigging;\nvar faGaugeHigh = {\n  prefix: 'fas',\n  iconName: 'gauge-high',\n  icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64 0-16.2-6-31.1-16-42.3l69.5-138.9c5.9-11.9 1.1-26.3-10.7-32.2s-26.3-1.1-32.2 10.7L261.1 288.2c-1.7-.1-3.4-.2-5.1-.2-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTachometerAlt = faGaugeHigh;\nvar faTachometerAltFast = faGaugeHigh;\nvar faGenderless = {\n  prefix: 'fas',\n  iconName: 'genderless',\n  icon: [384, 512, [], \"f22d\", \"M192 128a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 320a192 192 0 1 0 0-384 192 192 0 1 0 0 384z\"]\n};\nvar faCloudSun = {\n  prefix: 'fas',\n  iconName: 'cloud-sun',\n  icon: [640, 512, [9925], \"f6c4\", \"M208.3 192c43.1 0 80.5 24.4 99.2 60.1 14.7-17.2 36.4-28.1 60.8-28.1 44.2 0 80 35.8 80 80 0 5.5-.6 10.9-1.6 16 .5 0 1.1 0 1.6 0 53 0 96 43 96 96s-43 96-96 96l-320 0c-53 0-96-43-96-96 0-42.5 27.7-78.5 66-91.2-1.3-6.8-2-13.7-2-20.8 0-61.9 50.1-112 112-112zm192-223.8c5.3 0 10.3 2.7 13.3 7.1l47.3 70.4 83.3-16.3c5.2-1 10.6 .7 14.3 4.4 3.8 3.8 5.4 9.2 4.4 14.4l-16.3 83.3 70.4 47.3c4.4 3 7.1 8 7.1 13.3 0 5.3-2.6 10.3-7 13.2l-70.4 47.3 14.5 74.2c-17.2-21.7-40.4-38.4-67.2-47.3-2.5-12.7-6.9-24.6-12.8-35.7 9.6-14.9 15.2-32.7 15.2-51.7 0-53-43-96-96-96-47.9 0-87.6 35.1-94.8 80.9-20.9-16-45.9-27-73.1-31.1l21.5-14.5-16.3-83.2-.3-2c-.3-4.6 1.3-9.1 4.6-12.4 3.8-3.8 9.2-5.4 14.4-4.4l83.3 16.3 47.3-70.4 1.2-1.6c3-3.5 7.4-5.5 12.1-5.5zm0 175.8c26.5 0 48 21.5 48 48 0 3.8-.5 7.6-1.4 11.1-21.7-16.9-48.9-27.1-78.6-27.1-4.6 0-9.1 .2-13.5 .7 6.4-19 24.3-32.7 45.5-32.7z\"]\n};\nvar faArrowRight = {\n  prefix: 'fas',\n  iconName: 'arrow-right',\n  icon: [512, 512, [8594], \"f061\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-105.4 105.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nvar faHandshake = {\n  prefix: 'fas',\n  iconName: 'handshake',\n  icon: [576, 512, [129309, 62662, \"handshake-alt\", \"handshake-simple\"], \"f2b5\", \"M268.9 85.2L152.3 214.8c-4.6 5.1-4.4 13 .5 17.9 30.5 30.5 80 30.5 110.5 0l31.8-31.8c4.2-4.2 9.5-6.5 14.9-6.9 6.8-.6 13.8 1.7 19 6.9L505.6 376 576 320 576 32 464 96 440.2 80.1C424.4 69.6 405.9 64 386.9 64l-70.4 0c-1.1 0-2.3 0-3.4 .1-16.9 .9-32.8 8.5-44.2 21.1zM116.6 182.7L223.4 64 183.8 64c-25.5 0-49.9 10.1-67.9 28.1L112 96 0 32 0 320 156.4 450.3c23 19.2 52 29.7 81.9 29.7l15.7 0-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l41 41 9 0c19.1 0 37.8-4.3 54.8-12.3L359 441c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l32 32 17.5-17.5c8.9-8.9 11.5-21.8 7.6-33.1l-137.9-136.8-14.9 14.9c-49.3 49.3-129.1 49.3-178.4 0-23-23-23.9-59.9-2.2-84z\"]\n};\nvar faHandshakeAlt = faHandshake;\nvar faHandshakeSimple = faHandshake;\nvar faPersonSkiing = {\n  prefix: 'fas',\n  iconName: 'person-skiing',\n  icon: [576, 512, [9975, \"skiing\"], \"f7c9\", \"M416 56a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM2.7 300.9c6.1-11.8 20.6-16.3 32.4-10.2l197.8 102.7 62.3-87.2-82-92.2c-11-12.4-16.2-27.5-16.2-42.4l111.6 53.4 42.9 48.2c14.9 16.7 16.2 41.6 3.2 59.8l-64.4 90.2 128.3 66.6c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 333.3C1.2 327.2-3.4 312.7 2.7 300.9zM103 49.6l18 8.7 8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 17 84.8 41 .4-.2 76.1-33.8c31.3-13.9 67.9-.7 83.2 29.9l28.9 57.8 68.7 27.5c16.4 6.6 24.4 25.2 17.8 41.6s-25.2 24.4-41.6 17.8L393.8 224c-10.9-4.4-19.8-12.6-25.1-23.1l-11.5-23.1c-16.4 9.4-25.9 14.8-28.5 16.3l-7.6-3.7-185.6-89.6-9.2 18.3c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-17.9-17.6-8.5C81.1 74.6 77.8 65 81.6 57S95 45.7 103 49.6z\"]\n};\nvar faSkiing = faPersonSkiing;\nvar faBridgeWater = {\n  prefix: 'fas',\n  iconName: 'bridge-water',\n  icon: [640, 512, [], \"e4ce\", \"M64 64l512 0 0 112c-37.6 9.4-64 43.2-64 82l0 76.4c-21-9.7-43.5-14.5-66-14.4-10 .1-20.1 1.1-30 3.1l0-35.1c0-53-43-96-96-96s-96 43-96 96l0 32.7c-5.3-.5-10.7-.8-16-.7-27.7 .2-55.4 7.8-80 23l0-85c0-38.8-26.4-72.6-64-82L64 64zM403.4 444.1C379.1 462.3 351.1 480 320 480s-59.1-17.7-83.4-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.5-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0z\"]\n};\nvar faBuildingNgo = {\n  prefix: 'fas',\n  iconName: 'building-ngo',\n  icon: [576, 512, [], \"e4d7\", \"M128 0C92.7 0 64 28.7 64 64l0 384c0 35.3 28.7 64 64 64l48 0 0-112c0-35.3 28.7-64 64-64l208 0 0-272c0-35.3-28.7-64-64-64L128 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM304 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM160 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm144-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM520 380c-24.3 0-44 19.7-44 44l0 80c0 24.3 19.7 44 44 44l16 0c24.3 0 44-19.7 44-44l0-80c0-24.3-19.7-44-44-44l-16 0zm-4 44c0-2.2 1.8-4 4-4l16 0c2.2 0 4 1.8 4 4l0 80c0 2.2-1.8 4-4 4l-16 0c-2.2 0-4-1.8-4-4l0-80zm-168 0l0 80c0 24.3 19.7 44 44 44l16 0c24.3 0 44-19.7 44-44l0-24c0-11-9-20-20-20l-8 0c-11 0-20 9-20 20 0 6.5 3.1 12.4 8 16l0 8c0 2.2-1.8 4-4 4l-16 0c-2.2 0-4-1.8-4-4l0-80c0-2.2 1.8-4 4-4l20.4 0c1.9 9.1 9.9 16 19.6 16 11 0 20-9 20-20 0-19.9-16.1-36-36-36l-24 0c-24.3 0-44 19.7-44 44zm-90.1-32.9c-4.1-8.3-13.5-12.7-22.5-10.5S220 390.7 220 400l0 128c0 11 9 20 20 20s20-9 20-20l0-43.3 26.1 52.2c4.1 8.3 13.5 12.7 22.5 10.5S324 537.3 324 528l0-128c0-11-9-20-20-20s-20 9-20 20l0 43.3-26.1-52.2z\"]\n};\nvar faIgloo = {\n  prefix: 'fas',\n  iconName: 'igloo',\n  icon: [576, 512, [], \"f7ae\", \"M320 33.8l0 126.2-271.5 0c51.7-77.2 139.6-128 239.5-128 10.8 0 21.5 .6 32 1.8zM368 160l0-116.7c66 19 122.2 61 159.5 116.7L368 160zM22.6 208l73.4 0 0 112-96 0c0-39.7 8-77.6 22.6-112zM176 320l-32 0 0-112 288 0 0 112-32 0 0 48 176 0 0 64c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-64 176 0 0-48zm304 0l0-112 73.4 0C568 242.4 576 280.3 576 320l-96 0zM288 288c-35.3 0-64 28.7-64 64l0 80 128 0 0-80c0-35.3-28.7-64-64-64z\"]\n};\nvar faCircleDollarToSlot = {\n  prefix: 'fas',\n  iconName: 'circle-dollar-to-slot',\n  icon: [576, 512, [\"donate\"], \"f4b9\", \"M96 224a192 192 0 1 1 384 0 192 192 0 1 1 -384 0zm176-92l0 4c-28.8 .3-52 23.7-52 52.5 0 25.7 18.5 47.6 43.9 51.8l41.7 7c6 1 10.4 6.2 10.4 12.3 0 6.9-5.6 12.5-12.5 12.5L248 272c-11 0-20 9-20 20s9 20 20 20l24 0 0 4c0 11 9 20 20 20s20-9 20-20l0-4.7c25-4.1 44-25.7 44-51.8 0-25.7-18.5-47.6-43.9-51.8l-41.7-7c-6-1-10.4-6.2-10.4-12.3 0-6.9 5.6-12.5 12.5-12.5l47.5 0c11 0 20-9 20-20s-9-20-20-20l-8 0 0-4c0-11-9-20-20-20s-20 9-20 20zM48 344l0 104c0 8.8 7.2 16 16 16l448 0c8.8 0 16-7.2 16-16l0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 344c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faDonate = faCircleDollarToSlot;\nvar faY = {\n  prefix: 'fas',\n  iconName: 'y',\n  icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-149.7 154-215.7c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nvar faFaceSmileWink = {\n  prefix: 'fas',\n  iconName: 'face-smile-wink',\n  icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM165.4 321.9c20.4 28 53.4 46.1 90.6 46.1s70.2-18.1 90.6-46.1c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5C356.3 390 309.2 416 256 416s-100.3-26-129.4-65.9c-7.8-10.7-5.4-25.7 5.3-33.5s25.7-5.4 33.5 5.3zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm164 8c0 11-9 20-20 20s-20-9-20-20c0-33.1 26.9-60 60-60l16 0c33.1 0 60 26.9 60 60 0 11-9 20-20 20s-20-9-20-20-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faDiceFour = {\n  prefix: 'fas',\n  iconName: 'dice-four',\n  icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFaceGrinSquintTears = {\n  prefix: 'fas',\n  iconName: 'face-grin-squint-tears',\n  icon: [576, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M560 35.4c0 25.6-18.8 47.3-44.1 50.9L469.1 93c-10.6 1.5-19.6-7.5-18.1-18.1l6.7-46.7C461.3 2.8 483-16 508.6-16 537-16 560 7 560 35.4zM403.5 68.1c-6 42.2 30.2 78.4 72.4 72.4l37.8-5.4C565.7 232 550.8 355.3 469 437s-205 96.6-301.9 44.7l5.4-37.8c6-42.2-30.2-78.4-72.4-72.4l-37.8 5.4C10.3 280 25.2 156.7 107 75S312-21.7 408.9 30.3l-5.4 37.8zM417.8 201c-19.1 36.4-45.6 72.7-78.9 106s-69.6 59.8-106 78.9c-11.1 5.8-12.4 21.4-1.1 26.6 59.2 27.5 131.8 16.8 180.6-32s59.5-121.4 32-180.6c-5.3-11.3-20.8-10-26.6 1.1zM113.9 270.6c1.7 8 9 13.4 17.1 12.7l43.1-3.9-3.9 43.1c-.7 8.1 4.7 15.5 12.7 17.1s15.9-2.9 18.4-10.6l28-84.6c1.9-5.7 .4-12.1-3.9-16.3s-10.6-5.8-16.3-3.9l-84.6 28c-7.7 2.6-12.3 10.5-10.6 18.5zM315.2 99.1c.7-8.1-4.7-15.5-12.7-17.1s-15.9 2.9-18.5 10.6l-28 84.6c-1.9 5.7-.4 12.1 3.9 16.3s10.6 5.8 16.3 3.9l84.6-28c7.7-2.6 12.3-10.5 10.6-18.4s-9-13.4-17.1-12.7l-43.1 3.9 3.9-43.1zM60.1 425.7l46.7-6.7c10.6-1.5 19.6 7.5 18.1 18.1l-6.7 46.7C114.7 509.2 93 528 67.4 528 39 528 16 505 16 476.6 16 451 34.8 429.3 60.1 425.7z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faFileAudio = {\n  prefix: 'fas',\n  iconName: 'file-audio',\n  icon: [384, 512, [], \"f1c7\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zm53.8 185.2c-9.1-6.3-21.5-4.1-27.8 5s-4.1 21.5 5 27.8c23.9 16.7 39.4 44.3 39.4 75.5s-15.6 58.9-39.4 75.5c-9.1 6.3-11.3 18.8-5 27.8s18.8 11.3 27.8 5c34.1-23.8 56.6-63.5 56.6-108.3S296 267.5 261.8 243.7zM80 312c-8.8 0-16 7.2-16 16l0 48c0 8.8 7.2 16 16 16l24 0 27.2 34c3 3.8 7.6 6 12.5 6l.3 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16l-.3 0c-4.9 0-9.5 2.2-12.5 6l-27.2 34-24 0zm128 72.2c0 10.7 10.5 18.2 18.9 11.6 12.9-10.3 21.1-26.1 21.1-43.8s-8.2-33.5-21.1-43.8c-8.4-6.7-18.9 .9-18.9 11.6l0 64.5z\"]\n};\nvar faArrowsDownToLine = {\n  prefix: 'fas',\n  iconName: 'arrows-down-to-line',\n  icon: [512, 512, [], \"e4b8\", \"M214.6 310.6l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 274.7 96 32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 242.7 9.4-9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm256 0l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l9.4 9.4 0-242.7c0-17.7 14.3-32 32-32s32 14.3 32 32l0 242.7 9.4-9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512z\"]\n};\nvar faG = {\n  prefix: 'fas',\n  iconName: 'g',\n  icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128L256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l144 0c25.8 0 49.6 21.4 47.2 50.6-9.5 115-105.8 205.4-223.2 205.4-123.7 0-224-100.3-224-224S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57 13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nvar faVihara = {\n  prefix: 'fas',\n  iconName: 'vihara',\n  icon: [576, 512, [], \"f6a7\", \"M273.6-3.2c8.5-6.4 20.3-6.4 28.8 0L443.2 102.4c8.3 6.2 18.4 9.6 28.8 9.6 13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 48 58.7 64 13.3 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 48 24.4 32 15.6 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-128 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-128 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-40 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l22.1 0 17.9-32 0-48-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l13.3 0 58.7-64 0-48-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24c10.4 0 20.5-3.4 28.8-9.6L273.6-3.2zM128 368l320 0 0-48-320 0 0 48zM384 160l-192 0 0 48 192 0 0-48z\"]\n};\nvar faFlagCheckered = {\n  prefix: 'fas',\n  iconName: 'flag-checkered',\n  icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5 46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 279.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4-37.9-19-81.4-23.7-122.5-13.4L64 384 64 480c0 17.7-14.3 32-32 32S0 497.7 0 480L0 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9 0 65.5-64 13.9 0 65.5 48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3l0-63.9 38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9 0 66.7-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8l0 71.4c21.8 1.9 43.3 6.7 64 14.4l0-69.8 22.7 6.7c13.5 4 27.3 6.4 41.3 7.4l0-64.2c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12 0-62c-13-3.8-25.8-8.8-38.2-15-8.2-4.1-16.9-7-25.8-8.8l0 72.4c-13-.4-26 .8-38.7 3.6l-25.3 5.5 0-75.2-64 16 0 73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2 0-71.7-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5l0 77.4zm64-149.4l0-70.8c-20.9 6.1-42.4 9.1-64 9.1l0 69.4c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nvar faGaugeSimple = {\n  prefix: 'fas',\n  iconName: 'gauge-simple',\n  icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm320 96c0-26.9-16.5-49.9-40-59.3L280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 172.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGaugeSimpleMed = faGaugeSimple;\nvar faTachometerAverage = faGaugeSimple;\nvar faRightLeft = {\n  prefix: 'fas',\n  iconName: 'right-left',\n  icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M502.6 150.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9S352 236.9 352 224l0-64-320 0c-17.7 0-32-14.3-32-32S14.3 96 32 96l320 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c12.5 12.5 12.5 32.8 0 45.3zm-397.3 352l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c9.2-9.2 22.9-11.9 34.9-6.9S160 275.1 160 288l0 64 320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9z\"]\n};\nvar faExchangeAlt = faRightLeft;\nvar faPills = {\n  prefix: 'fas',\n  iconName: 'pills',\n  icon: [512, 512, [], \"f484\", \"M64 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112-96 0 0-112zM176 368c0-48.7 18.1-93.2 48-127l0-129C224 50.1 173.9 0 112 0S0 50.1 0 112L0 400c0 61.9 50.1 112 112 112 37.3 0 70.3-18.2 90.7-46.3-17-28.6-26.7-62-26.7-97.7zm64.7 67.4c4.6 8.7 16.3 9.7 23.3 2.7L438.1 264c7-7 6-18.7-2.7-23.3-20.1-10.7-43-16.7-67.4-16.7-79.5 0-144 64.5-144 144 0 24.3 6 47.3 16.7 67.4zM297.9 472c-7 7-6 18.7 2.7 23.3 20.1 10.7 43 16.7 67.4 16.7 79.5 0 144-64.5 144-144 0-24.3-6-47.3-16.7-67.4-4.6-8.7-16.3-9.7-23.3-2.7L297.9 472z\"]\n};\nvar faExplosion = {\n  prefix: 'fas',\n  iconName: 'explosion',\n  icon: [512, 512, [], \"e4e9\", \"M256-32c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24zm0 160c12.4 0 22.7 9.4 23.9 21.7L293.4 291.6 467.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L372.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87-71.4 0c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64l-79.6 0-75.5-52.3C.6 357-2.8 344.1 2.4 333.5s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.6 9.4-11.3L75.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L214 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7zM32 464l456 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0z\"]\n};\nvar faArrowsDownToPeople = {\n  prefix: 'fas',\n  iconName: 'arrows-down-to-people',\n  icon: [512, 512, [], \"e4b9\", \"M113 153c-9.4 9.4-24.6 9.4-33.9 0L15 89C5.7 79.6 5.7 64.4 15 55S39.6 45.7 49 55L72 78.1 72-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 86.1 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64zm320 0c-9.4 9.4-24.6 9.4-33.9 0L335 89c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23 0-86.1c0-13.3 10.7-24 24-24s24 10.7 24 24l0 86.1 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64zM256 192a56 56 0 1 1 0 112 56 56 0 1 1 0-112zm0 160c53 0 96 43 96 96l0 32c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-32c0-53 43-96 96-96zM32 288a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm352 0a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM80 368c15.3 0 29.6 4.3 41.8 11.8-6.3 16.2-9.8 33.8-9.8 52.2l0 48c0 11.4 2.4 22.2 6.7 32l-87.8 0C13.8 512 0 498.2 0 481.1L0 448c0-44.2 35.8-80 80-80zM393.3 512c4.3-9.8 6.7-20.6 6.7-32l0-48c0-18.4-3.5-36-9.8-52.2 12.2-7.5 26.5-11.8 41.8-11.8 44.2 0 80 35.8 80 80l0 33.1c0 17-13.8 30.9-30.9 30.9l-87.8 0z\"]\n};\nvar faUsersViewfinder = {\n  prefix: 'fas',\n  iconName: 'users-viewfinder',\n  icon: [576, 512, [], \"e595\", \"M64 0C28.7 0 0 28.7 0 64l0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72c0-8.8 7.2-16 16-16l72 0c13.3 0 24-10.7 24-24S149.3 0 136 0L64 0zM440 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0c8.8 0 16 7.2 16 16l0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72c0-35.3-28.7-64-64-64L440 0zM48 376c0-13.3-10.7-24-24-24S0 362.7 0 376l0 72c0 35.3 28.7 64 64 64l72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0c-8.8 0-16-7.2-16-16l0-72zm528 0c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72c0 8.8-7.2 16-16 16l-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0c35.3 0 64-28.7 64-64l0-72zM288 216a56 56 0 1 0 0-112 56 56 0 1 0 0 112zm0 40c-53 0-96 43-96 96l0 24c0 13.3 10.7 24 24 24l144 0c13.3 0 24-10.7 24-24l0-24c0-53-43-96-96-96zm192-64a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM168 272.3c-49.3 4.1-88 45.3-88 95.7l0 10.7c0 11.8 9.6 21.3 21.3 21.3l46.8 0c-2.7-7.5-4.1-15.6-4.1-24l0-24c0-29.5 8.8-56.9 24-79.7zM427.9 400l46.8 0c11.8 0 21.3-9.6 21.3-21.3l0-10.7c0-50.3-38.7-91.6-88-95.7 15.2 22.8 24 50.2 24 79.7l0 24c0 8.4-1.4 16.5-4.1 24zM192 192a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faCarOn = {\n  prefix: 'fas',\n  iconName: 'car-on',\n  icon: [448, 512, [], \"e4dd\", \"M248-8c0-13.3-10.7-24-24-24S200-21.3 200-8l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64zM145.3 208l157.5 0c6.7 0 12.6 4.1 15 10.4l26.1 69.6-239.6 0 26.1-69.6c2.3-6.2 8.3-10.4 15-10.4zM34 292.8l-1.3 3.4C13.2 307.1 0 328 0 352L0 480c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 288 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-128c0-24-13.2-44.9-32.8-55.9l-1.3-3.4-36.3-96.9c-11.7-31.2-41.6-51.9-74.9-51.9l-157.5 0c-33.3 0-63.2 20.7-74.9 51.9L34 292.8zM96 336a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm224 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM7 7C-2.3 16.4-2.3 31.6 7 41L55 89c9.4 9.4 24.6 9.4 33.9 0S98.3 64.4 89 55L41 7C31.6-2.3 16.4-2.3 7 7zM407 7L359 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9S416.4-2.3 407 7z\"]\n};\nvar faSleigh = {\n  prefix: 'fas',\n  iconName: 'sleigh',\n  icon: [640, 512, [], \"f7cc\", \"M64 32C46.3 32 32 46.3 32 64S46.3 96 64 96l0 160c0 41.8 26.7 77.4 64 90.5l0 69.5-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l504 0c44.2 0 80-35.8 80-80l0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8c0 17.7-14.3 32-32 32l-80 0 0-64c53 0 96-43 96-96l0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 32c0 35.3-28.7 64-64 64l-48.9 0c-48.5 0-92.8-27.4-114.5-70.8l-25.2-50.5C237.7 59.4 193.4 32 144.9 32L64 32zM432 416l-256 0 0-64 256 0 0 64z\"]\n};\nvar faDumbbell = {\n  prefix: 'fas',\n  iconName: 'dumbbell',\n  icon: [640, 512, [], \"f44b\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112 256 0 0-112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 16 16 0c26.5 0 48 21.5 48 48l0 48c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48c0 26.5-21.5 48-48 48l-16 0 0 16c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-112-256 0 0 112c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-16-16 0c-26.5 0-48-21.5-48-48l0-48c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-48c0-26.5 21.5-48 48-48l16 0 0-16z\"]\n};\nvar faBabyCarriage = {\n  prefix: 'fas',\n  iconName: 'baby-carriage',\n  icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M64 208l0 80c0 53 43 96 96 96l192 0c53 0 96-43 96-96l0-112 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0c-13.3 0-24 10.7-24 24l0 56-336 0zm.2-48l223.8 0 0-128c0-17.7-14.3-32-32-32L232 0C141.9 0 68.4 70.9 64.2 160zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm288 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faCarriageBaby = faBabyCarriage;\nvar faKiwiBird = {\n  prefix: 'fas',\n  iconName: 'kiwi-bird',\n  icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4l55.7 0c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1S576 471 576 464l0-240c0-70.7-57.3-128-128-128l-55.7 0C355.9 96 322.4 78.4 291.2 59.6 262.3 42.1 228.3 32 192 32 86 32 0 118 0 224 0 295.1 38.6 357.1 96 390.3L96 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-46c15.3 3.9 31.4 6 48 6 5.4 0 10.7-.2 16-.7l0 40.7c0 13.3 10.7 24 24 24s24-10.7 24-24l0-50.9c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faCalendarXmark = {\n  prefix: 'fas',\n  iconName: 'calendar-xmark',\n  icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zM291.9 220.1c-9.4-9.4-24.6-9.4-33.9 0l-33.9 33.9-33.9-33.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l33.9 33.9-33.9 33.9c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l33.9-33.9 33.9 33.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-33.9-33.9 33.9-33.9c9.4-9.4 9.4-24.6 0-33.9z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faCircleDown = {\n  prefix: 'fas',\n  iconName: 'circle-down',\n  icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512 256 256 0 1 0 0-512zM244.7 387.3l-104-104c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l56 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 56 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-104 104c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faFileMedical = {\n  prefix: 'fas',\n  iconName: 'file-medical',\n  icon: [384, 512, [], \"f477\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM160 280l0 40-40 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l40 0 0 40c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-40 40 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-40 0 0-40c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nvar faXmark = {\n  prefix: 'fas',\n  iconName: 'xmark',\n  icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M55.1 73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L147.2 256 9.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192.5 301.3 329.9 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.8 256 375.1 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192.5 210.7 55.1 73.4z\"]\n};\nvar faClose = faXmark;\nvar faMultiply = faXmark;\nvar faRemove = faXmark;\nvar faTimes = faXmark;\nvar faShapes = {\n  prefix: 'fas',\n  iconName: 'shapes',\n  icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M256 0c11.2 0 21.7 5.9 27.4 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2S363.5 224 352 224l-192 0c-11.5 0-22.2-6.2-27.8-16.2s-5.5-22.3 .4-32.2l96-160C234.3 5.9 244.8 0 256 0zM128 272a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm200 16l112 0c22.1 0 40 17.9 40 40l0 112c0 22.1-17.9 40-40 40l-112 0c-22.1 0-40-17.9-40-40l0-112c0-22.1 17.9-40 40-40z\"]\n};\nvar faTriangleCircleSquare = faShapes;\nvar faDiceOne = {\n  prefix: 'fas',\n  iconName: 'dice-one',\n  icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLockOpen = {\n  prefix: 'fas',\n  iconName: 'lock-open',\n  icon: [576, 512, [], \"f3c1\", \"M384 96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32c0-70.7-57.3-128-128-128S320 25.3 320 96l0 64-160 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64l-32 0 0-64z\"]\n};\nvar faPepperHot = {\n  prefix: 'fas',\n  iconName: 'pepper-hot',\n  icon: [576, 512, [127798], \"f816\", \"M545 65c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L478.9 63.2C452.3 43.6 419.5 32 384 32 348.9 32 316.5 43.3 290.1 62.4 274.1 74.1 284.2 96 304 96l24 0c13.3 0 24 10.7 24 24l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24 10.7 24 24l0 24c0 19.8 21.9 29.9 33.6 13.9 19.1-26.4 30.4-58.8 30.4-93.9 0-35.5-11.6-68.3-31.2-94.9L545 65zM270 135.5l-159.6 228C101.3 376.4 86.7 384 71 384l-7 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l27.1 0c65.7 0 129.7-20.2 183.5-57.8L440.5 306.1C435 295.9 432 284.2 432 272l-56 0c-39.8 0-72-32.2-72-72l0-56c-12.2 0-23.9-3-34-8.5z\"]\n};\nvar faDropletSlash = {\n  prefix: 'fas',\n  iconName: 'droplet-slash',\n  icon: [576, 512, [\"tint-slash\"], \"f5c7\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L463.6 397.8c10.5-23.8 16.4-50.1 16.4-77.8 0-91.2-130.2-274.1-166.6-323.5-5.9-8-15.2-12.5-25.2-12.5l-.4 0c-10 0-19.3 4.5-25.2 12.5-15.6 21.2-48.5 66.9-80.9 119.4L41-24.9zm92 227.7c-21.6 43.8-37 85.9-37 117.2 0 106 86 192 192 192 43.4 0 83.4-14.4 115.5-38.6L133 202.8z\"]\n};\nvar faTintSlash = faDropletSlash;\nvar faDroplet = {\n  prefix: 'fas',\n  iconName: 'droplet',\n  icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320 0 228.8 130.2 45.9 166.6-3.5 172.5-11.5 181.8-16 191.8-16l.4 0c10 0 19.3 4.5 25.2 12.5 36.4 49.4 166.6 232.3 166.6 323.5 0 106-86 192-192 192zM112 312c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 75.1 60.9 136 136 136 13.3 0 24-10.7 24-24s-10.7-24-24-24c-48.6 0-88-39.4-88-88z\"]\n};\nvar faTint = faDroplet;\nvar faFileLines = {\n  prefix: 'fas',\n  iconName: 'file-lines',\n  icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM120 256c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faCommentsDollar = {\n  prefix: 'fas',\n  iconName: 'comments-dollar',\n  icon: [576, 512, [], \"f653\", \"M192 320c106 0 192-78.8 192-176S298-32 192-32 0 46.8 0 144c0 39.6 14.3 76.2 38.4 105.6L2.8 316.8C-2.1 326.1-.4 337.5 7 345s18.9 9.2 28.2 4.2L116.8 306c23.1 9 48.5 14 75.2 14zm3.2 48c16.4 81.9 94.7 144 188.8 144 26.7 0 52.1-5 75.2-14l81.6 43.2c9.3 4.9 20.7 3.2 28.2-4.2s9.2-18.9 4.2-28.2l-35.6-67.2c24.1-29.4 38.4-66 38.4-105.6 0-82.4-61.7-151.5-145-170.7-11.5 115.8-115.8 201.2-235.8 202.7zM196 32c11 0 20 9 20 20l0 4 8 0c11 0 20 9 20 20s-9 20-20 20l-47.5 0c-6.9 0-12.5 5.6-12.5 12.5 0 6.1 4.4 11.3 10.4 12.3l41.7 7c25.3 4.2 43.9 26.1 43.9 51.8 0 26.1-19 47.7-44 51.8l0 4.7c0 11-9 20-20 20s-20-9-20-20l0-4-24 0c-11 0-20-9-20-20s9-20 20-20l55.5 0c6.9 0 12.5-5.6 12.5-12.5 0-6.1-4.4-11.3-10.4-12.3l-41.7-7c-25.3-4.2-43.9-26.1-43.9-51.8 0-28.8 23.2-52.2 52-52.5l0-4c0-11 9-20 20-20z\"]\n};\nvar faMagnifyingGlassLocation = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-location',\n  icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6 6 7.3 16.8 7.3 22.7 0 22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSearchLocation = faMagnifyingGlassLocation;\nvar faFileInvoice = {\n  prefix: 'fas',\n  iconName: 'file-invoice',\n  icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-277.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176zM64 384l0-64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 416c-17.7 0-32-14.3-32-32zM88 64l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24S74.7 64 88 64zm0 96l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faPentagon = {\n  prefix: 'fas',\n  iconName: 'pentagon',\n  icon: [576, 512, [], \"e790\", \"M316.4-3.1c-16.8-12.2-39.6-12.2-56.4 0L35.3 160.2c-16.8 12.2-23.9 33.9-17.4 53.7l85.8 264.1c6.4 19.8 24.9 33.2 45.7 33.2l277.7 0c20.8 0 39.2-13.4 45.7-33.2l85.8-264.1c6.4-19.8-.6-41.4-17.4-53.7L316.4-3.1z\"]\n};\nvar faRepublican = {\n  prefix: 'fas',\n  iconName: 'republican',\n  icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32l224 0c88.4 0 160 71.6 160 160l0 64-544 0 0-64zm152-32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm232 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM280 160a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 288l416 0 0 112c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-48-32 0 0 96c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64-192 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-160 128 0z\"]\n};\nvar faShop = {\n  prefix: 'fas',\n  iconName: 'shop',\n  icon: [576, 512, [\"store-alt\"], \"f54f\", \"M21.5 181.1L78.3 67.4C89.2 45.7 111.3 32 135.6 32l304.9 0c24.2 0 46.4 13.7 57.2 35.4l56.8 113.7c3.6 7.2 5.5 15.1 5.5 23.2 0 27.3-21.2 49.7-48 51.6L512 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192-96 0 0 176c0 26.5-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48l0-176.1c-26.8-1.9-48-24.3-48-51.6 0-8 1.9-16 5.5-23.2zM128 256l0 112c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-112-160 0z\"]\n};\nvar faStoreAlt = faShop;\nvar faFilm = {\n  prefix: 'fas',\n  iconName: 'film',\n  icon: [448, 512, [127902, 62368, \"film-alt\", \"film-simple\"], \"f008\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM48 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm304-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 240l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm304-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L64 96c-8.8 0-16 7.2-16 16zM352 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0z\"]\n};\nvar faFilmAlt = faFilm;\nvar faFilmSimple = faFilm;\nvar faBuildingCircleXmark = {\n  prefix: 'fas',\n  iconName: 'building-circle-xmark',\n  icon: [576, 512, [], \"e4d4\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-10.5-14.6-19-30.7-25.1-48l-74.9 0 0-80c0-17.7 14.3-32 32-32l32 0c2 0 4 .2 5.9 .5 6-23.6 16.3-45.4 30.1-64.5l-4 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 4c27.5-19.8 60.3-32.4 96-35.4L416 64c0-35.3-28.7-64-64-64L96 0zm32 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L454.6 400z\"]\n};\nvar faComments = {\n  prefix: 'fas',\n  iconName: 'comments',\n  icon: [576, 512, [128490, 61670], \"f086\", \"M384 144c0 97.2-86 176-192 176-26.7 0-52.1-5-75.2-14L35.2 349.2c-9.3 4.9-20.7 3.2-28.2-4.2s-9.2-18.9-4.2-28.2l35.6-67.2C14.3 220.2 0 183.6 0 144 0 46.8 86-32 192-32S384 46.8 384 144zm0 368c-94.1 0-172.4-62.1-188.8-144 120-1.5 224.3-86.9 235.8-202.7 83.3 19.2 145 88.3 145 170.7 0 39.6-14.3 76.2-38.4 105.6l35.6 67.2c4.9 9.3 3.2 20.7-4.2 28.2s-18.9 9.2-28.2 4.2L459.2 498c-23.1 9-48.5 14-75.2 14z\"]\n};\nvar faTags = {\n  prefix: 'fas',\n  iconName: 'tags',\n  icon: [576, 512, [], \"f02c\", \"M401.2 39.1L549.4 189.4c27.7 28.1 27.7 73.1 0 101.2L393 448.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L515.3 256.8c9.2-9.3 9.2-24.4 0-33.7L367 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM32.1 229.5L32.1 96c0-35.3 28.7-64 64-64l133.5 0c17 0 33.3 6.7 45.3 18.7l144 144c25 25 25 65.5 0 90.5L285.4 418.7c-25 25-65.5 25-90.5 0l-144-144c-12-12-18.7-28.3-18.7-45.3zm144-85.5a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faGun = {\n  prefix: 'fas',\n  iconName: 'gun',\n  icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8-448 0C14.3 64 0 78.3 0 96L0 208c0 17.7 14.3 32 32 32l10 0c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480l96 0c14.7 0 27.5-10 31-24.2L217 352 321.4 352c23.7 0 44.8-14.9 52.7-37.2l26.7-74.8 31.1 0c8.5 0 16.6-3.4 22.6-9.4l22.6-22.6 66.7 0c17.7 0 32-14.3 32-32l0-80c0-17.7-14.3-32-32-32l-16 0 0-8zM321.4 304l-92.5 0 16-64 105 0-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128l384 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faCircleCheck = {\n  prefix: 'fas',\n  iconName: 'circle-check',\n  icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512a256 256 0 1 1 0-512 256 256 0 1 1 0 512zM374 145.7c-10.7-7.8-25.7-5.4-33.5 5.3L221.1 315.2 169 263.1c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c5 5 11.8 7.5 18.8 7s13.4-4.1 17.5-9.8L379.3 179.2c7.8-10.7 5.4-25.7-5.3-33.5z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faScorpio = {\n  prefix: 'fas',\n  iconName: 'scorpio',\n  icon: [640, 512, [], \"e84e\", \"M368 32c61.9 0 112 50.1 112 112l0 289.7c0 7.9 6.4 14.3 14.3 14.3 3.9 0 7.6-1.6 10.2-4.3l40.1-41.1-9.7-9.7c-6.9-6.9-8.9-17.2-5.2-26.2S542.3 352 552 352l64 0 2.5 .1c12.1 1.2 21.5 11.5 21.5 23.9l0 64-.3 3.6c-1.2 8.2-6.7 15.3-14.5 18.6-9 3.7-19.3 1.6-26.2-5.2l-9.1-9.1-39.6 40.6c-14.7 15.1-34.9 23.6-56 23.6-43.3 0-78.3-35.1-78.3-78.3L416 144c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 304c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-304c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 304c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-320c0-16.6-12.6-30.2-28.7-31.8l-6.6-.3C44.6 94.2 32 80.6 32 64 32 46.3 46.3 32 64 32 91 32 115.3 43.1 132.7 61 152.6 43 179 32 208 32 239.3 32 267.7 44.9 288 65.7 308.3 44.9 336.6 32 368 32z\"]\n};\nvar faIdCardClip = {\n  prefix: 'fas',\n  iconName: 'id-card-clip',\n  icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256-32l64 0c17.7 0 32 14.3 32 32l0 64-128 0 0-64c0-17.7 14.3-32 32-32zM64 32l112 0 0 32c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-32 112 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32zM176 400c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16 0-44.2-35.8-80-80-80l-64 0c-44.2 0-80 35.8-80 80zM288 280a56 56 0 1 0 0-112 56 56 0 1 0 0 112z\"]\n};\nvar faIdCardAlt = faIdCardClip;\nvar faMoon = {\n  prefix: 'fas',\n  iconName: 'moon',\n  icon: [512, 512, [127769, 9214], \"f186\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c68.8 0 131.3-27.2 177.3-71.4 7.3-7 9.4-17.9 5.3-27.1s-13.7-14.9-23.8-14.1c-4.9 .4-9.8 .6-14.8 .6-101.6 0-184-82.4-184-184 0-72.1 41.5-134.6 102.1-164.8 9.1-4.5 14.3-14.3 13.1-24.4S322.6 8.5 312.7 6.3C294.4 2.2 275.4 0 256 0z\"]\n};\nvar faOilWell = {\n  prefix: 'fas',\n  iconName: 'oil-well',\n  icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4-108.2 28.1-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39-132.2 34.3 0-38.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 264-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-137.3 0-61.4-175.4-62.2 16.1 22.1 63.2-66.6 0 19.9-56.9-74.6 19.3-46.7 133.5-41.3 0 0-159.2 337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l16.8-48 100.2 0 16.8 48-133.8 0z\"]\n};\nvar faTachographDigital = {\n  prefix: 'fas',\n  iconName: 'tachograph-digital',\n  icon: [576, 512, [\"digital-tachograph\"], \"f566\", \"M0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 32c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM88 352c-13.3 0-24 10.7-24 24s10.7 24 24 24l136 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 352zm256 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0zM496 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM88 312a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm104-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faDigitalTachograph = faTachographDigital;\nvar faTablet = {\n  prefix: 'fas',\n  iconName: 'tablet',\n  icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM184 400l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faTabletAndroid = faTablet;\nvar faRubleSign = {\n  prefix: 'fas',\n  iconName: 'ruble-sign',\n  icon: [448, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M112 32C94.3 32 80 46.3 80 64l0 208-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 48-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 152 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-152 0 0-48 112 0c79.5 0 144-64.5 144-144S335.5 32 256 32L112 32zM256 256l-112 0 0-160 112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faRouble = faRubleSign;\nvar faRub = faRubleSign;\nvar faRuble = faRubleSign;\nvar faClosedCaptioning = {\n  prefix: 'fas',\n  iconName: 'closed-captioning',\n  icon: [512, 512, [], \"f20a\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm152 80l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80c0-4.4 3.6-8 8-8zm168 8c0-4.4 3.6-8 8-8l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80z\"]\n};\nvar faPen = {\n  prefix: 'fas',\n  iconName: 'pen',\n  icon: [512, 512, [128394], \"f304\", \"M352.9 21.2L308 66.1 445.9 204 490.8 159.1C504.4 145.6 512 127.2 512 108s-7.6-37.6-21.2-51.1L455.1 21.2C441.6 7.6 423.2 0 404 0s-37.6 7.6-51.1 21.2zM274.1 100L58.9 315.1c-10.7 10.7-18.5 24.1-22.6 38.7L.9 481.6c-2.3 8.3 0 17.3 6.2 23.4s15.1 8.5 23.4 6.2l127.8-35.5c14.6-4.1 27.9-11.8 38.7-22.6L412 237.9 274.1 100z\"]\n};\nvar faPlane = {\n  prefix: 'fas',\n  iconName: 'plane',\n  icon: [576, 512, [], \"f072\", \"M520 200c30.9 0 56 25.1 56 56s-25.1 56-56 56l-127.3 0-159.2 173.6c-6.1 6.6-14.6 10.4-23.6 10.4l-43.7 0c-10.9 0-18.6-10.7-15.2-21.1l54.3-162.9-99.7 0-52.8 66c-3 3.8-7.6 6-12.5 6l-19.8 0c-10.4 0-18-9.8-15.5-19.9L32 256 5 147.9C2.4 137.8 10.1 128 20.5 128l19.8 0c4.9 0 9.5 2.2 12.5 6l52.8 66 99.7 0-54.3-162.9C147.6 26.7 155.3 16 166.2 16l43.7 0c9 0 17.5 3.8 23.6 10.4L392.7 200 520 200z\"]\n};\nvar faImages = {\n  prefix: 'fas',\n  iconName: 'images',\n  icon: [576, 512, [], \"f302\", \"M96 96c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64L96 96zM24 128c13.3 0 24 10.7 24 24l0 296c0 8.8 7.2 16 16 16l360 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L64 512c-35.3 0-64-28.7-64-64L0 152c0-13.3 10.7-24 24-24zm168 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm196.5 11.5c-4.4-7.1-12.1-11.5-20.5-11.5s-16.1 4.4-20.5 11.5l-56.3 92.1-24.5-30.6c-4.6-5.7-11.4-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4S174.8 352 184 352l272 0c8.7 0 16.7-4.7 20.9-12.3s4.1-16.8-.5-24.3l-88-144z\"]\n};\nvar faMobileScreen = {\n  prefix: 'fas',\n  iconName: 'mobile-screen',\n  icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM128 440c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0c-13.3 0-24 10.7-24 24zM304 64l-224 0 0 304 224 0 0-304z\"]\n};\nvar faMobileAndroidAlt = faMobileScreen;\nvar faGuaraniSign = {\n  prefix: 'fas',\n  iconName: 'guarani-sign',\n  icon: [384, 512, [], \"e19a\", \"M192 0c-13.3 0-24 10.7-24 24l0 41.5C73.3 77.3 0 158.1 0 256S73.3 434.7 168 446.5l0 41.5c0 13.3 10.7 24 24 24s24-10.7 24-24l0-41.5c94.7-11.8 168-92.6 168-190.5 0-17.7-14.3-32-32-32l-136 0 0-93.8c25.3 4.8 47.9 17 65.6 34.3 12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C297.2 90.2 258.8 70.8 216 65.5L216 24c0-13.3-10.7-24-24-24zM168 130.2l0 251.5C108.8 370.5 64 318.5 64 256s44.8-114.5 104-125.8zm48 251.5l0-93.8 100 0c-12.3 47.6-51.2 84.5-100 93.8z\"]\n};\nvar faBagShopping = {\n  prefix: 'fas',\n  iconName: 'bag-shopping',\n  icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 80c0-35.3 28.7-64 64-64s64 28.7 64 64l0 48-128 0 0-48zm-48 48l-64 0c-26.5 0-48 21.5-48 48L0 384c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-208c0-26.5-21.5-48-48-48l-64 0 0-48c0-61.9-50.1-112-112-112S112 18.1 112 80l0 48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faShoppingBag = faBagShopping;\nvar faCircleRight = {\n  prefix: 'fas',\n  iconName: 'circle-right',\n  icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0 256 256 0 1 0 -512 0zm387.3 11.3l-104 104c-4.6 4.6-11.5 5.9-17.4 3.5S256 366.5 256 360l0-56-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-56c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l104 104c6.2 6.2 6.2 16.4 0 22.6z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faPhoneVolume = {\n  prefix: 'fas',\n  iconName: 'phone-volume',\n  icon: [576, 512, [\"volume-control-phone\"], \"f2a0\", \"M344-32c128.1 0 232 103.9 232 232 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM320 88c0-13.3 10.7-24 24-24 75.1 0 136 60.9 136 136 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88-13.3 0-24-10.7-24-24zM144.1 1.4c19.7-5.4 40.3 4.7 48.1 23.5l40.5 97.3c6.9 16.5 2.1 35.6-11.8 47l-44.1 36.1c32.5 71.6 89 130 159.3 164.9L374.7 323c11.3-13.9 30.4-18.6 47-11.8L519 351.8c18.8 7.8 28.9 28.4 23.5 48.1l-1.5 5.5C523.4 470.1 460.9 525.3 384.6 509.2 209.6 472.1 71.9 334.4 34.8 159.4 18.7 83.1 73.9 20.6 138.5 2.9l5.5-1.5z\"]\n};\nvar faVolumeControlPhone = faPhoneVolume;\nvar faCubes = {\n  prefix: 'fas',\n  iconName: 'cubes',\n  icon: [512, 512, [], \"f1b3\", \"M284-1.3c-17.3-10-38.7-10-56 0L143.8 47.3c-17.3 10-28 28.5-28 48.5l0 101.9-88.3 51c-17.3 10-28 28.5-28 48.5l0 97.3c0 20 10.7 38.5 28 48.5l84.3 48.6c17.3 10 38.7 10 56 0l88.3-51 88.3 51c17.3 10 38.7 10 56 0L484.5 443c17.3-10 28-28.5 28-48.5l0-97.3c0-20-10.7-38.5-28-48.5l-88.3-51 0-101.9c0-20-10.7-38.5-28-48.5L284-1.3zM232 292.6l0 106.5-88.3 51c-1.2 .7-2.6 1.1-4 1.1l0-105.3 92.3-53.3zm231.4 .6c.7 1.2 1.1 2.6 1.1 4l0 97.3c0 2.9-1.5 5.5-4 6.9l-84.3 48.6c-1.2 .7-2.6 1.1-4 1.1l0-105.3 91.2-52.6zM348.3 95.8l0 101.9-92.3 53.3 0-106.5 91.2-52.6c.7 1.2 1.1 2.6 1.1 4z\"]\n};\nvar faPhone = {\n  prefix: 'fas',\n  iconName: 'phone',\n  icon: [512, 512, [128222, 128379], \"f095\", \"M160.2 25C152.3 6.1 131.7-3.9 112.1 1.4l-5.5 1.5c-64.6 17.6-119.8 80.2-103.7 156.4 37.1 175 174.8 312.7 349.8 349.8 76.3 16.2 138.8-39.1 156.4-103.7l1.5-5.5c5.4-19.7-4.7-40.3-23.5-48.1l-97.3-40.5c-16.5-6.9-35.6-2.1-47 11.8l-38.6 47.2C233.9 335.4 177.3 277 144.8 205.3L189 169.3c13.9-11.3 18.6-30.4 11.8-47L160.2 25z\"]\n};\nvar faToriiGate = {\n  prefix: 'fas',\n  iconName: 'torii-gate',\n  icon: [448, 512, [9961], \"f6a1\", \"M0 96L0 28.5C0 21.6 5.6 16 12.5 16 14.8 16 17 16.6 19 17.8L58 41.2C82.9 56.1 111.3 64 140.3 64l167.4 0c29 0 57.5-7.9 82.3-22.8l39-23.4c1.9-1.2 4.2-1.8 6.4-1.8 6.9 0 12.5 5.6 12.5 12.5L448 96c0 35.3-28.7 64-64 64l0 64 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192-192 0 0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-64C28.7 160 0 131.3 0 96zM128 224l64 0 0-64-64 0 0 64zm128 0l64 0 0-64-64 0 0 64z\"]\n};\nvar faBacon = {\n  prefix: 'fas',\n  iconName: 'bacon',\n  icon: [576, 512, [129363], \"f7e5\", \"M557 96.7c14.4 14.4 12.4 38.4-4.3 50.2l-64.6 45.7c-43.7 30.9-79.2 71.9-103.4 119.6l-25.3 49.8c-25.1 49.3-62.1 91.5-107.8 122.6l-74.1 50.6c-13.1 8.9-30.7 7.3-41.8-3.9l-44.9-44.9 86.5-66.5c42.3-32.5 76.7-74.3 100.6-122l24.5-49.1c24.5-49 61.8-90.6 107.9-120.2l108.7-69.9 38 38zM484.2 23.9L384.3 88.2c-53.4 34.3-96.5 82.4-124.9 139.1l-24.5 49.1c-20.6 41.3-50.3 77.3-86.9 105.4l-91.4 70.3-36.9-36.9c-14.4-14.4-12.4-38.4 4.3-50.2l64.6-45.7c43.7-30.9 79.2-71.9 103.4-119.6l25.3-49.8C242.3 100.8 279.3 58.6 325 27.4l74.1-50.6c13.1-8.9 30.6-7.3 41.8 3.9l43.3 43.3z\"]\n};\nvar faPersonFallingBurst = {\n  prefix: 'fas',\n  iconName: 'person-falling-burst',\n  icon: [576, 512, [], \"e547\", \"M256 0c17.7 0 32 14.3 32 32l0 5.4c0 55.2-23.7 107-63.9 143.1l62.9 75.5 89 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L368 320 263.2 320 376.8 459.8c11.1 13.7 9.1 33.9-4.7 45s-33.9 9.1-45-4.7L137.4 266.6c-6.1 15-9.4 31.3-9.4 48l0 69.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-69.4c0-67.4 35.4-129.9 93.2-164.6l4.6-2.8C200.4 124 224 82.4 224 37.4l0-5.4c0-17.7 14.3-32 32-32zM16 88A56 56 0 1 1 128 88 56 56 0 1 1 16 88zm376-7.9c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24l0 48zm104 152c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0zm-54.5-97.5c-9.4-9.4-9.4-24.6 0-33.9l33.9-33.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-33.9 33.9c-9.4 9.4-24.6 9.4-33.9 0z\"]\n};\nvar faQuoteRight = {\n  prefix: 'fas',\n  iconName: 'quote-right',\n  icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 136zm-256 0c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 136z\"]\n};\nvar faQuoteRightAlt = faQuoteRight;\nvar faHouseMedicalFlag = {\n  prefix: 'fas',\n  iconName: 'house-medical-flag',\n  icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0 0 288c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM267.5 59.1L400 186.9 400 503.4c-9.4 5.4-20.3 8.6-32 8.6l-256 0c-35.3 0-64-28.7-64-64l0-144-19.9 0C12.6 304 0 291.4 0 275.9 0 268.3 3.1 261 8.6 255.7L212.5 59.1C219.9 52 229.7 48 240 48s20.1 4 27.5 11.1zM204.8 256.8l0 44-44 0c-9.7 0-17.6 7.9-17.6 17.6l0 35.2c0 9.7 7.9 17.6 17.6 17.6l44 0 0 44c0 9.7 7.9 17.6 17.6 17.6l35.2 0c9.7 0 17.6-7.9 17.6-17.6l0-44 44 0c9.7 0 17.6-7.9 17.6-17.6l0-35.2c0-9.7-7.9-17.6-17.6-17.6l-44 0 0-44c0-9.7-7.9-17.6-17.6-17.6l-35.2 0c-9.7 0-17.6 7.9-17.6 17.6z\"]\n};\nvar faPrescription = {\n  prefix: 'fas',\n  iconName: 'prescription',\n  icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32L0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 50.7 0 128 128-105.4 105.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7 202.2 220.9C251.4 209.1 288 164.8 288 112 288 50.1 237.9 0 176 0L32 0zM176 160l-112 0 0-96 112 0c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faDiceThree = {\n  prefix: 'fas',\n  iconName: 'dice-three',\n  icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBuildingLock = {\n  prefix: 'fas',\n  iconName: 'building-lock',\n  icon: [576, 512, [], \"e4d6\", \"M32 64C32 28.7 60.7 0 96 0L352 0c35.3 0 64 28.7 64 64l0 121.3c-46.9 19-80 65-80 118.7l0 24.4c-19.6 17.6-32 43.1-32 71.5l0 96c0 5.5 .5 10.9 1.3 16.1L96 512c-35.3 0-64-28.7-64-64L32 64zM176 384l0 80 80 0 0-64.1c0-13.7 1.9-27 5.5-39.6-5.7-5.2-13.2-8.3-21.5-8.3l-32 0c-17.7 0-32 14.3-32 32zM307 224.3c-1-.2-2-.3-3-.3l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l16.7 0c2.1-22.8 8.4-44.3 18.3-63.7zM144 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM144 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm352 80.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM352 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nvar faIdCard = {\n  prefix: 'fas',\n  iconName: 'id-card',\n  icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64L0 96zm0 48l576 0 0 272c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 144zM247.3 416c20.2 0 35.3-19.4 22.4-35-14.7-17.7-36.9-29-61.7-29l-64 0c-24.8 0-47 11.3-61.7 29-12.9 15.6 2.2 35 22.4 35l142.5 0zM176 312a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM360 208c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faCirclePlay = {\n  prefix: 'fas',\n  iconName: 'circle-play',\n  icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faFaceLaughBeam = {\n  prefix: 'fas',\n  iconName: 'face-laugh-beam',\n  icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM101.6 314c-3.7-13.7 7.5-26 21.7-26l265.4 0c14.2 0 25.4 12.3 21.7 26-18.5 68-80.6 118-154.4 118S120 382 101.6 314zM176 164c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zm132 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faLeaf = {\n  prefix: 'fas',\n  iconName: 'leaf',\n  icon: [512, 512, [], \"f06c\", \"M471.3 6.7C477.7 .6 487-1.6 495.6 1.2 505.4 4.5 512 13.7 512 24l0 186.9c0 131.2-108.1 237.1-238.8 237.1-77 0-143.4-49.5-167.5-118.7-35.4 30.8-57.7 76.1-57.7 126.7 0 13.3-10.7 24-24 24S0 469.3 0 456C0 381.1 38.2 315.1 96.1 276.3 131.4 252.7 173.5 240 216 240l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0c-39.7 0-77.3 8.8-111 24.5 23.3-70 89.2-120.5 167-120.5 66.4 0 115.8-22.1 148.7-44 19.2-12.8 35.5-28.1 50.7-45.3z\"]\n};\nvar faHouseChimneyUser = {\n  prefix: 'fas',\n  iconName: 'house-chimney-user',\n  icon: [512, 512, [], \"e065\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-288 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208zM312 256a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zM144 432c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16 0-44.2-35.8-80-80-80l-64 0c-44.2 0-80 35.8-80 80z\"]\n};\nvar faRotateRight = {\n  prefix: 'fas',\n  iconName: 'rotate-right',\n  icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M488 192l-144 0c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l46.7-46.7c-75.3-58.6-184.3-53.3-253.5 15.9-75 75-75 196.5 0 271.5s196.5 75 271.5 0c8.2-8.2 15.5-16.9 21.9-26.1 10.1-14.5 30.1-18 44.6-7.9s18 30.1 7.9 44.6c-8.5 12.2-18.2 23.8-29.1 34.7-100 100-262.1 100-362 0S-25 175 75 75c94.3-94.3 243.7-99.6 344.3-16.2L471 7c6.9-6.9 17.2-8.9 26.2-5.2S512 14.3 512 24l0 144c0 13.3-10.7 24-24 24z\"]\n};\nvar faRedoAlt = faRotateRight;\nvar faRotateForward = faRotateRight;\nvar faTooth = {\n  prefix: 'fas',\n  iconName: 'tooth',\n  icon: [448, 512, [129463], \"f5c9\", \"M145 5.7L224 32 303 5.7C314.3 1.9 326 0 337.9 0 398.7 0 448 49.3 448 110.1l0 68.5c0 29.4-9.5 58.1-27.2 81.6l-1.1 1.5c-12.9 17.2-21.3 37.4-24.3 58.7L373.7 471.9c-3.3 23-23 40.1-46.2 40.1-22.8 0-42.3-16.5-46-39L261.3 351.6c-3-18.2-18.8-31.6-37.3-31.6s-34.2 13.4-37.3 31.6L166.5 473c-3.8 22.5-23.2 39-46 39-23.2 0-42.9-17.1-46.2-40.1L52.6 320.5c-3-21.3-11.4-41.5-24.3-58.7l-1.1-1.5C9.5 236.7 0 208.1 0 178.7l0-68.5C0 49.3 49.3 0 110.1 0 122 0 133.7 1.9 145 5.7z\"]\n};\nvar faHouseChimneyWindow = {\n  prefix: 'fas',\n  iconName: 'house-chimney-window',\n  icon: [512, 512, [], \"e00d\", \"M234.2 8.6c12.3-11.4 31.3-11.4 43.5 0L368 92.3 368 80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 101.5 37.8 35.1c9.6 9 12.8 22.9 8 35.1S493.2 272 480 272l-16 0 0 176c0 35.3-28.7 64-64 64l-288 0c-35.3 0-64-28.7-64-64l0-176-16 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8-35.1l224-208zM216 224c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24l-80 0z\"]\n};\nvar faMotorcycle = {\n  prefix: 'fas',\n  iconName: 'motorcycle',\n  icon: [640, 512, [127949], \"f21c\", \"M280 16c-13.3 0-24 10.7-24 24s10.7 24 24 24l56.6 0 22.5 48.7-95.1 71.3c-33.4-25.1-75-40-120-40l-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0c78.5 0 143.2 59.6 151.2 136l-25.4 0c-11.2-59.2-63.3-104-125.8-104-70.7 0-128 57.3-128 128S73.3 480 144 480c62.5 0 114.5-44.8 125.8-104l50.2 0c13.3 0 24-10.7 24-24l0-22.5c0-45.1 25.7-85.4 65.5-107.7l12.1 26.1c-32.4 23.2-53.5 61.2-53.5 104.1 0 70.7 57.3 128 128 128s128-57.3 128-128-57.3-128-128-128c-10.7 0-21 1.3-30.9 3.8L433.8 160 488 160c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-53.3 0c-6.9 0-13.7 2.2-19.2 6.4l-17.1 12.8-24.6-53.3C369.9 21.4 361.4 16 352 16l-72 0zM445.8 300.4l28.4 61.6c5.6 12 19.8 17.3 31.8 11.7s17.3-19.8 11.7-31.8l-28.5-61.6c2.2-.2 4.4-.3 6.7-.3 39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72c0-20.2 8.3-38.5 21.8-51.6zM144 424c-39.8 0-72-32.2-72-72s32.2-72 72-72c31.3 0 58 20 67.9 48L144 328c-13.3 0-24 10.7-24 24s10.7 24 24 24l67.9 0c-9.9 28-36.6 48-67.9 48z\"]\n};\nvar faBackwardFast = {\n  prefix: 'fas',\n  iconName: 'backward-fast',\n  icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M492.2 477.6c-12 5-25.7 2.2-34.9-6.9L288 301.3 288 448c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9L64 301.3 64 448c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64C0 46.3 14.3 32 32 32S64 46.3 64 64L64 210.7 233.4 41.4c9.2-9.2 22.9-11.9 34.9-6.9S288 51.1 288 64l0 146.7 169.4-169.4c9.2-9.2 22.9-11.9 34.9-6.9S512 51.1 512 64l0 384c0 12.9-7.8 24.6-19.8 29.6z\"]\n};\nvar faFastBackward = faBackwardFast;\nvar faAddressBook = {\n  prefix: 'fas',\n  iconName: 'address-book',\n  icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L96 0zM208 288l64 0c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16 0-44.2 35.8-80 80-80zm-24-96a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zm0 128c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zM496 320c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faContactBook = faAddressBook;\nvar faSailboat = {\n  prefix: 'fas',\n  iconName: 'sailboat',\n  icon: [512, 512, [], \"e445\", \"M240 35.9l0 348.1-224 0c-8.8 0-16 7.2-16 16 0 61.9 50.1 112 112 112l288 0c61.9 0 112-50.1 112-112 0-8.8-7.2-16-16-16l-208 0 0-48 161.7 0c12.9 0 20.5-14.4 13.2-25L269.2 26.9c-8.9-13-29.2-6.7-29.2 9zM192 320l0-184.2c0-16.1-21-22.1-29.6-8.5L47.3 311.5c-6.7 10.7 1 24.5 13.6 24.5L176 336c8.8 0 16-7.2 16-16z\"]\n};\nvar faBookBookmark = {\n  prefix: 'fas',\n  iconName: 'book-bookmark',\n  icon: [448, 512, [], \"e0bb\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48l-48 0 0 169.4c0 12.5-10.1 22.6-22.6 22.6-6 0-11.8-2.4-16-6.6L272 144 230.6 185.4c-4.2 4.2-10 6.6-16 6.6-12.5 0-22.6-10.1-22.6-22.6L192 0 96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32z\"]\n};\nvar faMagnifyingGlassArrowRight = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-arrow-right',\n  icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM305 225c9.4-9.4 9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-102.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l102.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72z\"]\n};\nvar faMicrophoneLines = {\n  prefix: 'fas',\n  iconName: 'microphone-lines',\n  icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96c0-53 43-96 96-96 50.3 0 91.6 38.7 95.7 88L232 88c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0 0 48-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l55.7 0c-4.1 49.3-45.3 88-95.7 88-53 0-96-43-96-96L96 96zM24 160c13.3 0 24 10.7 24 24l0 40c0 79.5 64.5 144 144 144s144-64.5 144-144l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 97.9-73.3 178.7-168 190.5l0 49.5 48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0 0-49.5C73.3 402.7 0 321.9 0 224l0-40c0-13.3 10.7-24 24-24z\"]\n};\nvar faMicrophoneAlt = faMicrophoneLines;\nvar faReplyAll = {\n  prefix: 'fas',\n  iconName: 'reply-all',\n  icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M332.2 18.4c12 5 19.8 16.6 19.8 29.6l0 80 48 0c97.2 0 176 78.8 176 176 0 113.3-81.5 163.9-100.2 174.1-2.5 1.4-5.3 1.9-8.1 1.9-10.9 0-19.7-8.9-19.7-19.7 0-7.5 4.3-14.4 9.8-19.5 9.4-8.8 22.2-26.4 22.2-56.7 0-53-43-96-96-96l-32 0 0 80c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-160-160c-12.5-12.5-12.5-32.8 0-45.3l160-160c9.2-9.2 22.9-11.9 34.9-6.9zM205.6 23.1c9.4 9.4 9.4 24.6 0 33.9L54.6 208 205.6 358.9c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L10 231.2c-6.4-6-10-14.4-10-23.2s3.6-17.2 10-23.2L171.6 23.1c9.4-9.4 24.6-9.4 33.9 0z\"]\n};\nvar faMailReplyAll = faReplyAll;\nvar faUniversalAccess = {\n  prefix: 'fas',\n  iconName: 'universal-access',\n  icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3l0 50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2S339 397 334.8 384.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6l0-50.1c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faToiletPaper = {\n  prefix: 'fas',\n  iconName: 'toilet-paper',\n  icon: [512, 512, [129531, 63263, \"toilet-paper-alt\", \"toilet-paper-blank\"], \"f71e\", \"M327.1 32c-8.8 11.1-16 23.1-21.9 34.8-21.4 42.7-33.2 98.4-33.2 157.2l0 264c0 30.9-25.1 56-56 56L56 544c-30.9 0-56-25.1-56-56L0 224C0 118 43 32 96 32l231.1 0zM416 416c-53 0-96-86-96-192s43-192 96-192 96 86 96 192-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64-32 28.7-32 64 14.3 64 32 64z\"]\n};\nvar faToiletPaperAlt = faToiletPaper;\nvar faToiletPaperBlank = faToiletPaper;\nvar faVrCardboard = {\n  prefix: 'fas',\n  iconName: 'vr-cardboard',\n  icon: [576, 512, [], \"f729\", \"M512 96L64 96C28.7 96 0 124.7 0 160L0 352c0 35.3 28.7 64 64 64l117.5 0c17 0 33.3-6.7 45.3-18.7l33.9-33.9c7.2-7.2 17.1-11.3 27.3-11.3s20.1 4.1 27.3 11.3l33.9 33.9c12 12 28.3 18.7 45.3 18.7L512 416c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64zM80 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm352-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faPizzaSlice = {\n  prefix: 'fas',\n  iconName: 'pizza-slice',\n  icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L112.5 72C293.3 72.3 439.7 218.7 440 399.5l36.4-9.7c20.8-5.5 36.3-24.7 34.7-47.5-12.6-182.8-158.6-328.8-341.4-341.4zm222 411.5c.2-4.1 .3-8.2 .3-12.4 0-154.6-125.4-280-280-280-4.1 0-8.3 .1-12.4 .3L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1l371.6-99.1zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSprayCan = {\n  prefix: 'fas',\n  iconName: 'spray-can',\n  icon: [576, 512, [], \"f5bd\", \"M192 0l64 0c17.7 0 32 14.3 32 32l0 80-128 0 0-80c0-17.7 14.3-32 32-32zM64 256c0-53 43-96 96-96l128 0c53 0 96 43 96 96l0 208c0 26.5-21.5 48-48 48l-224 0c-26.5 0-48-21.5-48-48l0-208zm240 80a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM320 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM448 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM512 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM448 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faVolumeLow = {\n  prefix: 'fas',\n  iconName: 'volume-low',\n  icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M48 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L96 160 48 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48zM380.6 181.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C361.1 227.6 368 241 368 256s-6.9 28.4-17.7 37.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C402.1 312.9 416 286.1 416 256s-13.9-56.9-35.5-74.5z\"]\n};\nvar faVolumeDown = faVolumeLow;\nvar faCross = {\n  prefix: 'fas',\n  iconName: 'cross',\n  icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48l0 80-80 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l80 0 0 208c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-208 80 0c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48l-80 0 0-80c0-26.5-21.5-48-48-48L176 0z\"]\n};\nvar faPerson = {\n  prefix: 'fas',\n  iconName: 'person',\n  icon: [384, 512, [129485, \"male\"], \"f183\", \"M248 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7l46.3 62.4c10.5 14.2 30.6 17.2 44.8 6.6s17.2-30.6 6.6-44.8l-70.5-95C274 132 234.3 112 192 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L112 236.7 112 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3z\"]\n};\nvar faMale = faPerson;\nvar faHourglass = {\n  prefix: 'fas',\n  iconName: 'hourglass',\n  icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 11c0 42.4-16.9 83.1-46.9 113.1l-67.9 67.9 67.9 67.9c30 30 46.9 70.7 46.9 113.1l0 11c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-11c0-42.4 16.9-83.1 46.9-113.1l67.9-67.9-67.9-67.9C48.9 158.1 32 117.4 32 75l0-11C14.3 64 0 49.7 0 32zM96 64l0 11c0 25.5 10.1 49.9 28.1 67.9l67.9 67.9 67.9-67.9c18-18 28.1-42.4 28.1-67.9l0-11-192 0zm0 384l192 0 0-11c0-25.5-10.1-49.9-28.1-67.9l-67.9-67.9-67.9 67.9c-18 18-28.1 42.4-28.1 67.9l0 11z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faFish = {\n  prefix: 'fas',\n  iconName: 'fish',\n  icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8 4.7 9.2 4.7 20.1 0 29.3-14.1 27.4-41.9 66.8-81 99.8-39.2 33.1-92 61.5-155.5 61.5s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9s-12.4-26-5.3-38.6L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faDrumstickBite = {\n  prefix: 'fas',\n  iconName: 'drumstick-bite',\n  icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2-4.6-1.1-9.5-1.8-14.5-1.8-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12 0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4l89.2 0c6.3 0 12.4-.3 18.5-1 11.9-1.2 16.4-15.5 10.8-26-8.5-15.8-13.3-33.8-13.3-53 0-61.9 50.1-112 112-112 8 0 15.7 .8 23.2 2.4 11.7 2.5 24.1-5.9 22-17.6-14.7-82.3-86.7-144.8-173.2-144.8-97.2 0-176 78.8-176 176l0 89.2z\"]\n};\nvar faChartSimple = {\n  prefix: 'fas',\n  iconName: 'chart-simple',\n  icon: [512, 512, [], \"e473\", \"M192 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM432 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z\"]\n};\nvar faAtom = {\n  prefix: 'fas',\n  iconName: 'atom',\n  icon: [448, 512, [9883], \"f5d2\", \"M224 398.8c-11.8 5.1-23.4 9.7-34.9 13.5 16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM414 256c33 45.2 44.3 90.9 23.6 128-20.2 36.3-62.5 49.3-115.2 43.2-22 52.1-55.7 84.8-98.4 84.8s-76.4-32.7-98.4-84.8C72.9 433.3 30.6 420.3 10.4 384-10.3 346.9 1 301.2 34 256 1 210.8-10.3 165.1 10.4 128 30.6 91.7 72.9 78.7 125.6 84.8 147.6 32.7 181.2 0 224 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2 20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2 31.8 1.4 38.6-8.7 40.2-11.7 2.3-4.2 7-17.9-11.9-48.1-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2 7.6 6.1 14.8 12.3 21.6 18.6 18.9-30.2 14.2-44 11.9-48.1-1.6-2.9-8.4-13-40.2-11.7zM258.9 99.7C242.1 65.9 227.9 64 224 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5 11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2-31.8-1.4-38.6 8.7-40.2 11.7-2.3 4.2-7 17.9 11.9 48.1 6.8-6.3 14-12.5 21.6-18.6zM78.2 304.8c-18.9 30.2-14.2 44-11.9 48.1 1.6 2.9 8.4 13 40.2 11.7-2.8-13.1-5-26.9-6.7-41.2-7.6-6.1-14.8-12.3-21.6-18.6zM304 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faP = {\n  prefix: 'fas',\n  iconName: 'p',\n  icon: [320, 512, [112], \"50\", \"M0 64C0 46.3 14.3 32 32 32l128 0c88.4 0 160 71.6 160 160S248.4 352 160 352l-96 0 0 96c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64zM64 288l96 0c53 0 96-43 96-96s-43-96-96-96l-96 0 0 192z\"]\n};\nvar faJetFighterUp = {\n  prefix: 'fas',\n  iconName: 'jet-fighter-up',\n  icon: [512, 512, [], \"e518\", \"M206.8 47.8C202.3 58.5 200 70 200 81.6l0 100.4-152 114 0-48c0-13.3-10.7-24-24-24S0 234.7 0 248L0 392c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 152 0 0 54.4-66 52.8c-3.8 3-6 7.6-6 12.5l0 24.3c0 8.8 7.2 16 16 16l88 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 88 0c8.8 0 16-7.2 16-16l0-24.3c0-4.9-2.2-9.5-6-12.5l-66-52.8 0-54.4 152 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-144c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48-152-114 0-100.4c0-11.6-2.3-23.1-6.8-33.8l-27.1-65C274.4-26.2 265.7-32 256-32s-18.4 5.8-22.2 14.8l-27.1 65z\"]\n};\nvar faPlugCircleXmark = {\n  prefix: 'fas',\n  iconName: 'plug-circle-xmark',\n  icon: [640, 512, [], \"e560\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-36.7 36.7-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l36.7 36.7-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l36.7-36.7 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-36.7-36.7 36.7-36.7z\"]\n};\nvar faSheetPlastic = {\n  prefix: 'fas',\n  iconName: 'sheet-plastic',\n  icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64l149.5 0c17 0 33.3-6.7 45.3-18.7L365.3 386.7c12-12 18.7-28.3 18.7-45.3L384 64c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448zm208 5.5l0-93.5c0-13.3 10.7-24 24-24l93.5 0-117.5 117.5zM153 105l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zm96 32L137 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L215 103c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faV = {\n  prefix: 'fas',\n  iconName: 'v',\n  icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nvar faList = {\n  prefix: 'fas',\n  iconName: 'list',\n  icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24L40 48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM16 232l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0z\"]\n};\nvar faListSquares = faList;\nvar faPisces = {\n  prefix: 'fas',\n  iconName: 'pisces',\n  icon: [448, 512, [], \"e84c\", \"M40.4 10.4c11.9-13 32.2-13.9 45.2-2 2.9 2.7 28.3 26.7 53.6 67.8 22.3 36.2 45 86.6 51.1 147.8l67.3 0c6.1-61.1 28.8-111.6 51.1-147.8 25.3-41.1 50.7-65.1 53.6-67.8 13-11.9 33.3-11.1 45.2 2 11.9 13 11 33.3-2 45.2-1.4 1.3-22 21.1-42.4 54.2-17.9 29.1-35.4 68-41.2 114.2l94 0 3.3 .2c16.1 1.6 28.7 15.3 28.7 31.8s-12.6 30.2-28.7 31.8l-3.3 .2-94 0c5.8 46.2 23.3 85.1 41.2 114.2 20.4 33.1 41 52.9 42.4 54.2 13 11.9 13.9 32.2 2 45.2-11.9 13-32.2 13.9-45.2 2-2.9-2.7-28.3-26.7-53.6-67.8-22.3-36.2-45-86.6-51.1-147.8l-67.3 0c-6.1 61.1-28.8 111.6-51.1 147.8-25.3 41.1-50.7 65.1-53.6 67.8-13 11.9-33.3 11.1-45.2-2-11.9-13-11-33.3 2-45.2 1.4-1.3 22-21.1 42.4-54.2 17.9-29.1 35.4-68 41.2-114.2l-94 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l94 0c-5.8-46.2-23.3-85.1-41.2-114.2-20.4-33.1-41-52.9-42.4-54.2-13-11.9-13.9-32.2-2-45.2z\"]\n};\nvar faSolarPanel = {\n  prefix: 'fas',\n  iconName: 'solar-panel',\n  icon: [576, 512, [], \"f5ba\", \"M121.8 32c-30 0-56 20.8-62.5 50.1L9.6 306.1C.7 346.1 31.1 384 72 384l184.1 0 0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64 184.1 0c40.9 0 71.4-37.9 62.5-77.9l-49.8-224C510.4 52.8 484.5 32 454.5 32L121.8 32zM245.6 96l85.2 0 7.3 88-99.8 0 7.3-88zm-55.5 88l-87.8 0 19.6-88 75.6 0-7.3 88zM91.6 232l94.5 0-7.3 88-106.7 0 19.6-88zm142.6 0l107.8 0 7.3 88-122.5 0 7.3-88zm156 0l94.5 0 19.6 88-106.7 0-7.3-88zM474 184l-87.8 0-7.3-88 75.6 0 19.6 88z\"]\n};\nvar faLandMineOn = {\n  prefix: 'fas',\n  iconName: 'land-mine-on',\n  icon: [576, 512, [], \"e51b\", \"M312 0l0 128c0 13.3-10.7 24-24 24s-24-10.7-24-24L264 0c0-13.3 10.7-24 24-24s24 10.7 24 24zM160 288c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 32 80 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L80 512c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48l80 0 0-32zM12 114.7c7.4-11 22.3-14 33.3-6.7l96 64c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-96-64c-11-7.4-14-22.3-6.7-33.3zM530.7 108c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3l-96 64c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l96-64z\"]\n};\nvar faHeadphones = {\n  prefix: 'fas',\n  iconName: 'headphones',\n  icon: [448, 512, [127911, 62863, \"headphones-alt\", \"headphones-simple\"], \"f025\", \"M64 224c0-88.4 71.6-160 160-160s160 71.6 160 160l0 37.5c-10-3.5-20.8-5.5-32-5.5l-16 0c-26.5 0-48 21.5-48 48l0 128c0 26.5 21.5 48 48 48l16 0c53 0 96-43 96-96l0-160C448 100.3 347.7 0 224 0S0 100.3 0 224L0 384c0 53 43 96 96 96l16 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-16 0c-11.2 0-22 1.9-32 5.5L64 224z\"]\n};\nvar faHeadphonesAlt = faHeadphones;\nvar faHeadphonesSimple = faHeadphones;\nvar faBus = {\n  prefix: 'fas',\n  iconName: 'bus',\n  icon: [448, 512, [128653], \"f207\", \"M96 0C43 0 0 43 0 96L0 384c0 29.8 20.4 54.9 48 62l0 34c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 192 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-34c27.6-7.1 48-32.2 48-62l0-288c0-53-43-96-96-96L96 0zM64 176c0-17.7 14.3-32 32-32l104 0 0 112-104 0c-17.7 0-32-14.3-32-32l0-48zm184 80l0-112 104 0c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32l-104 0zM96 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm256 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM152 72c0-13.3 10.7-24 24-24l96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24z\"]\n};\nvar faFilePowerpoint = {\n  prefix: 'fas',\n  iconName: 'file-powerpoint',\n  icon: [384, 512, [], \"f1c4\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM152 256c-13.3 0-24 10.7-24 24l0 144c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 24 0c39.8 0 72-32.2 72-72s-32.2-72-72-72l-48 0zm48 96l-24 0 0-48 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faQuoteLeft = {\n  prefix: 'fas',\n  iconName: 'quote-left',\n  icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64L0 216zm256 0c0-66.3 53.7-120 120-120l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-136z\"]\n};\nvar faQuoteLeftAlt = faQuoteLeft;\nvar faChevronDown = {\n  prefix: 'fas',\n  iconName: 'chevron-down',\n  icon: [448, 512, [], \"f078\", \"M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nvar faEarthAsia = {\n  prefix: 'fas',\n  iconName: 'earth-asia',\n  icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M50 284.8c4.2 2.1 9 3.2 14 3.2l50.7 0c8.5 0 16.6 3.4 22.6 9.4l13.3 13.3c6 6 14.1 9.4 22.6 9.4l18.7 0c17.7 0 32-14.3 32-32l0-40c0-13.3 10.7-24 24-24s24-10.7 24-24l0-42.7c0-8.5 3.4-16.6 9.4-22.6l13.3-13.3c6-6 9.4-14.1 9.4-22.6L304 57c0-1.2-.1-2.3-.2-3.5-15.4-3.6-31.4-5.5-47.8-5.5-114.9 0-208 93.1-208 208 0 9.8 .7 19.4 2 28.8zm403.3 37.3c-3.2-1.4-6.7-2.1-10.5-2.1L432 320c-8.8 0-16-7.2-16-16s-7.2-16-16-16l-34.7 0c-8.5 0-16.6 3.4-22.6 9.4l-45.3 45.3c-6 6-9.4 14.1-9.4 22.6l0 18.7c0 17.7 14.3 32 32 32l18.7 0c8.5 0 16.6 3.4 22.6 9.4 2.2 2.2 4.7 4.1 7.3 5.5 39.3-25.4 69.5-63.6 84.6-108.8zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM128 368c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM272 256c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32c0-8.8-7.2-16-16-16zm48-112l0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faGlobeAsia = faEarthAsia;\nvar faCentSign = {\n  prefix: 'fas',\n  iconName: 'cent-sign',\n  icon: [384, 512, [], \"e3f5\", \"M208 0c17.7 0 32 14.3 32 32l0 25.4c43.6 5.2 83 24.5 113.3 53.1 12.9 12.1 13.4 32.4 1.3 45.2s-32.4 13.4-45.2 1.3c-24.4-23-57.2-37.1-93.3-37.1-75.1 0-136 60.9-136 136s60.9 136 136 136c36.2 0 69-14.1 93.3-37.1 12.9-12.1 33.1-11.5 45.2 1.3s11.5 33.1-1.3 45.2C323 430.1 283.6 449.4 240 454.6l0 25.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-28C84.7 433.5 16 352.8 16 256S84.7 78.5 176 60l0-28c0-17.7 14.3-32 32-32z\"]\n};\nvar faShieldCat = {\n  prefix: 'fas',\n  iconName: 'shield-cat',\n  icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4l.2 0c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4l48 0c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3l.2 0c5.8 0 10.4 4.7 10.4 10.4L352 272c0 53-43 96-96 96s-96-43-96-96l0-117.6zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faSchoolCircleCheck = {\n  prefix: 'fas',\n  iconName: 'school-circle-check',\n  icon: [640, 512, [], \"e56b\", \"M64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l276 0c-10.5-14.6-19-30.7-25.1-48l-90.9 0 0-88c0-22.1 17.9-40 40-40l48 0c1 0 1.9 0 2.9 .1 26.3-74.6 97.5-128.1 181.1-128.1 28.6 0 55.6 6.2 80 17.4l0-33.4c0-35.3-28.7-64-64-64l-64 0-127.9-115.1c-18.3-16.4-46-16.4-64.2 0L128 128 64 128zm64 240c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 256l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM288 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n};\nvar faMartiniGlass = {\n  prefix: 'fas',\n  iconName: 'martini-glass',\n  icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M2.4 51.8C7.4 39.8 19.1 32 32 32l448 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L288 301.3 288 448 352 448c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 0-146.7-214.6-214.6C.2 77.5-2.5 63.7 2.4 51.8zM354.7 144l48-48-293.5 0 48 48 197.5 0z\"]\n};\nvar faGlassMartiniAlt = faMartiniGlass;\nvar faPlug = {\n  prefix: 'fas',\n  iconName: 'plug',\n  icon: [448, 512, [128268], \"f1e6\", \"M128-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64c0 95.1-69.2 174.1-160 189.3l0 66.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C101.2 398.1 32 319.1 32 224l0-64c-17.7 0-32-14.3-32-32S14.3 96 32 96l64 0 0-96c0-17.7 14.3-32 32-32z\"]\n};\nvar faPanorama = {\n  prefix: 'fas',\n  iconName: 'panorama',\n  icon: [576, 512, [], \"e209\", \"M43.9 48C19.7 48 0 67.7 0 91.9L0 420.1c0 24.3 19.7 43.9 43.9 43.9 5.5 0 10.7-1 15.7-2.9 12.9-4.9 103.4-37.1 228.4-37.1s215.5 32.3 228.4 37.1c5 1.9 10.2 2.9 15.7 2.9 24.3 0 43.9-19.7 43.9-43.9l0-328.2c0-24.3-19.7-43.9-43.9-43.9-5.5 0-10.7 1-15.7 2.9-12.9 4.9-103.4 37.1-228.4 37.1S72.5 55.7 59.6 50.9C54.6 49 49.4 48 43.9 48zM72 176a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zm264.1-16c7.5 0 14.6 3.6 19.1 9.6L479.7 336.2c5.9 7.9 6.4 18.5 1.3 26.9s-14.8 12.8-24.5 11.1c-45.8-7.8-103.3-14.2-168.4-14.2-65.6 0-123.4 6.5-169.3 14.4-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L165.3 249c4.6-5.7 11.5-9 18.7-9s14.2 3.3 18.7 9l27.5 34.4 86.7-113.9c4.6-6 11.7-9.5 19.2-9.5z\"]\n};\nvar faClockRotateLeft = {\n  prefix: 'fas',\n  iconName: 'clock-rotate-left',\n  icon: [576, 512, [\"history\"], \"f1da\", \"M288 64c106 0 192 86 192 192S394 448 288 448c-65.2 0-122.9-32.5-157.6-82.3-10.1-14.5-30.1-18-44.6-7.9s-18 30.1-7.9 44.6C124.1 468.6 201 512 288 512 429.4 512 544 397.4 544 256S429.4 0 288 0C202.3 0 126.5 42.1 80 106.7L80 80c0-17.7-14.3-32-32-32S16 62.3 16 80l0 112c0 17.7 14.3 32 32 32l24.6 0c.5 0 1 0 1.5 0l86 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-38.3 0C154.9 102.6 217 64 288 64zm24 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1z\"]\n};\nvar faHistory = faClockRotateLeft;\nvar faJarWheat = {\n  prefix: 'fas',\n  iconName: 'jar-wheat',\n  icon: [320, 512, [], \"e517\", \"M32-8c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 16C42.7 16 32 5.3 32-8zM0 128C0 92.7 28.7 64 64 64l192 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 128zm112 32l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8 0 32.1 26 58.2 58.2 58.2l75.6 0c32.1 0 58.2-26 58.2-58.2 0-3.2-2.6-5.8-5.8-5.8L208 160c-19.1 0-36.3 8.4-48 21.7-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8 0 32.1 26 58.2 58.2 58.2l75.6 0c32.1 0 58.2-26 58.2-58.2 0-3.2-2.6-5.8-5.8-5.8L208 256c-19.1 0-36.3 8.4-48 21.7zM112 352l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8 0 32.1 26 58.2 58.2 58.2l21.8 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 21.8 0c32.1 0 58.2-26 58.2-58.2 0-3.2-2.6-5.8-5.8-5.8L208 352c-19.1 0-36.3 8.4-48 21.7-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nvar faCloudArrowDown = {\n  prefix: 'fas',\n  iconName: 'cloud-arrow-down',\n  icon: [576, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480c-79.5 0-144-64.5-144-144 0-63.4 41-117.2 97.9-136.5-1.3-7.7-1.9-15.5-1.9-23.5 0-79.5 64.5-144 144-144 55.4 0 103.5 31.3 127.6 77.1 14.2-8.3 30.8-13.1 48.4-13.1 53 0 96 43 96 96 0 15.7-3.8 30.6-10.5 43.7 44 20.3 74.5 64.7 74.5 116.3 0 70.7-57.3 128-128 128l-304 0zM377 313c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 102.1-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72z\"]\n};\nvar faCloudDownload = faCloudArrowDown;\nvar faCloudDownloadAlt = faCloudArrowDown;\nvar faTruckRampBox = {\n  prefix: 'fas',\n  iconName: 'truck-ramp-box',\n  icon: [576, 512, [\"truck-loading\"], \"f4de\", \"M400 32c-44.2 0-80 35.8-80 80l0 248.2-297.2 89.2C5.9 454.4-3.7 472.3 1.4 489.2s22.9 26.5 39.8 21.5l315.5-94.6 43.7 0c-.2 2.6-.4 5.3-.4 8 0 48.6 39.4 88 88 88s88-39.4 88-88l0-392-176 0zM528 424c0 22.1-17.9 40-40 40s-40-17.9-40-40 17.9-40 40-40c22.1 0 39.9 17.9 40 39.9l0 .1zM51.9 149.5C18.1 159.8-.9 195.6 9.4 229.4l28.1 91.8C47.8 355 83.6 374 117.4 363.7l91.8-28.1c33.8-10.3 52.8-46.1 42.5-79.9l-28.1-91.8c-10.3-33.8-46.1-52.8-79.9-42.5L51.9 149.5z\"]\n};\nvar faTruckLoading = faTruckRampBox;\nvar faAngleDown = {\n  prefix: 'fas',\n  iconName: 'angle-down',\n  icon: [384, 512, [8964], \"f107\", \"M169.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 306.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faPlugCircleCheck = {\n  prefix: 'fas',\n  iconName: 'plug-circle-check',\n  icon: [640, 512, [], \"e55c\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM352 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n};\nvar faWindowMaximize = {\n  prefix: 'fas',\n  iconName: 'window-maximize',\n  icon: [512, 512, [128470], \"f2d0\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm24 64l336 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 176c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faHandsHoldingCircle = {\n  prefix: 'fas',\n  iconName: 'hands-holding-circle',\n  icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256 128 128 0 1 1 0-256zM40 64c22.1 0 40 17.9 40 40l0 160.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1 12.9-8.6 14.7-26.9 3.7-37.8-7.3-7.3-23.1-23.1-47.2-47.2-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c24.1 24.1 39.9 39.9 47.2 47.2l0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 221.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0c7.3-7.3 23.1-23.1 47.2-47.2 12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-24.1 24.1-39.9 39.9-47.2 47.2-11 11-9.2 29.2 3.7 37.8 9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3L560 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faLocationPin = {\n  prefix: 'fas',\n  iconName: 'location-pin',\n  icon: [384, 512, [\"map-marker\"], \"f041\", \"M192 0C86 0 0 84.4 0 188.6 0 307.9 120.2 450.9 170.4 505.4 182.2 518.2 201.8 518.2 213.6 505.4 263.8 450.9 384 307.9 384 188.6 384 84.4 298 0 192 0z\"]\n};\nvar faMapMarker = faLocationPin;\nvar faBowlingBall = {\n  prefix: 'fas',\n  iconName: 'bowling-ball',\n  icon: [512, 512, [], \"f436\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCartFlatbed = {\n  prefix: 'fas',\n  iconName: 'cart-flatbed',\n  icon: [576, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l16 0c8.8 0 16 7.2 16 16l0 288c0 39.8 29.1 72.8 67.1 79-2 5.3-3.1 11-3.1 17 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l197.5 0c-1.8 5-2.7 10.4-2.7 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l34.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-400 0c-8.8 0-16-7.2-16-16l0-288C128 35.8 92.2 0 48 0L32 0zM224 64c-26.5 0-48 21.5-48 48l0 176c0 26.5 21.5 48 48 48l240 0c26.5 0 48-21.5 48-48l0-176c0-26.5-21.5-48-48-48L224 64z\"]\n};\nvar faDollyFlatbed = faCartFlatbed;\nvar faHouseUser = {\n  prefix: 'fas',\n  iconName: 'house-user',\n  icon: [512, 512, [\"home-user\"], \"e1b0\", \"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208zM200 256a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM144 432c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80 0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHomeUser = faHouseUser;\nvar faGhost = {\n  prefix: 'fas',\n  iconName: 'ghost',\n  icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9C25.7 478.6 21.8 480 17.8 480 8 480 0 472 0 462.2L0 192C0 86 86 0 192 0S384 86 384 192l0 270.2c0 9.8-8 17.8-17.8 17.8-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCommentNodes = {\n  prefix: 'fas',\n  iconName: 'comment-nodes',\n  icon: [640, 512, [], \"e696\", \"M480 208C503.7 208 525.6 215.3 543.7 227.9 536.9 100.9 425 0 288 0 146.6 0 32 107.5 32 240 32 294.3 51.2 344.3 83.6 384.5L34.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7c27.2 11.4 56.9 18.4 88.1 20.2 .1-18.9 4.9-38 15-55.5 17.1-29.7 45.8-48.5 77-54.2l9.2-16c-3.4-10.7-5.2-22-5.2-33.8 0-61.9 50.1-112 112-112zM328.6 448c-17.7 30.6-7.2 69.7 23.4 87.4s69.7 7.2 87.4-23.4c1.5-2.6 2.8-5.3 3.9-8l73.3 0c1.1 2.7 2.4 5.4 3.9 8 17.7 30.6 56.8 41.1 87.4 23.4s41.1-56.8 23.4-87.4c-13.4-23.2-39.1-34.8-64-31.4l-17.6-30.7c-11 11.7-25 20.6-40.6 25.6l16.5 28.9c-3.8 4.8-6.8 10-9 15.6l-73.4 0c-2.2-5.6-5.3-10.8-9-15.6l33-57.7c4.1 .8 8.4 1.3 12.8 1.3 35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64c0 13.4 4.1 25.8 11.2 36.1l-34.6 60.5c-25-3.4-50.6 8.3-64 31.4z\"]\n};\nvar faPersonArrowDownToLine = {\n  prefix: 'fas',\n  iconName: 'person-arrow-down-to-line',\n  icon: [576, 512, [], \"e538\", \"M192-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM318.3 299.1l-46.3-62.4 0 243.3 272 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 544c-17.7 0-32-14.3-32-32s14.3-32 32-32l80 0 0-243.3-46.3 62.4c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95C110 132 149.7 112 192 112s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6zM176 480l32 0 0-128c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 128zM566.6 166.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L432 146.7 432 0c0-17.7 14.3-32 32-32s32 14.3 32 32l0 146.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faPlugCirclePlus = {\n  prefix: 'fas',\n  iconName: 'plug-circle-plus',\n  icon: [640, 512, [], \"e55f\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nvar faPersonSwimming = {\n  prefix: 'fas',\n  iconName: 'person-swimming',\n  icon: [640, 512, [127946, \"swimmer\"], \"f5c4\", \"M552 152a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zM293.4 198.2l-88.6 73.9c1.1 0 2.2-.1 3.3-.1 33.1-.2 66.3 10.2 94.4 31.4 22.1 16.6 29.1 16.6 51.2 0 27.5-20.7 59.9-31.2 92.4-31.4 4.8 0 9.7 .2 14.5 .6-8.3-30-24.3-57.7-46.8-80.2-18.4-18.4-40.6-32.7-65-41.8l-68.6-25.7c-27.4-10.3-58-7.5-83.1 7.6l-53.5 32.1c-15.2 9.1-20.1 28.7-11 43.9s28.7 20.1 43.9 11L230 187.3c8.4-5 18.6-5.9 27.7-2.5l35.7 13.4zm110 181.9c21.3-16.1 49.9-16.1 71.2 0 19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 386.3 17.6 394.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n};\nvar faSwimmer = faPersonSwimming;\nvar faCommentDots = {\n  prefix: 'fas',\n  iconName: 'comment-dots',\n  icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 480c141.4 0 256-107.5 256-240S397.4 0 256 0 0 107.5 0 240c0 54.3 19.2 104.3 51.6 144.5L2.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7C183.7 472.6 218.9 480 256 480zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCommenting = faCommentDots;\nvar faChartPie = {\n  prefix: 'fas',\n  iconName: 'chart-pie',\n  icon: [576, 512, [\"pie-chart\"], \"f200\", \"M512.4 240l-176 0c-17.7 0-32-14.3-32-32l0-176c0-17.7 14.4-32.2 31.9-29.9 107 14.2 191.8 99 206 206 2.3 17.5-12.2 31.9-29.9 31.9zM222.6 37.2c18.1-3.8 33.8 11 33.8 29.5l0 197.3c0 5.6 2 11 5.5 15.3L394 438.7c11.7 14.1 9.2 35.4-6.9 44.1-34.1 18.6-73.2 29.2-114.7 29.2-132.5 0-240-107.5-240-240 0-115.5 81.5-211.9 190.2-234.8zM477.8 288l64 0c18.5 0 33.3 15.7 29.5 33.8-10.2 48.4-35 91.4-69.6 124.2-12.3 11.7-31.6 9.2-42.4-3.9L374.9 340.4c-17.3-20.9-2.4-52.4 24.6-52.4l78.2 0z\"]\n};\nvar faPieChart = faChartPie;\nvar faFrog = {\n  prefix: 'fas',\n  iconName: 'frog',\n  icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9 0 21.8-11.7 41.9-30.7 52.7l-144.5 82.1 92.5 92.5 50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2 27.9-18.5 65.9-15.4 90.5 9.2 24.7 24.7 27.7 62.9 9 90.9-2.6 3.8-5.6 7.5-9 10.9L261.8 416 352 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480C28.7 480 0 451.3 0 416 0 249.6 127 112.9 289.3 97.5 296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faWineBottle = {\n  prefix: 'fas',\n  iconName: 'wine-bottle',\n  icon: [320, 512, [], \"f72f\", \"M80-32c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32 0 11.8-6.4 22.2-16 27.7l0 145.6c56.5 24.7 96 81.1 96 146.7l0 224c0 35.3-28.7 64-64 64L64 576c-35.3 0-64-28.7-64-64L0 288c0-65.6 39.5-122 96-146.7L96-4.3C86.4-9.8 80-20.2 80-32zM96 288c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L96 288z\"]\n};\nvar faInbox = {\n  prefix: 'fas',\n  iconName: 'inbox',\n  icon: [512, 512, [], \"f01c\", \"M91.8 32C59.9 32 32.9 55.4 28.4 86.9L.6 281.2c-.4 3-.6 6-.6 9.1L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-125.7c0-3-.2-6.1-.6-9.1L483.6 86.9C479.1 55.4 452.1 32 420.2 32L91.8 32zm0 64l328.5 0 27.4 192-59.9 0c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7l-120.4 0c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7L64.3 288 91.8 96z\"]\n};\nvar faSquareH = {\n  prefix: 'fas',\n  iconName: 'square-h',\n  icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM320 168l0 176c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-64-96 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-176c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 96 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHSquare = faSquareH;\nvar faHouseMedical = {\n  prefix: 'fas',\n  iconName: 'house-medical',\n  icon: [512, 512, [], \"e3b2\", \"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208zM224 248c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n};\nvar faCircleChevronRight = {\n  prefix: 'fas',\n  iconName: 'circle-chevron-right',\n  icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0 256 256 0 1 0 -512 0zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nvar faChevronCircleRight = faCircleChevronRight;\nvar faFileCsv = {\n  prefix: 'fas',\n  iconName: 'file-csv',\n  icon: [576, 512, [], \"f6dd\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l80 0 0-112c0-35.3 28.7-64 64-64l176 0 0-165.5c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM264 380c-24.3 0-44 19.7-44 44l0 80c0 24.3 19.7 44 44 44l16 0c24.3 0 44-19.7 44-44l0-8c0-11-9-20-20-20s-20 9-20 20l0 8c0 2.2-1.8 4-4 4l-16 0c-2.2 0-4-1.8-4-4l0-80c0-2.2 1.8-4 4-4l16 0c2.2 0 4 1.8 4 4l0 8c0 11 9 20 20 20s20-9 20-20l0-8c0-24.3-19.7-44-44-44l-16 0zm136 0c-28.7 0-52 23.3-52 52s23.3 52 52 52c6.6 0 12 5.4 12 12s-5.4 12-12 12l-32 0c-11 0-20 9-20 20s9 20 20 20l32 0c28.7 0 52-23.3 52-52s-23.3-52-52-52c-6.6 0-12-5.4-12-12s5.4-12 12-12l24 0c11 0 20-9 20-20s-9-20-20-20l-24 0zm96 0c-11 0-20 9-20 20l0 31.6c0 35.5 10.5 70.3 30.2 99.8l5.1 7.7c3.7 5.6 10 8.9 16.6 8.9s12.9-3.3 16.6-8.9l5.1-7.7c19.7-29.6 30.2-64.3 30.2-99.8l0-31.6c0-11-9-20-20-20s-20 9-20 20l0 31.6c0 19.6-4.1 38.9-12 56.7-7.9-17.8-12-37.1-12-56.7l0-31.6c0-11-9-20-20-20z\"]\n};\nvar faHatCowboy = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy',\n  icon: [640, 512, [], \"f8c0\", \"M182.2 76.1L130.8 307.5C145.5 324.9 167.4 336 192 336l256 0c24.6 0 46.5-11.1 61.2-28.5L457.8 76.1c-5.7-25.8-28.6-44.1-55-44.1-12.2 0-24.1 4-33.8 11.3l-4.7 3.5c-26.3 19.7-62.4 19.7-88.6 0L271 43.3c-9.8-7.3-21.6-11.3-33.8-11.3-26.4 0-49.3 18.3-55 44.1zM64 256c0-17.7-14.3-32-32-32S0 238.3 0 256C0 362 86 448 192 448l256 0c106 0 192-86 192-192 0-17.7-14.3-32-32-32s-32 14.3-32 32c0 70.7-57.3 128-128 128l-256 0c-70.7 0-128-57.3-128-128z\"]\n};\nvar faFaceGrinTongueWink = {\n  prefix: 'fas',\n  iconName: 'face-grin-tongue-wink',\n  icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M152.2 490.1C62.5 450.2 0 360.4 0 256 0 114.6 114.6 0 256 0S512 114.6 512 256c0 104.4-62.5 194.2-152.2 234.1 5.3-13 8.2-27.2 8.2-42.1l0-61.7c16.9-16.5 30.1-36.7 38.3-59.3 4.3-11.8-7.7-21.8-19.6-18.1-39.2 12.2-83.7 19.1-130.7 19.1s-91.5-6.9-130.7-19.1c-11.9-3.7-23.9 6.3-19.6 18.1 8.3 22.6 21.5 42.8 38.3 59.3l0 61.7c0 14.9 2.9 29.1 8.2 42.1zM152 212l16 0c11 0 20 9 20 20s9 20 20 20 20-9 20-20c0-33.1-26.9-60-60-60l-16 0c-33.1 0-60 26.9-60 60 0 11 9 20 20 20s20-9 20-20 9-20 20-20zm184 60a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6l0 45.4c0 35.3-28.7 64-64 64s-64-28.7-64-64l0-45.4c0-14.7 11.9-26.6 26.6-26.6l2 0c11.3 0 21.1 7.9 23.6 18.9 2.8 12.6 20.8 12.6 23.6 0 2.5-11.1 12.3-18.9 23.6-18.9l2 0c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faL = {\n  prefix: 'fas',\n  iconName: 'l',\n  icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32l0 352 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-17.7 0-32-14.3-32-32L32 64c0-17.7 14.3-32 32-32z\"]\n};\nvar faArrowDownShortWide = {\n  prefix: 'fas',\n  iconName: 'arrow-down-short-wide',\n  icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M246.6 374.6l-96 96c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM320 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSortAmountDesc = faArrowDownShortWide;\nvar faSortAmountDownAlt = faArrowDownShortWide;\nvar faHourglassHalf = {\n  prefix: 'fas',\n  iconName: 'hourglass-half',\n  icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1l67.9 67.9-67.9 67.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1l-67.9-67.9 67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32S369.7 0 352 0L32 0zM96 75l0-11 192 0 0 11c0 19-5.6 37.4-16 53L112 128c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9l67.9-67.9 67.9 67.9c4.6 4.6 8.6 9.6 12.2 14.9L112 384z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faSpoon = {\n  prefix: 'fas',\n  iconName: 'spoon',\n  icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8 0-80.2 96-160.2 192-160.2 53 0 96 43 96 96 0 96-80 192-160.2 192-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nvar faUtensilSpoon = faSpoon;\nvar faCreditCard = {\n  prefix: 'fas',\n  iconName: 'credit-card',\n  icon: [512, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M0 128l0 32 512 0 0-32c0-35.3-28.7-64-64-64L64 64C28.7 64 0 92.7 0 128zm0 80L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-176-512 0zM64 360c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zm144 0c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faFileInvoiceDollar = {\n  prefix: 'fas',\n  iconName: 'file-invoice-dollar',\n  icon: [384, 512, [], \"f571\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM64 88c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 64C74.7 64 64 74.7 64 88zm0 96c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zm112 76l0 4c-28.8 .3-52 23.7-52 52.5 0 25.7 18.5 47.6 43.9 51.8l41.7 7c6 1 10.4 6.2 10.4 12.3 0 6.9-5.6 12.5-12.5 12.5L152 400c-11 0-20 9-20 20s9 20 20 20l24 0 0 4c0 11 9 20 20 20s20-9 20-20l0-4.7c25-4.1 44-25.7 44-51.8 0-25.7-18.5-47.6-43.9-51.8l-41.7-7c-6-1-10.4-6.2-10.4-12.3 0-6.9 5.6-12.5 12.5-12.5l47.5 0c11 0 20-9 20-20s-9-20-20-20l-8 0 0-4c0-11-9-20-20-20s-20 9-20 20z\"]\n};\nvar faSpaghettiMonsterFlying = {\n  prefix: 'fas',\n  iconName: 'spaghetti-monster-flying',\n  icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3c-10-11.3-16-26.1-16-42.3 0-35.3 28.7-64 64-64s64 28.7 64 64-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4 7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4 10.7 11.7 16.1 13.4 19.4 13.4 2.5 0 4.3-.6 7.1-3.3 3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7 9.7-9.3 22.9-16.7 40.4-16.7 13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7-9.7 9.3-22.9 16.7-40.4 16.7-18.5 0-32.9-8.5-44.3-18.6-3.1 4-6.6 8.3-10.5 12.7 1.4 4.3 2.8 8.5 4 12.5 .9 3 1.8 5.8 2.6 8.6 3 9.8 5.5 18.2 8.6 25.9 3.9 9.8 7.4 15.4 10.8 18.5 2.6 2.4 5.9 4.3 12.8 4.3 8.7 0 16.9-4.2 33.7-13.2 15-8 35.7-18.8 62.3-18.8 13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2-1 .6-2.1 1.1-3.2 1.7-13.1 7.1-31.6 17.1-53.1 17.1-18.4 0-33.6-6.1-45.5-17.2-11.1-10.3-17.9-23.7-22.7-36-3.6-9-6.7-19.1-9.5-28.5-16.4 12.3-36.1 23.6-58.9 31.3 3.6 10.8 8.4 23.5 14.4 36.2 7.5 15.9 16.2 30.4 25.8 40.5 9.6 10.2 17.7 13.7 24.5 13.7 13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8-14.5-15.4-25.7-34.9-34.2-53-8-17-14.1-33.8-18.3-46.9-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9-8.5 18.1-19.8 37.6-34.2 53-14.4 15.3-34.3 28.8-59.5 28.8-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7 9.5-10.1 18.3-24.6 25.8-40.5 5.9-12.6 10.7-25.4 14.4-36.2-22.8-7.7-42.5-19-58.9-31.3-2.9 9.4-6 19.5-9.5 28.5-4.8 12.2-11.6 25.6-22.7 36-11.9 11.1-27.1 17.2-45.5 17.2-13.1 0-24.5-4.1-33.8-8.9-7.9-4-15.7-9.2-22.1-13.5l0 0-2.4-1.6c-15.3-10.2-25.8-16-37.7-16-13.3 0-24-10.7-24-24s10.7-24 24-24c28.1 0 49.6 14.2 64.3 24l2.4 1.6c6.9 4.6 12.1 8.1 17.2 10.7 5.5 2.8 9.1 3.6 12 3.6 6.8 0 10.2-1.9 12.8-4.3 3.4-3.2 7-8.8 10.8-18.5 3-7.7 5.6-16.1 8.6-25.9 .8-2.7 1.7-5.6 2.6-8.6 1.2-4 2.6-8.2 4-12.5-3.9-4.5-7.4-8.8-10.5-12.7-11.4 10.1-25.9 18.6-44.3 18.6-17.5 0-30.7-7.4-40.4-16.7-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4-2.8-2.7-4.6-3.3-7.1-3.3-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7 8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4 2.8 2.7 4.6 3.3 7.1 3.3 3.3 0 8.7-1.7 19.4-13.4 5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24 13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faPastafarianism = faSpaghettiMonsterFlying;\nvar faMartiniGlassCitrus = {\n  prefix: 'fas',\n  iconName: 'martini-glass-citrus',\n  icon: [640, 512, [\"cocktail\"], \"f561\", \"M576 80c0-44.2-35.8-80-80-80-18 0-34.6 6-48 16l-81 0c23.6-47.4 72.5-80 129-80 79.5 0 144 64.5 144 144S575.5 224 496 224c-6.5 0-13-.4-19.3-1.3l64-74.7c1.1-1.3 2.2-2.7 3.3-4.1 19.4-14.6 32-37.8 32-64zM66.9 82.6C72.2 71.3 83.5 64 96 64l384 0c12.5 0 23.8 7.3 29.1 18.6s3.4 24.7-4.8 34.2l-184.3 215 0 116.2 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 0-116.2-184.3-215c-8.1-9.5-10-22.8-4.8-34.2zM165.6 128L288 270.8 410.4 128 165.6 128z\"]\n};\nvar faCocktail = faMartiniGlassCitrus;\nvar faBullhorn = {\n  prefix: 'fas',\n  iconName: 'bullhorn',\n  icon: [512, 512, [128226, 128363], \"f0a1\", \"M461.2 18.9C472.7 24 480 35.4 480 48l0 416c0 12.6-7.3 24-18.8 29.1s-24.8 3.2-34.3-5.1l-46.6-40.7c-43.6-38.1-98.7-60.3-156.4-63l0 95.7c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96C57.3 384 0 326.7 0 256S57.3 128 128 128l84.5 0c61.8-.2 121.4-22.7 167.9-63.3l46.6-40.7c9.4-8.3 22.9-10.2 34.3-5.1zM224 320l0 .2c70.3 2.7 137.8 28.5 192 73.4l0-275.3c-54.2 44.9-121.7 70.7-192 73.4L224 320z\"]\n};\nvar faBoxTissue = {\n  prefix: 'fas',\n  iconName: 'box-tissue',\n  icon: [512, 512, [], \"e05b\", \"M103.9 32l161 0c13.8 0 26 8.8 30.4 21.9l17.4 52.2c4.4 13.1 16.6 21.9 30.4 21.9l60.5 0c21.8 0 37.3 21.4 30.4 42.1L384 320 128 320 72.7 70.9C68.2 51 83.4 32 103.9 32zM48 256l16.6 0 16.5 74.4C86 352.4 105.5 368 128 368l256 0c20.7 0 39-13.2 45.5-32.8l26.4-79.2 8.1 0c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48L0 304c0-26.5 21.5-48 48-48z\"]\n};\nvar faMattressPillow = {\n  prefix: 'fas',\n  iconName: 'mattress-pillow',\n  icon: [576, 512, [], \"e525\", \"M256 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l192 0 0-384zm48 384l208 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-208 0 0 384zM64 160c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nvar faChevronLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-left',\n  icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nvar faCloudMoonRain = {\n  prefix: 'fas',\n  iconName: 'cloud-moon-rain',\n  icon: [576, 512, [], \"f73c\", \"M448 0c-68.6 0-127.1 43.1-149.8 103.8 17.1 14.1 29.6 33.5 34.9 55.8 39.9 21.7 66.9 63.9 66.9 112.5 0 13.5-2.1 26.5-5.9 38.7 16.9 6 35 9.3 53.9 9.3 43 0 82.1-17 110.8-44.6 4.6-4.4 5.9-11.2 3.3-17s-8.6-9.3-14.9-8.8c-3 .2-6.1 .4-9.2 .4-63.5 0-115-51.5-115-115 0-45.1 26-84.2 63.8-103 5.7-2.8 9-8.9 8.2-15.2S489.6 5.3 483.4 3.9C472 1.4 460.2 0 448 0zM272 352c44.2 0 80-35.8 80-80 0-39-27.9-71.5-64.8-78.6 .5-3.1 .8-6.2 .8-9.4 0-30.9-25.1-56-56-56-12.4 0-23.9 4-33.1 10.8-13.4-25.5-40.1-42.8-70.9-42.8-44.2 0-80 35.8-80 80 0 7.4 1 14.6 2.9 21.5-29.8 11.6-50.9 40.6-50.9 74.5 0 44.2 35.8 80 80 80l192 0zM69 401.1c-12.6-4.2-26.2 2.6-30.4 15.2L17.2 480.4C13 493 19.8 506.6 32.4 510.8s26.2-2.6 30.4-15.2l21.4-64.1c4.2-12.6-2.6-26.2-15.2-30.4zm120 0c-12.6-4.2-26.2 2.6-30.4 15.2l-21.4 64.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.4-64.1c4.2-12.6-2.6-26.2-15.2-30.4zm120 0c-12.6-4.2-26.2 2.6-30.4 15.2l-21.4 64.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l21.4-64.1c4.2-12.6-2.6-26.2-15.2-30.4z\"]\n};\nvar faArrowDown19 = {\n  prefix: 'fas',\n  iconName: 'arrow-down-1-9',\n  icon: [512, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M418.7 38c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM365.1 430.6l11.7-18c-32.9-9.9-56.8-40.5-56.8-76.6 0-44.2 35.8-80 80-80s80 35.8 80 80c0 22.9-6.6 45.3-19.1 64.5l-42.1 64.9c-9.6 14.8-29.4 19.1-44.3 9.4s-19.1-29.4-9.4-44.3zM424 336a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM150.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-96 96z\"]\n};\nvar faSortNumericAsc = faArrowDown19;\nvar faSortNumericDown = faArrowDown19;\nvar faHandSpock = {\n  prefix: 'fas',\n  iconName: 'hand-spock',\n  icon: [512, 512, [128406], \"f259\", \"M214.9 23.7C210.3 6.6 192.8-3.5 175.7 1.1s-27.2 22.1-22.6 39.2L206 237.8c2.5 9.2-4.5 18.2-14 18.2-6.4 0-12-4.2-13.9-10.3L134.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L67.6 283c-16-15.2-41.3-14.6-56.6 1.4S-3.6 325.7 12.4 341L124.8 448c43.1 41.1 100.4 64 160 64l19.1 0c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L411.5 247.1c-1.6 5.3-6.4 8.9-12 8.9-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L323.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nvar faWandMagicSparkles = {\n  prefix: 'fas',\n  iconName: 'wand-magic-sparkles',\n  icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M263.4-27L278.2 9.8 315 24.6c3 1.2 5 4.2 5 7.4s-2 6.2-5 7.4L278.2 54.2 263.4 91c-1.2 3-4.2 5-7.4 5s-6.2-2-7.4-5L233.8 54.2 197 39.4c-3-1.2-5-4.2-5-7.4s2-6.2 5-7.4L233.8 9.8 248.6-27c1.2-3 4.2-5 7.4-5s6.2 2 7.4 5zM110.7 41.7l21.5 50.1 50.1 21.5c5.9 2.5 9.7 8.3 9.7 14.7s-3.8 12.2-9.7 14.7l-50.1 21.5-21.5 50.1c-2.5 5.9-8.3 9.7-14.7 9.7s-12.2-3.8-14.7-9.7L59.8 164.2 9.7 142.7C3.8 140.2 0 134.4 0 128s3.8-12.2 9.7-14.7L59.8 91.8 81.3 41.7C83.8 35.8 89.6 32 96 32s12.2 3.8 14.7 9.7zM464 304c6.4 0 12.2 3.8 14.7 9.7l21.5 50.1 50.1 21.5c5.9 2.5 9.7 8.3 9.7 14.7s-3.8 12.2-9.7 14.7l-50.1 21.5-21.5 50.1c-2.5 5.9-8.3 9.7-14.7 9.7s-12.2-3.8-14.7-9.7l-21.5-50.1-50.1-21.5c-5.9-2.5-9.7-8.3-9.7-14.7s3.8-12.2 9.7-14.7l50.1-21.5 21.5-50.1c2.5-5.9 8.3-9.7 14.7-9.7zM460 0c11 0 21.6 4.4 29.5 12.2l42.3 42.3C539.6 62.4 544 73 544 84s-4.4 21.6-12.2 29.5l-88.2 88.2-101.3-101.3 88.2-88.2C438.4 4.4 449 0 460 0zM44.2 398.5L308.4 134.3 409.7 235.6 145.5 499.8C137.6 507.6 127 512 116 512s-21.6-4.4-29.5-12.2L44.2 457.5C36.4 449.6 32 439 32 428s4.4-21.6 12.2-29.5z\"]\n};\nvar faMagicWandSparkles = faWandMagicSparkles;\nvar faCommentMedical = {\n  prefix: 'fas',\n  iconName: 'comment-medical',\n  icon: [512, 512, [], \"f7f5\", \"M256 480c141.4 0 256-107.5 256-240S397.4 0 256 0 0 107.5 0 240c0 54.3 19.2 104.3 51.6 144.5L2.8 476.8c-4.8 9-3.3 20 3.6 27.5s17.8 9.8 27.1 5.8l118.4-50.7C183.7 472.6 218.9 480 256 480zM217.6 153.6c0-10.6 8.6-19.2 19.2-19.2l38.4 0c10.6 0 19.2 8.6 19.2 19.2l0 48 48 0c10.6 0 19.2 8.6 19.2 19.2l0 38.4c0 10.6-8.6 19.2-19.2 19.2l-48 0 0 48c0 10.6-8.6 19.2-19.2 19.2l-38.4 0c-10.6 0-19.2-8.6-19.2-19.2l0-48-48 0c-10.6 0-19.2-8.6-19.2-19.2l0-38.4c0-10.6 8.6-19.2 19.2-19.2l48 0 0-48z\"]\n};\nvar faBellSlash = {\n  prefix: 'fas',\n  iconName: 'bell-slash',\n  icon: [576, 512, [128277, 61943], \"f1f6\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-87.5-87.5c17.2-2.4 30.5-17.3 30.5-35.2 0-8.1-2.7-15.9-7.8-22.2l-9.8-12.2C464.4 308.5 448 261.8 448 213.7l0-21.7c0-77.4-55-142-128-156.8l0-3.2c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 3.2c-38.6 7.8-72.2 29.6-95.2 59.7L41-24.9zm87 238.5c0 48.1-16.4 94.8-46.4 132.4l-9.8 12.2c-5 6.3-7.8 14.1-7.8 22.2 0 19.6 15.9 35.5 35.5 35.5l235.3 0-206.9-206.9 0 4.5zM288 512c29.8 0 54.9-20.4 62-48l-124 0c7.1 27.6 32.2 48 62 48z\"]\n};\nvar faHandshakeSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-slash',\n  icon: [576, 512, [57439, \"handshake-alt-slash\", \"handshake-simple-slash\"], \"e060\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-288-288 14.2-14.2c4.2-4.2 9.5-6.5 14.9-6.9 6.8-.6 13.8 1.7 19 6.9L505.6 376 576 320 576 32 464 96 440.2 80.1C424.4 69.6 405.9 64 386.9 64l-70.4 0c-1.1 0-2.3 0-3.4 .1-16.9 .9-32.8 8.5-44.2 21.1l-55.8 62.1-34-34 44.3-49.2-39.7 0c-15.3 0-30.1 3.6-43.5 10.4L41-24.9zM0 69.8L0 320 156.4 450.3c23 19.2 52 29.7 81.9 29.7l15.7 0-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l41 41 9 0c22.2 0 43.8-5.8 62.8-16.4L0 69.8z\"]\n};\nvar faHandshakeAltSlash = faHandshakeSlash;\nvar faHandshakeSimpleSlash = faHandshakeSlash;\nvar faBottleWater = {\n  prefix: 'fas',\n  iconName: 'bottle-water',\n  icon: [320, 512, [], \"e4c5\", \"M112-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0C94.3 32 80 17.7 80 0s14.3-32 32-32zM16 144c0-35.3 28.7-64 64-64l160 0c35.3 0 64 28.7 64 64 0 24.1-13.3 45.1-33 56 19.7 10.9 33 31.9 33 56s-13.3 45.1-33 56c19.7 10.9 33 31.9 33 56s-13.3 45.1-33 56c19.7 10.9 33 31.9 33 56 0 35.3-28.7 64-64 64L80 544c-35.3 0-64-28.7-64-64 0-24.1 13.3-45.1 33-56-19.7-10.9-33-31.9-33-56s13.3-45.1 33-56c-19.7-10.9-33-31.9-33-56s13.3-45.1 33-56c-19.7-10.9-33-31.9-33-56z\"]\n};\nvar faDiceD20 = {\n  prefix: 'fas',\n  iconName: 'dice-d20',\n  icon: [512, 512, [], \"f6cf\", \"M224.4-8.2c19.6-11.1 43.6-11.1 63.1 0l192 108.8c20 11.4 32.4 32.6 32.4 55.7l0 215.6c0 23-12.4 44.3-32.4 55.7l-192 108.8c-19.6 11.1-43.6 11.1-63.1 0L32.4 427.5C12.4 416.1 0 394.8 0 371.8L0 156.2c0-23 12.4-44.3 32.4-55.7L224.4-8.2zm52 73.2C267 49.8 245 49.8 235.6 65l-76.6 123.7-85.4-46.3-3.8-1.6c-8.9-2.7-18.8 1.1-23.4 9.6s-2.4 18.9 4.7 24.8l3.3 2.3 83.4 45.2-74.6 120.6C55.3 356.2 61 373 75 378.4l161 61.9 0 39.7c0 11 9 20 20 20s20-9 20-20l0-39.7 161-61.9c14-5.4 19.7-22.2 11.8-35l-74.7-120.6 83.4-45.2c9.7-5.3 13.3-17.4 8.1-27.1s-17.4-13.3-27.1-8.1L353 188.7 276.4 65zm-47 329.9l-122-46.9 54.5-88.1 67.5 135zM404.6 348l-122 46.9 67.5-135 54.5 88.1zM319.3 232L256 358.6 192.7 232 319.3 232zM308 192l-104.1 0 52-84 52 84z\"]\n};\nvar faArrowDownZA = {\n  prefix: 'fas',\n  iconName: 'arrow-down-z-a',\n  icon: [512, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M230.6 390.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM288 64c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L397.3 160 448 160c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L370.8 96 320 96c-17.7 0-32-14.3-32-32zM412.6 273.7l80 160c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3l-7.2-14.3-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l80-160c5.4-10.8 16.5-17.7 28.6-17.7s23.2 6.8 28.6 17.7zM384 359.6l-20.2 40.4 40.4 0-20.2-40.4z\"]\n};\nvar faSortAlphaDesc = faArrowDownZA;\nvar faSortAlphaDownAlt = faArrowDownZA;\nvar faBrush = {\n  prefix: 'fas',\n  iconName: 'brush',\n  icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6l-19 0c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6L48 0C21.5 0 0 21.5 0 48l0 208 384 0 0-208c0-26.5-21.5-48-48-48L230.5 0c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 304l0 16c0 35.3 28.7 64 64 64l64 0 0 64c0 35.3 28.7 64 64 64s64-28.7 64-64l0-64 64 0c35.3 0 64-28.7 64-64l0-16-384 0zM192 464c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faPersonWalkingDashedLineArrowRight = {\n  prefix: 'fas',\n  iconName: 'person-walking-dashed-line-arrow-right',\n  icon: [640, 512, [], \"e553\", \"M160 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM73.4 227.9l22.6-22.6 0 69.3c0 28 12.2 54.7 33.5 72.9l71.4 61.2c5.9 5.1 9.8 12.1 10.9 19.8l12.6 88.1c2.5 17.5 18.7 29.7 36.2 27.2s29.7-18.7 27.2-36.2l-12.6-88.1c-3.3-23.1-14.9-44.1-32.6-59.3l-34.5-29.6 0-115.2 3.8 4.7c18.2 22.8 45.8 36 75 36l33.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-33.2 0c-9.7 0-18.9-4.4-25-12l-17.9-22.4c-23-28.8-57.9-45.6-94.8-45.6-32.2 0-63.1 12.8-85.8 35.6L28.1 182.6C10.1 200.6 0 225 0 250.5L0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-37.5c0-8.5 3.4-16.6 9.4-22.6zM85.8 407.3c-1.5 5.2-4.3 10-8.1 13.8L9.4 489.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.3-68.3c11.5-11.5 19.9-25.8 24.4-41.5l2.2-7.6-46-39.4c-2.5-2.2-5-4.4-7.4-6.8L85.8 407.3zM432 8c0-13.3-10.7-24-24-24S384-5.3 384 8l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32zm0 128c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32zM408 320c-13.3 0-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32zM609 273c9.4-9.4 9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-102.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l102.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72z\"]\n};\nvar faArrowUpShortWide = {\n  prefix: 'fas',\n  iconName: 'arrow-up-short-wide',\n  icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0zM150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faSortAmountUpAlt = faArrowUpShortWide;\nvar faGripVertical = {\n  prefix: 'fas',\n  iconName: 'grip-vertical',\n  icon: [320, 512, [\"grid-vertical\"], \"f58e\", \"M128 40c0-22.1-17.9-40-40-40L40 0C17.9 0 0 17.9 0 40L0 88c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zM0 424l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM320 40c0-22.1-17.9-40-40-40L232 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zM192 232l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM320 424c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48z\"]\n};\nvar faGridVertical = faGripVertical;\nvar faCarTunnel = {\n  prefix: 'fas',\n  iconName: 'car-tunnel',\n  icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256L0 448c0 35.3 28.7 64 64 64l42.8 0c-6.6-5.9-10.8-14.4-10.8-24l0-113.1c0-13.5 3.1-26.8 9-38.9l39.7-80.8c9.4-19.1 28.9-31.3 50.2-31.3L317 224c21.3 0 40.8 12.1 50.2 31.3L407 336c5.9 12.1 9 25.4 9 38.9L416 488c0 9.6-4.2 18.1-10.8 24l42.8 0c35.3 0 64-28.7 64-64l0-192C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24l0-24-192 0 0 24c0 9.6-4.2 18.1-10.8 24l213.7 0zm-175-235.5l-29.3 59.5 194.9 0-29.3-59.5c-1.3-2.7-4.1-4.5-7.2-4.5L195 272c-3 0-5.8 1.7-7.2 4.5zM176 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm184-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faChartColumn = {\n  prefix: 'fas',\n  iconName: 'chart-column',\n  icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zM144 224c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm144-64l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32s32 14.3 32 32zm80 32c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM512 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faCapricorn = {\n  prefix: 'fas',\n  iconName: 'capricorn',\n  icon: [576, 512, [], \"e848\", \"M240 32c79.5 0 144 64.5 144 144l0 65.2c18.8-10.9 40.7-17.2 64-17.2 70.7 0 128 57.3 128 128S518.7 480 448 480c-35.8 0-68.2-14.7-91.4-38.4-28.8 42.5-77.4 70.4-132.6 70.4-17.7 0-32-14.3-32-32s14.3-32 32-32c53 0 96-43 96-96l0-176c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 208c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224c0-35.3-28.7-64-64-64-17.7 0-32-14.3-32-32S14.3 32 32 32C72.6 32 108.8 51 132.2 80.5 158.6 50.7 197.1 32 240 32zM448 288a64 64 0 1 0 0 128 64 64 0 1 0 0-128z\"]\n};\nvar faTruckArrowRight = {\n  prefix: 'fas',\n  iconName: 'truck-arrow-right',\n  icon: [576, 512, [], \"e58b\", \"M64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64l3.3 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l102.6 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l3.3 0c35.3 0 64-28.7 64-64l0-146.7c0-17-6.7-33.3-18.7-45.3L512 146.7c-12-12-28.3-18.7-45.3-18.7l-50.7 0 0-32c0-35.3-28.7-64-64-64L64 32zM512 237.3l0 50.7-96 0 0-96 50.7 0 45.3 45.3zM152 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm232 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM305 225l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-102.1 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l102.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9z\"]\n};\nvar faTv = {\n  prefix: 'fas',\n  iconName: 'tv',\n  icon: [576, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 96l0 240 448 0 0-240-448 0zM0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 240c0 35.3-28.7 64-64 64L64 400c-35.3 0-64-28.7-64-64L0 96zM160 448l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faTelevision = faTv;\nvar faTvAlt = faTv;\nvar faSection = {\n  prefix: 'fas',\n  iconName: 'section',\n  icon: [256, 512, [], \"e447\", \"M110 0C49.2 0 0 49.2 0 110 0 133.7 7.6 155.8 20.5 174 7.6 192 0 214.1 0 238 0 291.7 38.9 337.6 91.9 346.4l61.7 10.3c22.2 3.7 38.4 22.9 38.4 45.3 0 25.4-20.6 46-46 46l-98 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l98 0c60.7 0 110-49.2 110-110 0-23.7-7.6-45.9-20.5-64 12.9-18 20.5-40.1 20.5-64 0-53.8-38.9-99.6-91.9-108.5l-61.7-10.3C80.2 151.6 64 132.4 64 110 64 84.6 84.6 64 110 64l98 0c17.7 0 32-14.3 32-32S225.7 0 208 0L110 0zm74.7 299.1c-6.5-2.4-13.4-4.3-20.5-5.5l-61.7-10.3c-22.2-3.7-38.4-22.9-38.4-45.3 0-9.2 2.7-17.8 7.4-25 6.5 2.4 13.4 4.3 20.5 5.5l61.7 10.3c22.2 3.7 38.4 22.9 38.4 45.3 0 9.2-2.7 17.8-7.4 25z\"]\n};\nvar faPeace = {\n  prefix: 'fas',\n  iconName: 'peace',\n  icon: [512, 512, [9774], \"f67c\", \"M224 445.3l0-121.8-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8 224 66.7c-90.8 15.2-160 94.2-160 189.3 0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5l-94.3-77.1 0 121.8c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1 0-95.1-69.2-174.1-160-189.3l0 174.2 134.8 110.3zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z\"]\n};\nvar faStar = {\n  prefix: 'fas',\n  iconName: 'star',\n  icon: [576, 512, [11088, 61446], \"f005\", \"M309.5-18.9c-4.1-8-12.4-13.1-21.4-13.1s-17.3 5.1-21.4 13.1L193.1 125.3 33.2 150.7c-8.9 1.4-16.3 7.7-19.1 16.3s-.5 18 5.8 24.4l114.4 114.5-25.2 159.9c-1.4 8.9 2.3 17.9 9.6 23.2s16.9 6.1 25 2L288.1 417.6 432.4 491c8 4.1 17.7 3.3 25-2s11-14.2 9.6-23.2L441.7 305.9 556.1 191.4c6.4-6.4 8.6-15.8 5.8-24.4s-10.1-14.9-19.1-16.3L383 125.3 309.5-18.9z\"]\n};\nvar faFlag = {\n  prefix: 'fas',\n  iconName: 'flag',\n  icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-121.6 62.7-18.8c41.9-12.6 87.1-8.7 126.2 10.9 42.7 21.4 92.5 24 137.2 7.2l37.1-13.9c12.5-4.7 20.8-16.6 20.8-30l0-247.7c0-23-24.2-38-44.8-27.7l-11.8 5.9c-44.9 22.5-97.8 22.5-142.8 0-36.4-18.2-78.3-21.8-117.2-10.1L64 54.4 64 32z\"]\n};\nvar faTriangleExclamation = {\n  prefix: 'fas',\n  iconName: 'triangle-exclamation',\n  icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 0c14.7 0 28.2 8.1 35.2 21l216 400c6.7 12.4 6.4 27.4-.8 39.5S486.1 480 472 480L40 480c-14.1 0-27.2-7.4-34.4-19.5s-7.5-27.1-.8-39.5l216-400c7-12.9 20.5-21 35.2-21zm0 352a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-192c-18.2 0-32.7 15.5-31.4 33.7l7.4 104c.9 12.5 11.4 22.3 23.9 22.3 12.6 0 23-9.7 23.9-22.3l7.4-104c1.3-18.2-13.1-33.7-31.4-33.7z\"]\n};\nvar faExclamationTriangle = faTriangleExclamation;\nvar faWarning = faTriangleExclamation;\nvar faSchoolCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'school-circle-exclamation',\n  icon: [640, 512, [], \"e56c\", \"M64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l276 0c-10.5-14.6-19-30.7-25.1-48l-90.9 0 0-88c0-22.1 17.9-40 40-40l48 0c1 0 1.9 0 2.9 .1 26.3-74.6 97.5-128.1 181.1-128.1 28.6 0 55.6 6.2 80 17.4l0-33.4c0-35.3-28.7-64-64-64l-64 0-127.9-115.1c-18.3-16.4-46-16.4-64.2 0L128 128 64 128zm64 240c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 256l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM288 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nvar faGraduationCap = {\n  prefix: 'fas',\n  iconName: 'graduation-cap',\n  icon: [576, 512, [127891, \"mortar-board\"], \"f19d\", \"M48 195.8l209.2 86.1c9.8 4 20.2 6.1 30.8 6.1s21-2.1 30.8-6.1l242.4-99.8c9-3.7 14.8-12.4 14.8-22.1s-5.8-18.4-14.8-22.1L318.8 38.1C309 34.1 298.6 32 288 32s-21 2.1-30.8 6.1L14.8 137.9C5.8 141.6 0 150.3 0 160L0 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-260.2zm48 71.7L96 384c0 53 86 96 192 96s192-43 192-96l0-116.6-142.9 58.9c-15.6 6.4-32.2 9.7-49.1 9.7s-33.5-3.3-49.1-9.7L96 267.4z\"]\n};\nvar faMortarBoard = faGraduationCap;\nvar faStore = {\n  prefix: 'fas',\n  iconName: 'store',\n  icon: [512, 512, [], \"f54e\", \"M30.7 72.3C37.6 48.4 59.5 32 84.4 32l344 0c24.9 0 46.8 16.4 53.8 40.3l23.4 80.2c12.8 43.7-20.1 87.5-65.6 87.5-26.3 0-49.4-14.9-60.8-37.1-11.6 21.9-34.6 37.1-61.4 37.1-26.6 0-49.7-15-61.3-37-11.6 22-34.7 37-61.3 37-26.8 0-49.8-15.1-61.4-37.1-11.4 22.1-34.5 37.1-60.8 37.1-45.6 0-78.4-43.7-65.6-87.5L30.7 72.3zM96.4 352l320 0 0-66.4c7.6 1.6 15.5 2.4 23.5 2.4 14.3 0 28-2.6 40.5-7.2l0 151.2c0 26.5-21.5 48-48 48l-352 0c-26.5 0-48-21.5-48-48l0-151.2c12.5 4.6 26.1 7.2 40.5 7.2 8.1 0 15.9-.8 23.5-2.4l0 66.4z\"]\n};\nvar faUserAstronaut = {\n  prefix: 'fas',\n  iconName: 'user-astronaut',\n  icon: [448, 512, [], \"f4fb\", \"M224 336c74.6 0 138.4-46.4 164-112l4 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24l-4 0C362.4 30.4 298.6-16 224-16S85.6 30.4 60 96l-4 0c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24l4 0c25.6 65.6 89.4 112 164 112zM208 80l32 0c53 0 96 43 96 96s-43 96-96 96l-32 0c-53 0-96-43-96-96s43-96 96-96zM16 484.6C16 499.7 28.3 512 43.4 512l52.6 0 0-48c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 48 52.6 0c15.1 0 27.4-12.3 27.4-27.4 0-59.8-31.9-112.2-79.6-141-36.4 25.5-80.6 40.4-128.4 40.4s-92-14.9-128.4-40.4C47.9 372.4 16 424.8 16 484.6zM183.3 141.5c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6-6-21.2zM152 488l0 24 48 0 0-24c0-13.3-10.7-24-24-24s-24 10.7-24 24zm120-24c-13.3 0-24 10.7-24 24l0 24 48 0 0-24c0-13.3-10.7-24-24-24z\"]\n};\nvar faBuildingFlag = {\n  prefix: 'fas',\n  iconName: 'building-flag',\n  icon: [640, 512, [], \"e4d5\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM176 352l32 0c17.7 0 32 14.3 32 32l0 80-96 0 0-80c0-17.7 14.3-32 32-32zM96 112c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM240 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM96 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm144-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM464 0c-17.7 0-32 14.3-32 32l0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288 112 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L496 32c0-17.7-14.3-32-32-32z\"]\n};\nvar faMugSaucer = {\n  prefix: 'fas',\n  iconName: 'mug-saucer',\n  icon: [576, 512, [\"coffee\"], \"f0f4\", \"M64 64c0-17.7 14.3-32 32-32l352 0c70.7 0 128 57.3 128 128S518.7 288 448 288c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L64 64zm448 96c0-35.3-28.7-64-64-64l0 128c35.3 0 64-28.7 64-64zM64 448l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCoffee = faMugSaucer;\nvar faLemon = {\n  prefix: 'fas',\n  iconName: 'lemon',\n  icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64-6.6 0-13 1-19 2.9-22.5 7-48.1 14.9-71 9-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71-1.9 6-2.9 12.4-2.9 19 0 35.3 28.7 64 64 64 6.6 0 13-1 19.1-2.9 22.5-7 48.1-14.9 71-9 75.2 19.1 156.4-11 213.7-68.3S455.2 261.2 436.1 186c-5.8-22.9 2-48.4 9-71 1.9-6 2.9-12.4 2.9-19.1zM222.7 143c-52 15.2-96.5 59.7-111.7 111.7-3.7 12.7-17.1 20-29.8 16.3S61.2 254 65 241.3c19.8-67.7 76.6-124.5 144.3-144.3 12.7-3.7 26.1 3.6 29.8 16.3s-3.6 26.1-16.3 29.8z\"]\n};\nvar faCaravan = {\n  prefix: 'fas',\n  iconName: 'caravan',\n  icon: [640, 512, [], \"f8ff\", \"M32 96c0-35.3 28.7-64 64-64l320 0c70.7 0 128 57.3 128 128l0 192 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-296.4 0c.2 2.6 .4 5.3 .4 8 0 48.6-39.4 88-88 88s-88-39.4-88-88c0-2.7 .1-5.4 .4-8L96 416c-35.3 0-64-28.7-64-64L32 96zM352 352l64 0c17.7 0 32-14.3 32-32l0-48-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 160c0 17.7 14.3 32 32 32zM160 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zm64 336a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faQ = {\n  prefix: 'fas',\n  iconName: 'q',\n  icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160 28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1c20.4-26.8 32.5-60.3 32.5-96.6 0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480 100.3 480 0 379.7 0 256S100.3 32 224 32 448 132.3 448 256c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nvar faLock = {\n  prefix: 'fas',\n  iconName: 'lock',\n  icon: [384, 512, [128274], \"f023\", \"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\"]\n};\nvar faPaintRoller = {\n  prefix: 'fas',\n  iconName: 'paint-roller',\n  icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0L352 0c35.3 0 64 28.7 64 64l16 0c44.2 0 80 35.8 80 80l0 96c0 44.2-35.8 80-80 80l-160 0c-8.8 0-16 7.2-16 16l0 18.7c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-96c0-20.9 13.4-38.7 32-45.3l0-18.7c0-44.2 35.8-80 80-80l160 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16l-16 0c0 35.3-28.7 64-64 64L64 192c-35.3 0-64-28.7-64-64L0 64z\"]\n};\nvar faVolumeHigh = {\n  prefix: 'fas',\n  iconName: 'volume-high',\n  icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C557.5 113.8 592 180.8 592 256s-34.5 142.2-88.7 186.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C598.5 426.7 640 346.2 640 256S598.5 85.2 533.6 32.5zM473.1 107c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C475.3 170.7 496 210.9 496 256s-20.7 85.3-53.2 111.8c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5c43.2-35.2 70.9-88.9 70.9-149s-27.7-113.8-70.9-149zm-60.5 74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C393.1 227.6 400 241 400 256s-6.9 28.4-17.7 37.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C434.1 312.9 448 286.1 448 256s-13.9-56.9-35.4-74.5zM80 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L128 160 80 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48z\"]\n};\nvar faVolumeUp = faVolumeHigh;\nvar faFolderPlus = {\n  prefix: 'fas',\n  iconName: 'folder-plus',\n  icon: [512, 512, [], \"f65e\", \"M512 384c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4L448 80c35.3 0 64 28.7 64 64l0 240zM256 160c-13.3 0-24 10.7-24 24l0 48-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0 0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48 48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-48c0-13.3-10.7-24-24-24z\"]\n};\nvar faMercury = {\n  prefix: 'fas',\n  iconName: 'mercury',\n  icon: [384, 512, [9791], \"f223\", \"M117-4C106-17.8 85.8-20 72.1-9s-16 31.2-5 45C74.9 45.7 83.7 54.5 93.5 62.1 46.7 93.7 16 147.3 16 208 16 294.3 78.1 366.1 160 381.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9c81.9-15 144-86.8 144-173.1 0-60.7-30.7-114.3-77.5-145.9 9.8-7.7 18.7-16.4 26.4-26.1 11.1-13.8 8.8-33.9-5-45S278-17.8 267-4c-17.6 22-44.7 36-75 36S134.7 18 117-4zm75 324c-61.9 0-112-50.1-112-112S130.1 96 192 96 304 146.1 304 208c0 61.8-50.1 112-111.9 112l-.1 0z\"]\n};\nvar faAnchor = {\n  prefix: 'fas',\n  iconName: 'anchor',\n  icon: [576, 512, [9875], \"f13d\", \"M288 64a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM192 96c0-53 43-96 96-96s96 43 96 96c0 41.8-26.7 77.4-64 90.5l0 257.9c62.9-14.3 110.2-69.7 111.9-136.5l-16.1 14.1c-10 8.7-25.1 7.7-33.9-2.3s-7.7-25.1 2.3-33.9l64-56c9-7.9 22.6-7.9 31.6 0l64 56c10 8.7 11 23.9 2.3 33.9s-23.9 11-33.9 2.3L496 307.9C493.9 421 401.6 512 288 512S82.1 421 80 307.9L63.8 322.1c-10 8.7-25.1 7.7-33.9-2.3s-7.7-25.1 2.3-33.9l64-56c9-7.9 22.6-7.9 31.6 0l64 56c10 8.7 11 23.9 2.3 33.9s-23.9 11-33.9 2.3l-16.1-14.1c1.8 66.8 49.1 122.2 111.9 136.5l0-257.9c-37.3-13.2-64-48.7-64-90.5z\"]\n};\nvar faSquareParking = {\n  prefix: 'fas',\n  iconName: 'square-parking',\n  icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM192 256l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0 64zm48 64l-48 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-184c0-22.1 17.9-40 40-40l72 0c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParking = faSquareParking;\nvar faHanukiah = {\n  prefix: 'fas',\n  iconName: 'hanukiah',\n  icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3c-5.1 8.8-18.2 33.3-18.2 52.7 0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104 8 117.3 18.7 128 32 128s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7c-5.1 8.8-18.2 33.3-18.2 52.7 0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3c-5.1 8.8-18.2 33.3-18.2 52.7 0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7c-5.1 8.8-18.2 33.3-18.2 52.7 0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 112 32 0 0-112c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176-192 0c-17.7 0-32-14.3-32-32l0-96c0-17.7-14.3-32-32-32S0 174.3 0 192l0 96c0 53 43 96 96 96l192 0 0 64-128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-64 192 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32l-192 0 0-176z\"]\n};\nvar faRotateLeft = {\n  prefix: 'fas',\n  iconName: 'rotate-left',\n  icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M24 192l144 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-46.7-46.7c75.3-58.6 184.3-53.3 253.5 15.9 75 75 75 196.5 0 271.5s-196.5 75-271.5 0c-10.2-10.2-19-21.3-26.4-33-9.5-14.9-29.3-19.3-44.2-9.8s-19.3 29.3-9.8 44.2C49.7 408.7 61.4 423.5 75 437 175 537 337 537 437 437S537 175 437 75C342.8-19.3 193.3-24.7 92.7 58.8L41 7C34.1 .2 23.8-1.9 14.8 1.8S0 14.3 0 24L0 168c0 13.3 10.7 24 24 24z\"]\n};\nvar faRotateBack = faRotateLeft;\nvar faRotateBackward = faRotateLeft;\nvar faUndoAlt = faRotateLeft;\nvar faHeading = {\n  prefix: 'fas',\n  iconName: 'heading',\n  icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 112 224 0 0-112-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 320 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-144-224 0 0 144 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-320-16 0C14.3 96 0 81.7 0 64z\"]\n};\nvar faHeader = faHeading;\nvar faCrosshairs = {\n  prefix: 'fas',\n  iconName: 'crosshairs',\n  icon: [576, 512, [], \"f05b\", \"M288-16c17.7 0 32 14.3 32 32l0 18.3c98.1 14 175.7 91.6 189.7 189.7l18.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.3 0c-14 98.1-91.6 175.7-189.7 189.7l0 18.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.3C157.9 463.7 80.3 386.1 66.3 288L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.3 0C80.3 125.9 157.9 48.3 256 34.3L256 16c0-17.7 14.3-32 32-32zM131.2 288c12.7 62.7 62.1 112.1 124.8 124.8l0-12.8c0-17.7 14.3-32 32-32s32 14.3 32 32l0 12.8c62.7-12.7 112.1-62.1 124.8-124.8L432 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l12.8 0C432.1 161.3 382.7 111.9 320 99.2l0 12.8c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-12.8C193.3 111.9 143.9 161.3 131.2 224l12.8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-12.8 0zM288 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCircleNodes = {\n  prefix: 'fas',\n  iconName: 'circle-nodes',\n  icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9 0-44.2-35.8-80-80-80-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128 35.8 128 0 163.8 0 208s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nvar faWindowRestore = {\n  prefix: 'fas',\n  iconName: 'window-restore',\n  icon: [576, 512, [], \"f2d2\", \"M512 96L160 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64l-48 0 0-64 48 0 0-192zM0 224c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 224zm64 40c0 13.3 10.7 24 24 24l240 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 240c-13.3 0-24 10.7-24 24z\"]\n};\nvar faR = {\n  prefix: 'fas',\n  iconName: 'r',\n  icon: [320, 512, [114], \"52\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 95.3 0 102.4 146.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176 320 96.5 255.5 32 176 32L32 32zM176 256l-112 0 0-160 112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faFilterCircleXmark = {\n  prefix: 'fas',\n  iconName: 'filter-circle-xmark',\n  icon: [576, 512, [], \"e17b\", \"M32 64C19.1 64 7.4 71.8 2.4 83.8S.2 109.5 9.4 118.6L192 301.3 192 416c0 8.5 3.4 16.6 9.4 22.6l64 64c2.5 2.5 5.3 4.5 8.3 6-21.2-30.9-33.6-68.3-33.6-108.6 0-99.4 75.5-181.1 172.3-191l90.4-90.4c9.2-9.2 11.9-22.9 6.9-34.9S492.9 64 480 64L32 64zM432 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGopuram = {\n  prefix: 'fas',\n  iconName: 'gopuram',\n  icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 48 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 136c26.5 0 48 21.5 48 48l0 80c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48l-48 0 0-224-32 0 0-128-48 0 0 128 32 0 0 224-224 0 0-224 32 0 0-128-48 0 0 128-32 0 0 224-48 0c-26.5 0-48-21.5-48-48L0 336c0-26.5 21.5-48 48-48l0-80c0-26.5 21.5-48 48-48L96 24c0-13.3 10.7-24 24-24zM256 208c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zM208 400l0 64 96 0 0-64c0-26.5-21.5-48-48-48s-48 21.5-48 48zM256 96c-17.7 0-32 14.3-32 32l0 32 64 0 0-32c0-17.7-14.3-32-32-32z\"]\n};\nvar faHeartCircleMinus = {\n  prefix: 'fas',\n  iconName: 'heart-circle-minus',\n  icon: [576, 512, [], \"e4ff\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nvar faStarOfLife = {\n  prefix: 'fas',\n  iconName: 'star-of-life',\n  icon: [512, 512, [], \"f621\", \"M208.5 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 140.9 122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7l-122 70.4 122 70.4c15.3 8.8 20.6 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7l-122-70.4 0 140.9c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-140.9-122 70.4c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7l122-70.4-122-70.4c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7c8.8-15.3 28.4-20.5 43.7-11.7l122 70.4 0-140.9z\"]\n};\nvar faBusinessTime = {\n  prefix: 'fas',\n  iconName: 'business-time',\n  icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M264 48l112 0c4.4 0 8 3.6 8 8l0 40-128 0 0-40c0-4.4 3.6-8 8-8zm-56 8l0 40-80 0c-35.3 0-64 28.7-64 64l0 96 305 0c33.8-29.9 78.3-48 127-48 28.6 0 55.6 6.2 80 17.4l0-65.4c0-35.3-28.7-64-64-64l-80 0 0-40c0-30.9-25.1-56-56-56L264 0c-30.9 0-56 25.1-56 56zm80 296c-17.7 0-32-14.3-32-32l0-16-192 0 0 112c0 35.3 28.7 64 64 64l193.4 0c-11.2-24.4-17.4-51.4-17.4-80 0-16.6 2.1-32.7 6-48l-22 0zm352 48a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 320c8.8 0 16 7.2 16 16l0 48 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16z\"]\n};\nvar faBriefcaseClock = faBusinessTime;\nvar faFireExtinguisher = {\n  prefix: 'fas',\n  iconName: 'fire-extinguisher',\n  icon: [512, 512, [129519], \"f134\", \"M512 32c0-9.6-4.3-18.7-11.7-24.7S483.1-1.3 473.7 .6l-160 32C301.5 35.1 292 44.3 289 56l-65 0 0-24c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32l0 28.4c-55.3 12.3-101.3 49.5-125.5 99.1-5.8 11.9-.9 26.3 11.1 32.1s26.3 .9 32.1-11.1C62 146.9 91.8 121.1 128 110l0 28.8c-37.8 18-64 56.5-64 101.2l0 128 224 0 0-128c0-44.7-26.2-83.2-64-101.2l0-34.8 65 0c3 11.7 12.5 20.9 24.7 23.4l160 32c9.4 1.9 19.1-.6 26.6-6.6S512 137.6 512 128l0-96zM288 448l0-32-224 0 0 32c0 35.3 28.7 64 64 64l96 0c35.3 0 64-28.7 64-64z\"]\n};\nvar faArrowDownLong = {\n  prefix: 'fas',\n  iconName: 'arrow-down-long',\n  icon: [320, 512, [\"long-arrow-down\"], \"f175\", \"M137.4 534.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 434.7 192 0c0-17.7-14.3-32-32-32S128-17.7 128 0l0 434.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nvar faLongArrowDown = faArrowDownLong;\nvar faUserMinus = {\n  prefix: 'fas',\n  iconName: 'user-minus',\n  icon: [640, 512, [], \"f503\", \"M285.7 304c98.5 0 178.3 79.8 178.3 178.3 0 16.4-13.3 29.7-29.7 29.7L77.7 512C61.3 512 48 498.7 48 482.3 48 383.8 127.8 304 226.3 304l59.4 0zM256 248a120 120 0 1 1 0-240 120 120 0 1 1 0 240zm344-96c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l144 0z\"]\n};\nvar faMoneyCheck = {\n  prefix: 'fas',\n  iconName: 'money-check',\n  icon: [512, 512, [], \"f53c\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM96 312c0 13.3 10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0c-13.3 0-24 10.7-24 24zm24-136c-13.3 0-24 10.7-24 24s10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-272 0z\"]\n};\nvar faHouseLaptop = {\n  prefix: 'fas',\n  iconName: 'house-laptop',\n  icon: [640, 512, [\"laptop-house\"], \"e066\", \"M448 240l19.9 0c15.5 0 28.1-12.6 28.1-28.1 0-7.6-3.1-14.9-8.6-20.2L283.5-4.9C276.1-12 266.3-16 256-16s-20.1 4-27.5 11.1L24.6 191.7C19.1 197 16 204.3 16 211.9 16 227.4 28.6 240 44.1 240l19.9 0 0 144c0 35.3 28.7 64 64 64l85.7 0c7.4-6.6 16.4-11.4 26.3-14l0-130c0-5.5 .7-10.9 2-16l-10 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24 144 0zM352 352l160 0 0 128-160 0 0-128zm-64-32l0 160-32 0c-8.8 0-16 7.2-16 16 0 26.5 21.5 48 48 48l288 0c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16l-32 0 0-160c0-17.7-14.3-32-32-32l-224 0c-17.7 0-32 14.3-32 32z\"]\n};\nvar faLaptopHouse = faHouseLaptop;\nvar faDownload = {\n  prefix: 'fas',\n  iconName: 'download',\n  icon: [448, 512, [], \"f019\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 242.7 256 32zM64 320c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-46.9 0-56.6 56.6c-31.2 31.2-81.9 31.2-113.1 0L110.9 320 64 320zm304 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSagittarius = {\n  prefix: 'fas',\n  iconName: 'sagittarius',\n  icon: [448, 512, [], \"e84d\", \"M416 32c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.8-146.8 146.8 41.4 41.4c12.5 12.5 12.5 32.8 0 45.2s-32.8 12.5-45.3 0L192 333.3 54.6 470.6c-12.5 12.5-32.8 12.5-45.2 0s-12.5-32.8 0-45.2L146.8 288 105.4 246.6c-12.5-12.5-12.5-32.8 0-45.2s32.8-12.5 45.2 0L192 242.8 338.8 96 256 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0z\"]\n};\nvar faCouch = {\n  prefix: 'fas',\n  iconName: 'couch',\n  icon: [640, 512, [], \"f4b8\", \"M144 272C144 224.7 109.8 185.4 64.8 177.5 72 113.6 126.2 64 192 64l256 0c65.8 0 120 49.6 127.2 113.5-45 8-79.2 47.2-79.2 94.5l0 32-352 0 0-32zM0 384L0 272c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 448 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64z\"]\n};\nvar faRoadLock = {\n  prefix: 'fas',\n  iconName: 'road-lock',\n  icon: [576, 512, [], \"e567\", \"M256 32l-76.3 0c-29.4 0-55.1 20.1-62.1 48.6L33.4 420.5C25.9 450.7 48.8 480 80 480l175.9 0 0-64c0-17.7 14.3-32 32-32 6.1 0 11.8 1.7 16.7 4.7 2.8-23.9 14.3-45.1 31.4-60.3l0-24.4c0-70.7 57.3-128 128-128 6.2 0 12.4 .4 18.4 1.3L458.5 80.6C451.4 52.1 425.8 32 396.3 32l-76.4 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 80.1l0 47.9-64 0 0-47.9c0-17.7 14.3-32 32-32s32 14.3 32 32zM352 400l0 96c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-96c0-20.9-13.4-38.7-32-45.3l0-50.6c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 50.6c-18.6 6.6-32 24.4-32 45.3z\"]\n};\nvar faScissors = {\n  prefix: 'fas',\n  iconName: 'scissors',\n  icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6-28.3-28.3-74.1-28.3-102.4 0L256 192 216.5 152.5c4.9-12.6 7.5-26.2 7.5-40.5 0-61.9-50.1-112-112-112S0 50.1 0 112 50.1 224 112 224c14.3 0 27.9-2.7 40.5-7.5L192 256zm97.9 97.9L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0 7.1-7.1 7.1-18.5 0-25.6l-145.3-145.3-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCut = faScissors;\nvar faBug = {\n  prefix: 'fas',\n  iconName: 'bug',\n  icon: [576, 512, [], \"f188\", \"M192 96c0-53 43-96 96-96s96 43 96 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4l-135.1 0c-15.7 0-28.4-12.7-28.4-28.4l0-3.6zm345.6 12.8c10.6 14.1 7.7 34.2-6.4 44.8l-97.8 73.3c5.3 8.9 9.3 18.7 11.8 29.1l98.8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 32c0 2.6-.1 5.3-.2 7.9l83.4 62.5c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4l-63.1-47.3c-23.2 44.2-66.5 76.2-117.7 83.9L312 280c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 230.2c-51.2-7.7-94.5-39.7-117.7-83.9L83.2 473.6c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l83.4-62.5c-.1-2.6-.2-5.2-.2-7.9l0-32-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l98.8 0c2.5-10.4 6.5-20.2 11.8-29.1L44.8 153.6c-14.1-10.6-17-30.7-6.4-44.8s30.7-17 44.8-6.4L192 184c12.3-5.1 25.8-8 40-8l112 0c14.2 0 27.7 2.8 40 8l108.8-81.6c14.1-10.6 34.2-7.7 44.8 6.4z\"]\n};\nvar faArrowRightFromBracket = {\n  prefix: 'fas',\n  iconName: 'arrow-right-from-bracket',\n  icon: [512, 512, [\"sign-out\"], \"f08b\", \"M160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0zM502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignOut = faArrowRightFromBracket;\nvar faHandHoldingHand = {\n  prefix: 'fas',\n  iconName: 'hand-holding-hand',\n  icon: [576, 512, [], \"e4f7\", \"M466.8 186.5l42.5-42.5 34.7 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L223.6 16c-29 0-57.3 9.3-80.7 26.5L16.3 135.8c-17.8 13.1-21.6 38.1-8.5 55.9s38.1 21.6 55.9 8.5L183.4 112 296 112c13.3 0 24 10.7 24 24s-10.7 24-24 24l-72 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l152.2 0c33.9 0 66.5-13.5 90.5-37.5zm-357.5 139L66.7 368 32 368c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l320.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 400 280 400c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-152.2 0c-33.9 0-66.5 13.5-90.5 37.5z\"]\n};\nvar faStroopwafel = {\n  prefix: 'fas',\n  iconName: 'stroopwafel',\n  icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3-33.9-33.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3 45.3 45.3-45.3 45.3-45.3-45.3zm67.9 67.9l45.3-45.3 45.3 45.3-45.3 45.3-45.3-45.3zM278.6 256l45.3-45.3 45.3 45.3-45.3 45.3-45.3-45.3zm22.6-67.9l-45.3 45.3-45.3-45.3 45.3-45.3 45.3 45.3z\"]\n};\nvar faChild = {\n  prefix: 'fas',\n  iconName: 'child',\n  icon: [320, 512, [], \"f1ae\", \"M96 64A64 64 0 1 1 224 64 64 64 0 1 1 96 64zm48 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32L80 287.8 59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8 240 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0z\"]\n};\nvar faIceCream = {\n  prefix: 'fas',\n  iconName: 'ice-cream',\n  icon: [384, 512, [127848], \"f810\", \"M335.1 160c.6-5.3 .9-10.6 .9-16 0-79.5-64.5-144-144-144S48 64.5 48 144c0 5.4 .3 10.7 .9 16l-.9 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l288 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-.9 0zM64 304L169.2 529.5c4.1 8.8 13 14.5 22.8 14.5s18.6-5.7 22.8-14.5L320 304 64 304z\"]\n};\nvar faComputerMouse = {\n  prefix: 'fas',\n  iconName: 'computer-mouse',\n  icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192l168 0 0-192-8 0C71.6 0 0 71.6 0 160l0 32zm0 48L0 352c0 88.4 71.6 160 160 160l64 0c88.4 0 160-71.6 160-160l0-112-384 0zm384-48l0-32C384 71.6 312.4 0 224 0l-8 0 0 192 168 0z\"]\n};\nvar faMouse = faComputerMouse;\nvar faFaucet = {\n  prefix: 'fas',\n  iconName: 'faucet',\n  icon: [512, 512, [], \"e005\", \"M192 64c0-17.7 14.3-32 32-32s32 14.3 32 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 64 18.7 0c8.5 0 16.6 3.4 22.6 9.4l22.6 22.6 32 0c88.4 0 160 71.6 160 160 0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s-14.3-32-32-32l-36.1 0c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48L32 352c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l96 0 22.6-22.6c6-6 14.1-9.4 22.6-9.4l18.7 0 0-64-96 0c-17.7 0-32-14.3-32-32S78.3 64 96 64l96 0z\"]\n};\nvar faAward = {\n  prefix: 'fas',\n  iconName: 'award',\n  icon: [448, 512, [], \"f559\", \"M245.9-25.9c-13.4-8.2-30.3-8.2-43.7 0-24.4 14.9-39.5 18.9-68.1 18.3-15.7-.4-30.3 8.1-37.9 21.9-13.7 25.1-24.8 36.2-49.9 49.9-13.8 7.5-22.2 22.2-21.9 37.9 .7 28.6-3.4 43.7-18.3 68.1-8.2 13.4-8.2 30.3 0 43.7 14.9 24.4 18.9 39.5 18.3 68.1-.4 15.7 8.1 30.3 21.9 37.9 22.1 12.1 33.3 22.1 45.1 41.5L42.7 458.5c-5.9 11.9-1.1 26.3 10.7 32.2l86 43c11.5 5.7 25.5 1.4 31.7-9.8l52.8-95.1 52.8 95.1c6.2 11.2 20.2 15.6 31.7 9.8l86-43c11.9-5.9 16.7-20.3 10.7-32.2l-48.6-97.2c11.7-19.4 23-29.4 45.1-41.5 13.8-7.5 22.2-22.2 21.9-37.9-.7-28.6 3.4-43.7 18.3-68.1 8.2-13.4 8.2-30.3 0-43.7-14.9-24.4-18.9-39.5-18.3-68.1 .4-15.7-8.1-30.3-21.9-37.9-25.1-13.7-36.2-24.8-49.9-49.9-7.5-13.8-22.2-22.2-37.9-21.9-28.6 .7-43.7-3.4-68.1-18.3zM224 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPersonDrowning = {\n  prefix: 'fas',\n  iconName: 'person-drowning',\n  icon: [640, 512, [], \"e545\", \"M264 88a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM133.9 65.6c16.8-5.6 34.9 3.5 40.5 20.2l10.9 32.8c9.4 28.3 33.2 49.5 62.5 55.6 5.6 1.2 11.3 1.8 17.1 1.8l88 0c17.2 0 34.3-2.8 50.6-8.2l114.4-38.1c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L423.7 228.5c-8.4 2.8-17 5.1-25.7 6.9l-26.5 88.3c-6.1 3.4-12.1 7.3-17.9 11.7-22.1 16.6-29.1 16.6-51.2 0-26.2-19.7-56.9-30.2-87.8-31.3l20.2-67.2c-51.5-10.7-93.5-48.1-110.2-98l-10.9-32.8c-5.6-16.8 3.5-34.9 20.2-40.5zM403.4 412.1C379.1 430.3 351.1 448 320 448s-59.1-17.7-83.4-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.5-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0z\"]\n};\nvar faCameraRotate = {\n  prefix: 'fas',\n  iconName: 'camera-rotate',\n  icon: [512, 512, [], \"e0d8\", \"M138.7 96l10.4-31.2C155.6 45.2 173.9 32 194.6 32l122.8 0c20.7 0 39 13.2 45.5 32.8L373.3 96 448 96c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64l74.7 0zM96 305.9c0 3.9 1.4 7.7 4 10.6l48 54c6.4 7.2 17.6 7.2 23.9 0l48-54c2.6-2.9 4-6.7 4-10.6l0-1.9c0-8.8-7.2-16-16-16l-24 0c0-39.8 32.2-72 72-72 4.4 0 8.7 .4 12.9 1.2l34.9-39.3c-14.6-6.4-30.8-9.9-47.8-9.9-66.3 0-120 53.7-120 120l-24 0c-8.8 0-16 7.2-16 16l0 1.9zm196-46.5c-2.6 2.9-4 6.7-4 10.6l0 1.9c0 8.8 7.2 16 16 16l24 0c0 39.8-32.2 72-72 72-4.4 0-8.7-.4-12.9-1.2l-34.9 39.3c14.7 6.4 30.8 9.9 47.8 9.9 66.3 0 120-53.7 120-120l24 0c8.8 0 16-7.2 16-16l0-1.9c0-3.9-1.4-7.7-4-10.6l-48-54c-6.4-7.2-17.6-7.2-23.9 0l-48 54z\"]\n};\nvar faFaceGrinHearts = {\n  prefix: 'fas',\n  iconName: 'face-grin-hearts',\n  icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512c141.4 0 256-114.6 256-256 0-23.3-3.1-45.9-8.9-67.3 5.5-13.5 8.9-28.4 8.9-44.7 0-53-43-96-96-96l-2.9 0c-2.5 0-5 .1-7.4 .3-42.1-30.4-93.8-48.3-149.7-48.3S148.4 17.9 106.3 48.3c-2.5-.2-4.9-.3-7.4-.3L96 48c-53 0-96 43-96 96 0 16.3 3.5 31.2 8.9 44.7-5.8 21.4-8.9 44-8.9 67.3 0 141.4 114.6 256 256 256zM386.7 324.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 404.2 105.7 342.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM322.9 96c13.5 0 26.5 5.4 36 14.9l9.1 9.1 9.1-9.1c9.5-9.5 22.5-14.9 36-14.9l2.9 0c26.5 0 48 21.5 48 48 0 53.4-66.9 95.7-89 108.2-4.4 2.5-9.6 2.5-14 0-22.1-12.5-89-54.8-89-108.2 0-26.5 21.5-48 48-48l2.9 0zm-188 14.9l9.1 9.1 9.1-9.1c9.5-9.5 22.5-14.9 36-14.9l2.9 0c26.5 0 48 21.5 48 48 0 53.4-66.9 95.7-89 108.2-4.4 2.5-9.6 2.5-14 0-22.1-12.5-89-54.8-89-108.2 0-26.5 21.5-48 48-48l2.9 0c13.5 0 26.5 5.4 36 14.9z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faFileFragment = {\n  prefix: 'fas',\n  iconName: 'file-fragment',\n  icon: [384, 512, [], \"e697\", \"M64 0C28.7 0 0 28.7 0 64l0 240 128 0c44.2 0 80 35.8 80 80l0 128 112 0c35.3 0 64-28.7 64-64l0-277.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176zM32 352c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0z\"]\n};\nvar faPersonMilitaryRifle = {\n  prefix: 'fas',\n  iconName: 'person-military-rifle',\n  icon: [448, 512, [], \"e54b\", \"M128 39c0-13 10-23.8 22.9-24.9L302.7 1.4C312 .7 320 8 320 17.4L320 48c0 8.8-7.2 16-16 16L153 64c-13.8 0-25-11.2-25-25zm17.6 57l156.8 0c1 5.2 1.6 10.5 1.6 16 0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L320 369.7 320 480c0 1.3-.1 2.5-.2 3.8L145.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9l50.4 0c15.9 0 31.3 2.8 45.8 7.9L389.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l27.7 16c7.7 4.4 10.3 14.2 5.9 21.9l-55.5 96.1 1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L360.7 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM288 512l-128 0c-17.7 0-32-14.3-32-32l0-110.3-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1S-5.7 438.7 5.6 419.7L81.7 290.8c9.4-15.8 21.7-29.3 36-40L299.1 510c-3.5 1.3-7.2 2-11.1 2zM264 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faToggleOn = {\n  prefix: 'fas',\n  iconName: 'toggle-on',\n  icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192S490 64 384 64L192 64zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faLungsVirus = {\n  prefix: 'fas',\n  iconName: 'lungs-virus',\n  icon: [576, 512, [], \"e067\", \"M288 0c-17.7 0-32 14.3-32 32l0 151.3c9.6-4.8 20.5-7.5 32-7.5s22.4 2.7 32 7.5L320 32c0-17.7-14.3-32-32-32zM450.1 451c8 18.3 8.1 39.2 .2 57.5 10.2 2.3 20.6 3.5 31.2 3.5 52.2 0 94.5-42.3 94.5-94.5l0-6.2c0-111.1-36.7-219-104.4-307L428.9 48.7c-8.1-10.6-20.7-16.7-34-16.7-23.7 0-42.9 19.2-42.9 42.9l0 139.9c1.2 2.2 2.2 4.6 3.1 6.9 26.4-11.6 58.3-6.6 79.9 15s26.6 53.6 15 79.9C477 327.2 496 353.3 496 383.8s-19 56.7-45.9 67.1zM220.9 221.8c.9-2.4 2-4.7 3.1-6.9l0-138.5c0-24.5-19.9-44.4-44.4-44.4-12.5 0-24.4 5.3-32.8 14.5l-26.4 29C42.9 160.8 0 271.8 0 387l0 30.5c0 52.2 42.3 94.5 94.5 94.5 10.5 0 21-1.2 31.2-3.5-7.9-18.3-7.8-39.3 .2-57.5-26.9-10.4-45.9-36.6-45.9-67.1s19-56.7 45.9-67.1c-11.6-26.4-6.6-58.3 15-79.9s53.6-26.6 79.9-15zM152 408c28.8 0 43.2 34.8 22.9 55.2-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9 0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9 9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-20.4-20.4-5.9-55.2 22.9-55.2 13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2 9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-20.4 20.4-55.2 5.9-55.2-22.9 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-80a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 88a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTableTennisPaddleBall = {\n  prefix: 'fas',\n  iconName: 'table-tennis-paddle-ball',\n  icon: [512, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M97 127l67.4-67.4c38.2-38.2 90-59.6 144-59.6 112.5 0 203.7 91.2 203.7 203.6 0 46.4-15.8 91.1-44.5 127-23.6-16.8-52.4-26.7-83.5-26.7-31.1 0-59.9 9.9-83.4 26.6L97 127zM240 448c0 9.7 1 19.1 2.8 28.2-19.8-5.2-38-15.5-52.7-30.2-12.2-12.2-31.9-12.2-44.1 0L96.6 495.4c-10.6 10.6-25 16.6-40 16.6-31.2 0-56.6-25.3-56.6-56.6 0-15 6-29.4 16.6-40l49.4-49.4c12.2-12.2 12.2-31.9 0-44.1-21.7-21.7-33.9-51.2-33.9-81.9 0-29.4 11.1-57.6 31.1-79L266.6 364.6C249.9 388.1 240 416.9 240 448zm144-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPingPongPaddleBall = faTableTennisPaddleBall;\nvar faTableTennis = faTableTennisPaddleBall;\nvar faBoxesPacking = {\n  prefix: 'fas',\n  iconName: 'boxes-packing',\n  icon: [576, 512, [], \"e4c7\", \"M208 0l80 0 0 56c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-56 80 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-108.8 0c8.2-14.1 12.8-30.5 12.8-48l0-160c10-13.4 16-30 16-48l0-32c0-44.2-35.8-80-80-80l-176 0 0-96c0-26.5 21.5-48 48-48zM32 336l320 0 0 128c0 26.5-21.5 48-48 48L80 512c-26.5 0-48-21.5-48-48l0-128zM48 192l288 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32z\"]\n};\nvar faPersonChalkboard = {\n  prefix: 'fas',\n  iconName: 'person-chalkboard',\n  icon: [640, 512, [], \"e53d\", \"M192 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM176 512l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-48 192 0 0 192-192 0 0-32-64 0 0 48c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 64-122.7 0c-45.6 0-88.5 21.6-115.6 58.2L14.3 260.9c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L112 236.7 112 512c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faDiceTwo = {\n  prefix: 'fas',\n  iconName: 'dice-two',\n  icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faArrowRightArrowLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-right-arrow-left',\n  icon: [512, 512, [8644, \"exchange\"], \"f0ec\", \"M502.6 150.6l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L402.7 160 32 160c-17.7 0-32-14.3-32-32S14.3 96 32 96l370.7 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3zm-397.3 352l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 352 480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32l-370.7 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faExchange = faArrowRightArrowLeft;\nvar faFootball = {\n  prefix: 'fas',\n  iconName: 'football',\n  icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M261.1 22.6c-89 18-150.5 63.4-190 123.9-23.3 35.6-38.1 75.3-46.7 115.5L251.9 489.4c89-18 150.5-63.4 190.1-123.9 23.3-35.6 38.1-75.3 46.7-115.5L261.1 22.6zm236 168.1c3.2-42.3 .7-83.3-4.8-118.7-4.4-27.8-26.8-48-53.1-51.6-43-5.9-82.2-7.5-117.8-5.4L497.1 190.6zM191.7 497.1L15.9 321.4c-3.2 42.3-.7 83.3 4.8 118.7 4.4 27.8 26.8 48 53.1 51.6 43 5.9 82.2 7.5 117.8 5.4zM271.5 143c9.4-9.4 24.6-9.4 33.9 0l64 64c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9zm-64 64c9.4-9.4 24.6-9.4 33.9 0l64 64c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9zm-64 64c9.4-9.4 24.6-9.4 33.9 0l64 64c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faFootballBall = faFootball;\nvar faTruckMonster = {\n  prefix: 'fas',\n  iconName: 'truck-monster',\n  icon: [576, 512, [], \"f63b\", \"M336 96l48 64-128 0 0-64 80 0zm128 64L387.2 57.6C375.1 41.5 356.1 32 336 32L224 32c-17.7 0-32 14.3-32 32l0 96-144 0c-26.5 0-48 21.5-48 48l0 64c0 18.1 10.1 33.9 24.9 42.1-.5 5.7 1.1 11.6 4.7 16.4-3.7 6.9-6.8 14.1-9 21.8-11.6 1.7-20.6 11.7-20.6 23.8l0 16c0 12.1 8.9 22.1 20.6 23.8 2.2 7.6 5.3 14.9 9 21.8-7 9.4-6.3 22.8 2.3 31.3l11.3 11.3c8.6 8.6 21.9 9.3 31.3 2.2 6.8 3.7 14.1 6.8 21.7 9 1.7 11.6 11.7 20.6 23.8 20.6l16 0c12.1 0 22.1-8.9 23.8-20.6 7.6-2.2 14.9-5.3 21.7-9 9.4 7 22.8 6.3 31.3-2.2l11.3-11.3c8.6-8.6 9.3-21.9 2.3-31.3 3.7-6.8 6.8-14.1 9-21.7 11.6-1.7 20.6-11.7 20.6-23.8l0-16c0-12.1-8.9-22.1-20.6-23.8-2.2-7.6-5.3-14.9-9-21.7 2.4-3.2 3.9-6.8 4.5-10.5l114.2 0c.6 3.7 2.1 7.3 4.5 10.5-3.7 6.9-6.8 14.1-9 21.8-11.6 1.7-20.6 11.7-20.6 23.8l0 16c0 12.1 8.9 22.1 20.6 23.8 2.2 7.6 5.3 14.9 9 21.8-7 9.4-6.3 22.8 2.2 31.3l11.3 11.3c8.5 8.6 21.9 9.3 31.3 2.2 6.8 3.7 14.1 6.8 21.7 9 1.7 11.6 11.7 20.6 23.8 20.6l16 0c12.1 0 22.1-8.9 23.8-20.6 7.6-2.2 14.9-5.3 21.8-9 9.4 7 22.8 6.3 31.3-2.2l11.3-11.3c8.6-8.6 9.3-21.9 2.2-31.3 3.7-6.8 6.8-14.1 9-21.7 11.6-1.7 20.6-11.7 20.6-23.8l0-16c0-12.1-8.9-22.1-20.6-23.8-2.2-7.6-5.3-14.9-9-21.7 3.6-4.8 5.2-10.7 4.7-16.4 14.8-8.2 24.9-23.9 24.9-42.1l0-64c0-26.5-21.5-48-48-48l-64 0zM128 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faAsterisk = {\n  prefix: 'fas',\n  iconName: 'asterisk',\n  icon: [448, 512, [10033, 61545], \"2a\", \"M224 0c17.7 0 32 14.3 32 32l0 168.6 144-83.1c15.3-8.8 34.9-3.6 43.7 11.7s3.6 34.9-11.7 43.7L288 256 432 339.1c15.3 8.8 20.6 28.4 11.7 43.7s-28.4 20.6-43.7 11.7L256 311.4 256 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-168.6-144 83.1c-15.3 8.8-34.9 3.6-43.7-11.7S.7 348 16 339.1L160 256 16 172.9C.7 164-4.5 144.5 4.3 129.1S32.7 108.6 48 117.4L192 200.6 192 32c0-17.7 14.3-32 32-32z\"]\n};\nvar faBatteryFull = {\n  prefix: 'fas',\n  iconName: 'battery-full',\n  icon: [640, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M528 128c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-416 0c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16l416 0zM112 64c-44.2 0-80 35.8-80 80l0 224c0 44.2 35.8 80 80 80l416 0c44.2 0 80-35.8 80-80l0-48c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80L112 64zm56 112c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l304 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-304 0z\"]\n};\nvar faBattery = faBatteryFull;\nvar faBattery5 = faBatteryFull;\nvar faChildDress = {\n  prefix: 'fas',\n  iconName: 'child-dress',\n  icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64 64 64 0 1 0 224 64zM88 400l0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 16 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 17.8 0c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.7 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2L86.2 285.5 55 378.9C51.6 389.3 59.3 400 70.2 400L88 400z\"]\n};\nvar faFaceKissBeam = {\n  prefix: 'fas',\n  iconName: 'face-kiss-beam',\n  icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM240 288l32 0c26.5 0 48 21.5 48 48 0 12.3-4.6 23.5-12.2 32 7.6 8.5 12.2 19.7 12.2 32 0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM176 180c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zm132 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faTrashCanArrowUp = {\n  prefix: 'fas',\n  iconName: 'trash-can-arrow-up',\n  icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M167.1-16l113.9 0c13.8 0 26 8.8 30.4 21.9L320 32 416 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 8.7-26.1C141.1-7.2 153.3-16 167.1-16zM32 144l384 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-304zm209 79c-9.4-9.4-24.6-9.4-33.9 0l-72 72c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l31-31 0 102.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-102.1 31 31c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTrashRestoreAlt = faTrashCanArrowUp;\nvar faFont = {\n  prefix: 'fas',\n  iconName: 'font',\n  icon: [512, 512, [], \"f031\", \"M285.1 50.7C279.9 39.3 268.5 32 256 32s-23.9 7.3-29.1 18.7L59.5 416 48 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l88 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-6.1 0 22-48 208.3 0 22 48-6.1 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l88 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0-167.4-365.3zM330.8 304L181.2 304 256 140.8 330.8 304z\"]\n};\nvar faBoreHole = {\n  prefix: 'fas',\n  iconName: 'bore-hole',\n  icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32l0 232.6c-19.1 11.1-32 31.7-32 55.4 0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4L288 32c0-17.7-14.3-32-32-32zM0 384l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-272c0-26.5-21.5-48-48-48l-48 0c-26.5 0-48 21.5-48 48l0 144c0 61.9-50.1 112-112 112S144 381.9 144 320l0-144c0-26.5-21.5-48-48-48l-48 0c-26.5 0-48 21.5-48 48L0 384z\"]\n};\nvar faVirusCovid = {\n  prefix: 'fas',\n  iconName: 'virus-covid',\n  icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 33.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-11.3-11.3-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3l33.6 0 0-16c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-33.6 0c-4.2 30.7-16.3 58.8-34.1 82.3l23.8 23.8 11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l11.3-11.3-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1l0 33.6 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-33.6c-30.7-4.2-58.8-16.3-82.3-34.1l-23.8 23.8 11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l11.3 11.3 23.8-23.8C97.9 338.8 85.8 310.7 81.6 280l-33.6 0 0 16c0 13.3-10.7 24-24 24S0 309.3 0 296l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24l0 16 33.6 0c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92 149.7 115.7c23.5-17.9 51.7-29.9 82.3-34.1l0-33.6-16 0c-13.3 0-24-10.7-24-24zm32 200a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFilePdf = {\n  prefix: 'fas',\n  iconName: 'file-pdf',\n  icon: [576, 512, [], \"f1c1\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l80 0 0-112c0-35.3 28.7-64 64-64l176 0 0-165.5c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM240 380c-11 0-20 9-20 20l0 128c0 11 9 20 20 20s20-9 20-20l0-28 12 0c33.1 0 60-26.9 60-60s-26.9-60-60-60l-32 0zm32 80l-12 0 0-40 12 0c11 0 20 9 20 20s-9 20-20 20zm96-80c-11 0-20 9-20 20l0 128c0 11 9 20 20 20l32 0c28.7 0 52-23.3 52-52l0-64c0-28.7-23.3-52-52-52l-32 0zm20 128l0-88 12 0c6.6 0 12 5.4 12 12l0 64c0 6.6-5.4 12-12 12l-12 0zm88-108l0 128c0 11 9 20 20 20s20-9 20-20l0-44 28 0c11 0 20-9 20-20s-9-20-20-20l-28 0 0-24 28 0c11 0 20-9 20-20s-9-20-20-20l-48 0c-11 0-20 9-20 20z\"]\n};\nvar faLanguage = {\n  prefix: 'fas',\n  iconName: 'language',\n  icon: [576, 512, [], \"f1ab\", \"M160 0c17.7 0 32 14.3 32 32l0 32 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-9.6 0-8.4 23.1c-16.4 45.2-41.1 86.5-72.2 122 14.2 8.8 29 16.6 44.4 23.5l50.4 22.4 62.2-140c5.1-11.6 16.6-19 29.2-19s24.1 7.4 29.2 19l128 288c7.2 16.2-.1 35.1-16.2 42.2s-35.1-.1-42.2-16.2l-20-45-157.5 0-20 45c-7.2 16.2-26.1 23.4-42.2 16.2s-23.4-26.1-16.2-42.2l39.8-89.5-50.4-22.4c-23-10.2-45-22.4-65.8-36.4-21.3 17.2-44.6 32.2-69.5 44.7L78.3 380.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9l34.5-17.3c16.3-8.2 31.8-17.7 46.4-28.3-13.8-12.7-26.8-26.4-38.9-40.9L81.6 224.7c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l10.2 12.2c11.5 13.9 24.1 26.8 37.4 38.7 27.5-30.4 49.2-66.1 63.5-105.4l.5-1.2-210.3 0C14.3 128 0 113.7 0 96S14.3 64 32 64l96 0 0-32c0-17.7 14.3-32 32-32zM416 270.8L365.7 384 466.3 384 416 270.8z\"]\n};\nvar faShieldHalved = {\n  prefix: 'fas',\n  iconName: 'shield-halved',\n  icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0zm0 66.8l0 378.1c138-66.8 175.1-214.8 176-303.4l-176-74.6 0 0z\"]\n};\nvar faShieldAlt = faShieldHalved;\nvar faCaretUp = {\n  prefix: 'fas',\n  iconName: 'caret-up',\n  icon: [320, 512, [], \"f0d8\", \"M140.3 135.2c12.6-10.3 31.1-9.5 42.8 2.2l128 128c9.2 9.2 11.9 22.9 6.9 34.9S301.4 320 288.5 320l-256 0c-12.9 0-24.6-7.8-29.6-19.8S.7 274.5 9.9 265.4l128-128 2.4-2.2z\"]\n};\nvar faFilePen = {\n  prefix: 'fas',\n  iconName: 'file-pen',\n  icon: [640, 512, [128221, \"file-edit\"], \"f31c\", \"M128.1 0c-35.3 0-64 28.7-64 64l0 384c0 35.3 28.7 64 64 64l146.2 0 10.9-54.5c4.3-21.7 15-41.6 30.6-57.2l132.2-132.2 0-97.5c0-17-6.7-33.3-18.7-45.3L322.8 18.7C310.8 6.7 294.5 0 277.6 0L128.1 0zM389.6 176l-93.5 0c-13.3 0-24-10.7-24-24l0-93.5 117.5 117.5zM332.3 466.9l-11.9 59.6c-.2 .9-.3 1.9-.3 2.9 0 8 6.5 14.6 14.6 14.6 1 0 1.9-.1 2.9-.3l59.6-11.9c12.4-2.5 23.8-8.6 32.7-17.5l118.9-118.9-80-80-118.9 118.9c-8.9 8.9-15 20.3-17.5 32.7zm267.8-123c22.1-22.1 22.1-57.9 0-80s-57.9-22.1-80 0l-28.8 28.8 80 80 28.8-28.8z\"]\n};\nvar faFileEdit = faFilePen;\nvar faPersonBiking = {\n  prefix: 'fas',\n  iconName: 'person-biking',\n  icon: [576, 512, [128692, \"biking\"], \"f84a\", \"M368 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L256 305.1 256 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-10.7-5.3-20.7-14.2-26.6L263 232.9 323.3 184.4 364 217c5.7 4.5 12.7 7 20 7l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.8 0zM112 512a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm352 0a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nvar faBiking = faPersonBiking;\nvar faBookOpenReader = {\n  prefix: 'fas',\n  iconName: 'book-open-reader',\n  icon: [512, 512, [\"book-reader\"], \"f5da\", \"M256 152a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm0 298.7l0-149.3c16.3-6.8 32.9-13.7 49.7-20.7 39-16.2 80.8-24.6 123.1-24.6l19.2 0 0 160-19.2 0c-59.1 0-117.7 11.7-172.3 34.5l-.5 .2zM256 232l-25.1-10.5C184.1 202 133.9 192 83.2 192L48 192c-26.5 0-48 21.5-48 48L0 432c0 26.5 21.5 48 48 48l35.2 0c50.7 0 100.9 10 147.7 29.5l12.8 5.3c7.9 3.3 16.7 3.3 24.6 0l12.8-5.3c46.8-19.5 97-29.5 147.7-29.5l35.2 0c26.5 0 48-21.5 48-48l0-192c0-26.5-21.5-48-48-48l-35.2 0c-50.7 0-100.9 10-147.7 29.5L256 232z\"]\n};\nvar faBookReader = faBookOpenReader;\nvar faGlassWaterDroplet = {\n  prefix: 'fas',\n  iconName: 'glass-water-droplet',\n  icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM83 297.5L66.4 64 317.6 64 301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5-6.1-7.7-17.5-7.7-23.6 0-18.5 23.4-52.2 69.5-52.2 93.5 0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nvar faTowerBroadcast = {\n  prefix: 'fas',\n  iconName: 'tower-broadcast',\n  icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M87.9 11.5c-11.3-6.9-26.1-3.2-33 8.1-24.8 41-39 89.1-39 140.4s14.2 99.4 39 140.4c6.9 11.3 21.6 15 33 8.1s15-21.6 8.1-33C75.7 241.9 64 202.3 64 160S75.7 78.1 96.1 44.4c6.9-11.3 3.2-26.1-8.1-33zm400.1 0c-11.3 6.9-15 21.6-8.1 33 20.4 33.7 32.1 73.3 32.1 115.6s-11.7 81.9-32.1 115.6c-6.9 11.3-3.2 26.1 8.1 33s26.1 3.2 33-8.1c24.8-41 39-89.1 39-140.4S545.8 60.6 521 19.6c-6.9-11.3-21.6-15-33-8.1zM320 215.4c19.1-11.1 32-31.7 32-55.4 0-35.3-28.7-64-64-64s-64 28.7-64 64c0 23.7 12.9 44.4 32 55.4L256 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-264.6zM180.2 91c7.2-11.2 3.9-26-7.2-33.2s-26-3.9-33.2 7.2c-17.6 27.4-27.8 60-27.8 95s10.2 67.6 27.8 95c7.2 11.2 22 14.4 33.2 7.2s14.4-22 7.2-33.2c-12.8-19.9-20.2-43.6-20.2-69s7.4-49.1 20.2-69zM436.2 65c-7.2-11.2-22-14.4-33.2-7.2s-14.4 22-7.2 33.2c12.8 19.9 20.2 43.6 20.2 69s-7.4 49.1-20.2 69c-7.2 11.2-3.9 26 7.2 33.2s26 3.9 33.2-7.2c17.6-27.4 27.8-60 27.8-95s-10.2-67.6-27.8-95z\"]\n};\nvar faBroadcastTower = faTowerBroadcast;\nvar faMinimize = {\n  prefix: 'fas',\n  iconName: 'minimize',\n  icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2S322.1 32.2 329 39l40 40 73.4-73.4C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143 473 183c6.9 6.9 8.9 17.2 5.2 26.2S465.7 224 456 224zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433 329 473c-6.9 6.9-17.2 8.9-26.2 5.2S288 465.7 288 456l0-144c0-13.3 10.7-24 24-24l144 0zm-256 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40-73.4 73.4C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2S46.3 288 56 288l144 0zM56 224c-9.7 0-18.5-5.8-22.2-14.8S32.2 189.9 39 183L79 143 5.7 69.7C2 66 0 61.1 0 56S2 46 5.7 42.3L42.3 5.7C46 2 50.9 0 56 0S66 2 69.7 5.7L143 79 183 39c6.9-6.9 17.2-8.9 26.2-5.2S224 46.3 224 56l0 144c0 13.3-10.7 24-24 24L56 224z\"]\n};\nvar faCompressArrowsAlt = faMinimize;\nvar faArrowRightToCity = {\n  prefix: 'fas',\n  iconName: 'arrow-right-to-city',\n  icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 80 48 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 16 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-256 0c-26.5 0-48-21.5-48-48l0-416zm64 64l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 304l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 336l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM153 167l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-102.1 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l102.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faLaptopMedical = {\n  prefix: 'fas',\n  iconName: 'laptop-medical',\n  icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 240-64 0 0-240-384 0 0 240-64 0 0-240zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2 0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n};\nvar faBreadSlice = {\n  prefix: 'fas',\n  iconName: 'bread-slice',\n  icon: [512, 512, [], \"f7ec\", \"M64 432l0-176c-35.3 0-64-28.7-64-64 0-216.5 512-216.5 512 0 0 35.3-28.7 64-64 64l0 176c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48z\"]\n};\nvar faGlobe = {\n  prefix: 'fas',\n  iconName: 'globe',\n  icon: [512, 512, [127760], \"f0ac\", \"M351.9 280l-190.9 0c2.9 64.5 17.2 123.9 37.5 167.4 11.4 24.5 23.7 41.8 35.1 52.4 11.2 10.5 18.9 12.2 22.9 12.2s11.7-1.7 22.9-12.2c11.4-10.6 23.7-28 35.1-52.4 20.3-43.5 34.6-102.9 37.5-167.4zM160.9 232l190.9 0C349 167.5 334.7 108.1 314.4 64.6 303 40.2 290.7 22.8 279.3 12.2 268.1 1.7 260.4 0 256.4 0s-11.7 1.7-22.9 12.2c-11.4 10.6-23.7 28-35.1 52.4-20.3 43.5-34.6 102.9-37.5 167.4zm-48 0C116.4 146.4 138.5 66.9 170.8 14.7 78.7 47.3 10.9 131.2 1.5 232l111.4 0zM1.5 280c9.4 100.8 77.2 184.7 169.3 217.3-32.3-52.2-54.4-131.7-57.9-217.3L1.5 280zm398.4 0c-3.5 85.6-25.6 165.1-57.9 217.3 92.1-32.7 159.9-116.5 169.3-217.3l-111.4 0zm111.4-48C501.9 131.2 434.1 47.3 342 14.7 374.3 66.9 396.4 146.4 399.9 232l111.4 0z\"]\n};\nvar faFolderMinus = {\n  prefix: 'fas',\n  iconName: 'folder-minus',\n  icon: [512, 512, [], \"f65d\", \"M448 448L64 448c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4L448 80c35.3 0 64 28.7 64 64l0 240c0 35.3-28.7 64-64 64zM184 240c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nvar faMaskFace = {\n  prefix: 'fas',\n  iconName: 'mask-face',\n  icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1L64 128c-35.3 0-64 28.7-64 64l0 78.7c0 62.6 45.2 116 107 126.3l97.9 16.3c33 22 72.6 34.7 115.1 34.7s82.2-12.8 115.1-34.7L533 396.9c61.7-10.3 107-63.7 107-126.3l0-78.7c0-35.3-28.7-64-64-64l-89.2 0c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM135.9 336.9l-18.4-3.1C86.6 328.7 64 302 64 270.7l0-78.7 48 0 0 48c0 35 8.6 67.9 23.9 96.9zm386.6-3.1l-18.4 3.1C519.4 307.9 528 275 528 240l0-48 48 0 0 78.7c0 31.3-22.6 58-53.5 63.1zM192 232c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zm56 56l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faBong = {\n  prefix: 'fas',\n  iconName: 'bong',\n  icon: [512, 512, [], \"f55c\", \"M448.5 384c0 41.5-13.1 79.9-35.5 111.3-7.9 11.1-21.2 16.7-34.8 16.7l-243.3 0c-13.7 0-26.9-5.6-34.8-16.7-22.4-31.4-35.5-69.8-35.5-111.3 0-71.1 38.6-133.1 96-166.3l0-153.7c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 153.7c14.2 8.2 27.2 18.2 38.8 29.6l39.3-39.3-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c16 16 32 32 48 48 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3c17.3 28.9 27.3 62.6 27.3 98.8zM288.5 64l-64 0 0 190.6-32 18.5c-19.5 11.3-35.7 27.5-46.9 46.9l221.8 0c-11.2-19.4-27.4-35.6-46.9-46.9l-32-18.5 0-190.6z\"]\n};\nvar faRoadBridge = {\n  prefix: 'fas',\n  iconName: 'road-bridge',\n  icon: [576, 512, [], \"e563\", \"M32 32l208 0 0 64-24 0 0 64 24 0 0 129.3c-45.4 7.6-80 47.1-80 94.7l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-94c0-38.8-26.4-72.6-64-82l0-112 40 0 0-64-8 0C14.3 96 0 81.7 0 64S14.3 32 32 32zM88 96l0 64 80 0 0-64-80 0zM336 32l72 0 0 72c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72 72 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-72 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-72 0c-26.5 0-48-21.5-48-48l0-352c0-26.5 21.5-48 48-48zm96 160c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24z\"]\n};\nvar faArrowUp91 = {\n  prefix: 'fas',\n  iconName: 'arrow-up-9-1',\n  icon: [512, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96zM365.1 206.6c-9.6 14.8-5.4 34.6 9.4 44.3s34.6 5.4 44.3-9.4l42.1-64.9c12.4-19.2 19.1-41.6 19.1-64.5 0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.1 23.9 66.7 56.8 76.6l-11.7 18zM376 112a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm42.7 182c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26z\"]\n};\nvar faSortNumericUpAlt = faArrowUp91;\nvar faMountainCity = {\n  prefix: 'fas',\n  iconName: 'mountain-city',\n  icon: [640, 512, [], \"e52e\", \"M256.3 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 48 48 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 16 0c26.5 0 48 21.5 48 48l0 320c0 26.5-21.5 48-48 48l-77.8 0c4-15.4 2.4-32.6-6.7-48.2L354.6 256 368.3 256c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-6.1 0-11.4 3.4-14.1 8.5l-42.6-73c-6-10.2-14.1-18-23.3-23.3l0-56.2zm64 64l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm160 96l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm-272-64.7l-65.1 111.6 33.1 33.1 48-48 40.4 0-56.4-96.7zm-27.6-47.9c12.3-21.2 42.9-21.2 55.3 0L420.3 463.9c12.4 21.3-2.9 48.1-27.6 48.1L56 512c-24.7 0-40.1-26.8-27.6-48.1L196.7 175.4z\"]\n};\nvar faArrowDown91 = {\n  prefix: 'fas',\n  iconName: 'arrow-down-9-1',\n  icon: [512, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M230.6 390.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm134.5-184l11.7-18c-32.9-9.9-56.8-40.5-56.8-76.6 0-44.2 35.8-80 80-80s80 35.8 80 80c0 22.9-6.6 45.3-19.1 64.5l-42.1 64.9c-9.6 14.8-29.4 19.1-44.3 9.4s-19.1-29.4-9.4-44.3zM424 112a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm-5.3 182c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4z\"]\n};\nvar faSortNumericDesc = faArrowDown91;\nvar faSortNumericDownAlt = faArrowDown91;\nvar faFaceGrinWide = {\n  prefix: 'fas',\n  iconName: 'face-grin-wide',\n  icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64 14.3-64 32-64 32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64 32 28.7 32 64-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faPoop = {\n  prefix: 'fas',\n  iconName: 'poop',\n  icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7 46.9 6.3 83.1 46.5 83.1 95.1 0 11.2-1.9 22-5.5 32l5.5 0c35.3 0 64 28.7 64 64 0 19.1-8.4 36.3-21.7 48l13.7 0c39.8 0 72 32.2 72 72 0 23.2-11 43.8-28 57 34.1 5.7 60 35.3 60 71 0 39.8-32.2 72-72 72L72 512c-39.8 0-72-32.2-72-72 0-35.7 25.9-65.3 60-71-17-13.2-28-33.8-28-57 0-39.8 32.2-72 72-72l13.7 0c-13.3-11.7-21.7-28.9-21.7-48 0-35.3 28.7-64 64-64l16.2 0c44.1-.1 79.8-35.9 79.8-80 0-9.2-1.5-17.9-4.3-26.1-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nvar faDharmachakra = {\n  prefix: 'fas',\n  iconName: 'dharmachakra',\n  icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10.1 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.6 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.6-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBatteryQuarter = {\n  prefix: 'fas',\n  iconName: 'battery-quarter',\n  icon: [640, 512, [\"battery-2\"], \"f243\", \"M528 128c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-416 0c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16l416 0zM112 64c-44.2 0-80 35.8-80 80l0 224c0 44.2 35.8 80 80 80l416 0c44.2 0 80-35.8 80-80l0-48c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80L112 64zm56 112c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24l0-112c0-13.3-10.7-24-24-24l-64 0z\"]\n};\nvar faBattery2 = faBatteryQuarter;\nvar faAnkh = {\n  prefix: 'fas',\n  iconName: 'ankh',\n  icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1-5.9 6.2-11.8 11.8-17.4 16.7-5.6-4.9-11.5-10.5-17.4-16.7-25.9-27.5-46.6-62.6-46.6-104.1zM160 0C89.3 0 32 57.3 32 128 32 180.4 53.5 223.5 78.8 256L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-46.8 0C266.5 223.5 288 180.4 288 128 288 57.3 230.7 0 160 0z\"]\n};\nvar faDiamond = {\n  prefix: 'fas',\n  iconName: 'diamond',\n  icon: [512, 512, [9830], \"f219\", \"M17 215L215 17C225.9 6.1 240.6 0 256 0s30.1 6.1 41 17L495 215c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L297 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17L17 297C6.1 286.1 0 271.4 0 256s6.1-30.1 17-41z\"]\n};\nvar faSubscript = {\n  prefix: 'fas',\n  iconName: 'subscript',\n  icon: [576, 512, [], \"f12c\", \"M96 64C78.3 64 64 78.3 64 96s14.3 32 32 32l15.3 0 89.6 128-89.6 128-15.3 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L240 311.8 325.8 434.4c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0-89.6-128 89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L240 200.2 154.2 77.6C148.2 69.1 138.4 64 128 64L96 64zM544 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9 5.6 11.2 16.9 17.7 28.6 17.7l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128z\"]\n};\nvar faRupeeSign = {\n  prefix: 'fas',\n  iconName: 'rupee-sign',\n  icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144 0 54.3-30 101.5-74.4 126.1l41 136.7c5.1 16.9-4.5 34.8-21.5 39.8s-34.8-4.5-39.8-21.5L120.1 319.8c-2.7 .1-5.4 .2-8.1 .2l-48 0 0 128c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80l-48 0 0 160zm285.1-32l34.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-34.9 0c-7.2 0-13.1 5.9-13.1 13.1 0 5.7 3.7 10.7 9.1 12.5l49.4 15.9c31.9 10.3 53.5 39.9 53.5 73.4 0 42.6-34.5 77.1-77.1 77.1L320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l50.9 0c7.2 0 13.1-5.9 13.1-13.1 0-5.7-3.7-10.7-9.1-12.5l-49.4-15.9c-31.9-10.3-53.5-39.9-53.5-73.4 0-42.6 34.5-77.1 77.1-77.1z\"]\n};\nvar faRupee = faRupeeSign;\nvar faPersonRifle = {\n  prefix: 'fas',\n  iconName: 'person-rifle',\n  icon: [512, 512, [], \"e54e\", \"M416 0L384 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l0 100.3c-9.6 5.5-16 15.9-16 27.7l0 32c-17.7 0-32 14.3-32 32l0 144c0 17.7 14.3 32 32 32l16 0 0 96c0 8.8 7.2 16 16 16l59.5 0c10.4 0 18-9.8 15.5-19.9l-23-92.1 44 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-48 0 0-26.7 53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2l0-84.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 56-16 5.3 0-109.3c0-11.8-6.4-22.2-16-27.7L432 16c0-8.8-7.2-16-16-16zM224 208C118 208 32 294 32 400l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-32.5 12.1-62.1 32-84.7l0 196.7 160 0 0-293.1c-20-7.1-41.6-10.9-64-10.9zM280 88a72 72 0 1 0 -144 0 72 72 0 1 0 144 0z\"]\n};\nvar faD = {\n  prefix: 'fas',\n  iconName: 'd',\n  icon: [384, 512, [100], \"44\", \"M0 64C0 46.3 14.3 32 32 32l128 0c123.7 0 224 100.3 224 224S283.7 480 160 480L32 480c-17.7 0-32-14.3-32-32L0 64zM64 96l0 320 96 0c88.4 0 160-71.6 160-160S248.4 96 160 96L64 96z\"]\n};\nvar faSquareNfi = {\n  prefix: 'fas',\n  iconName: 'square-nfi',\n  icon: [448, 512, [], \"e576\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM93 172.3l35 63 0-51.4c0-13.3 10.7-24 24-24s24 10.7 24 24l0 144c0 10.9-7.4 20.5-18 23.2s-21.7-2-27-11.6l-35-63 0 51.4c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-10.9 7.4-20.5 18-23.2s21.7 2 27 11.6zM208 184c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0 0 32 40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0 0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144zm192 0l0 144c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faTeeth = {\n  prefix: 'fas',\n  iconName: 'teeth',\n  icon: [512, 512, [], \"f62e\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM144 208l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zm128 0l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zM80 176c-17.7 0-32 14.3-32 32l0 24c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-24c0-17.7-14.3-32-32-32zm320 32l0 24c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-24c0-17.7-14.3-32-32-32s-32 14.3-32 32zM48 336c0 17.7 14.3 32 32 32s32-14.3 32-32l0-16c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 16zm144 48c26.5 0 48-21.5 48-48l0-16c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16l0 16c0 26.5 21.5 48 48 48zm128 0c26.5 0 48-21.5 48-48l0-16c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16l0 16c0 26.5 21.5 48 48 48zm112-16c17.7 0 32-14.3 32-32l0-16c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 16c0 17.7 14.3 32 32 32z\"]\n};\nvar faMagnifyingGlassDollar = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-dollar',\n  icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM212 96c-11 0-20 9-20 20l0 4c-28.8 .3-52 23.7-52 52.5 0 25.7 18.5 47.6 43.9 51.8l41.7 7c6 1 10.4 6.2 10.4 12.3 0 6.9-5.6 12.5-12.5 12.5L168 256c-11 0-20 9-20 20s9 20 20 20l24 0 0 4c0 11 9 20 20 20s20-9 20-20l0-4.7c25-4.1 44-25.7 44-51.8 0-25.7-18.5-47.6-43.9-51.8l-41.7-7c-6-1-10.4-6.2-10.4-12.3 0-6.9 5.6-12.5 12.5-12.5l47.5 0c11 0 20-9 20-20s-9-20-20-20l-8 0 0-4c0-11-9-20-20-20z\"]\n};\nvar faSearchDollar = faMagnifyingGlassDollar;\nvar faDumpsterFire = {\n  prefix: 'fas',\n  iconName: 'dumpster-fire',\n  icon: [640, 512, [], \"f794\", \"M164.3 64L138.7 192 56 192c-13.3 0-24-10.7-24-24l0-4.1c0-2.6 .4-5.1 1.2-7.6L58.5 80.4C61.8 70.6 71 64 81.3 64l83 0zm23.4 128l25.6-128 82.7 0 0 128-108.3 0zM344 64l82.7 0 16 80c-14.7 .2-29.3 5.5-40.9 15.9-11.5 10.3-22.5 21-32.8 32.1l-24.9 0 0-128zM96 240l233.2 0c-6.4 8.8-12.3 17.6-17.7 26.3-21.4 34.7-39.5 76.1-39.5 115.8 0 17.1 2.1 33.8 6 49.9l-120.4 0 1.9 10.3c3.2 17.4-8.4 34-25.8 37.2s-34-8.4-37.2-25.8C71 313.3 58 242.1 57.7 240L96 240zm512-72c0 11-7.4 20.3-17.5 23.1-.9-.8-1.7-1.6-2.6-2.4-21.8-20-54.3-21.8-78-5.5-4.2-4.3-8.5-8.5-12.9-12.6l-21.3-106.6 83 0c10.3 0 19.5 6.6 22.8 16.4l25.3 75.9c.8 2.4 1.2 5 1.2 7.6l0 4.1zM505.7 240.3L518 226.5c5.4-6.1 13.3-8.8 20.9-8.9 7.2 0 14.3 2.6 19.9 7.8 19.7 18.3 39.8 43.2 55 70.6 15.1 27.2 26.2 58.1 26.2 88.1 0 88.7-71.3 159.8-160 159.8-89.6 0-160-71.3-160-159.8 0-37.3 16-73.4 36.8-104.5 20.9-31.3 47.5-59 70.9-80.2 5.7-5.2 13.1-7.7 20.3-7.5s13.4 3.2 18.8 7.5c14.4 11.4 38.9 40.7 38.9 40.7zM544 432.2c0-36.5-37-73-54.8-88.4-5.4-4.7-13.1-4.7-18.5 0-17.7 15.4-54.8 51.9-54.8 88.4 0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faUpload = {\n  prefix: 'fas',\n  iconName: 'upload',\n  icon: [448, 512, [], \"f093\", \"M256 109.3L256 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-210.7-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 109.3zM224 400c44.2 0 80-35.8 80-80l80 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64l80 0c0 44.2 35.8 80 80 80zm144 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faUserSlash = {\n  prefix: 'fas',\n  iconName: 'user-slash',\n  icon: [576, 512, [62714, \"user-alt-slash\", \"user-large-slash\"], \"f506\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L311.5 245.7c55-10.9 96.5-59.5 96.5-117.7 0-66.3-53.7-120-120-120-58.2 0-106.8 41.5-117.7 96.5L41-24.9zM235.6 305.4C147.9 316.6 80 391.5 80 482.3 80 498.7 93.3 512 109.7 512l332.5 0-206.6-206.6z\"]\n};\nvar faUserAltSlash = faUserSlash;\nvar faUserLargeSlash = faUserSlash;\nvar faArrowLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-left',\n  icon: [512, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 105.4-105.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faVialVirus = {\n  prefix: 'fas',\n  iconName: 'vial-virus',\n  icon: [576, 512, [], \"e597\", \"M64 32C64 14.3 78.3 0 96 0L320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 151.7c-18.5 0-37 7-51.1 21.1-21.6 21.6-26.6 53.6-15 79.9-26.9 10.4-45.9 36.6-45.9 67.1s19 56.7 45.9 67.1c-7.3 16.5-8 35.2-2.3 52.2-13.4 5.7-28.2 8.8-43.6 8.8-61.9 0-112-50.1-112-112L96 64C78.3 64 64 49.7 64 32zm96 32l0 128 96 0 0-128-96 0zM280 408c-13.3 0-24-10.7-24-24s10.7-24 24-24c28.8 0 43.2-34.8 22.9-55.2-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.4 20.4 55.2 5.9 55.2-22.9 0-13.3 10.7-24 24-24s24 10.7 24 24c0 28.8 34.8 43.2 55.2 22.9 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.4 20.4-5.9 55.2 22.9 55.2 13.3 0 24 10.7 24 24s-10.7 24-24 24c-28.8 0-43.2 34.8-22.9 55.2 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.4-20.4-55.2-5.9-55.2 22.9 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-28.8-34.8-43.2-55.2-22.9-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.4-20.4 5.9-55.2-22.9-55.2zm104-32a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCheckDouble = {\n  prefix: 'fas',\n  iconName: 'check-double',\n  icon: [384, 512, [], \"f560\", \"M249.9 66.8c10.4-14.3 7.2-34.3-7.1-44.7s-34.3-7.2-44.7 7.1l-106 145.7-37.5-37.5c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c6.6 6.6 15.8 10 25.1 9.3s17.9-5.5 23.4-13.1l128-176zm128 136c10.4-14.3 7.2-34.3-7.1-44.7s-34.3-7.2-44.7 7.1l-170 233.7-69.5-69.5c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c6.6 6.6 15.8 10 25.1 9.3s17.9-5.5 23.4-13.1l192-264z\"]\n};\nvar faPaw = {\n  prefix: 'fas',\n  iconName: 'paw',\n  icon: [512, 512, [], \"f1b0\", \"M234.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5 .3-86.2 32.6-96.8 70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3-14.3-70.1 10.2-84.1 59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5l0 1.6c0 25.8-20.9 46.7-46.7 46.7-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2-25.8 0-46.7-20.9-46.7-46.7l0-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3 29.1 51.7 10.2 84.1-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5 46.9 53.9 32.6 96.8-52.1 69.1-84.4 58.5z\"]\n};\nvar faHelmetSafety = {\n  prefix: 'fas',\n  iconName: 'helmet-safety',\n  icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M352 264l0-200c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 200c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-185.9C90 109.8 32 191.8 32 288l0 64 512 0 0-64c-1-95.2-58.4-177.7-144-209.8L400 264c0 13.3-10.7 24-24 24s-24-10.7-24-24zM40 400c-22.1 0-40 17.9-40 40s17.9 40 40 40l496 0c22.1 0 40-17.9 40-40s-17.9-40-40-40L40 400z\"]\n};\nvar faHardHat = faHelmetSafety;\nvar faHatHard = faHelmetSafety;\nvar faE = {\n  prefix: 'fas',\n  iconName: 'e',\n  icon: [320, 512, [101], \"45\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-128 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-128 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32z\"]\n};\nvar faFaceLaughSquint = {\n  prefix: 'fas',\n  iconName: 'face-laugh-squint',\n  icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM107.7 332.1C102 318 113.4 304 128.6 304l254.9 0c15.2 0 26.6 14 20.9 28.1-23.8 58.6-81.2 99.9-148.3 99.9s-124.6-41.3-148.3-99.9zm15-188.8c4.5-6.8 13.3-9.2 20.6-5.5l79.6 40c5.4 2.7 8.8 8.2 8.8 14.3s-3.4 11.6-8.8 14.3l-79.6 40c-7.3 3.6-16.1 1.3-20.6-5.5s-3.1-15.9 3.1-21.1L159 192 125.8 164.3c-6.2-5.2-7.6-14.3-3.1-21.1zm263.6 21.1L353 192 386.2 219.7c6.2 5.2 7.6 14.3 3.1 21.1s-13.3 9.2-20.6 5.5l-79.6-40c-5.4-2.7-8.8-8.2-8.8-14.3s3.4-11.6 8.8-14.3l79.6-40c7.3-3.6 16.1-1.3 20.6 5.5s3.1 15.9-3.1 21.1z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faDownLeftAndUpRightToCenter = {\n  prefix: 'fas',\n  iconName: 'down-left-and-up-right-to-center',\n  icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439.5 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2S450.2 240 440.5 240l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87zM72.5 272l144 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87-39-39c-6.9-6.9-8.9-17.2-5.2-26.2S62.8 272 72.5 272z\"]\n};\nvar faCompressAlt = faDownLeftAndUpRightToCenter;\nvar faGifts = {\n  prefix: 'fas',\n  iconName: 'gifts',\n  icon: [576, 512, [], \"f79c\", \"M202-30.6c12.5 4.4 19 18.1 14.6 30.6l-8.2 23.1 25.4-18.5c10.7-7.8 25.7-5.4 33.5 5.3s5.4 25.7-5.3 33.5L233.8 64 272 64c26.5 0 48 21.5 48 48l0 2.1c-54.7 10.4-96 58.4-96 116l0 1.9c0 8.9 1 17.5 2.8 25.9-11.9 17.8-18.8 39.1-18.8 62.1l0 128c0 23.8 7.4 45.9 20.1 64L48 512c-26.5 0-48-21.5-48-48L0 112C0 85.5 21.5 64 48 64l38.2 0-28.3-20.6C47.2 35.6 44.8 20.6 52.6 9.9S75.4-3.2 86.1 4.6l27.4 20-8.3-25C101-13 107.8-26.6 120.4-30.8s26.2 2.6 30.4 15.2l9.9 29.8 10.7-30.2c4.4-12.5 18.1-19 30.6-14.6zM489.9 208c-7.5 0-14.5 3.8-18.6 10.1L446.9 256 488 256c13.3 0 24-10.7 24-24l0-1.9c0-12.2-9.9-22.1-22.1-22.1zM385.1 256l-24.4-37.9c-4.1-6.3-11.1-10.1-18.6-10.1-12.2 0-22.1 9.9-22.1 22.1l0 1.9c0 13.3 10.7 24 24 24l41.1 0zM281.9 268.5c-6.3-10.7-9.9-23.2-9.9-36.5l0-1.9c0-38.7 31.4-70.1 70.1-70.1 23.8 0 46 12.1 58.9 32.1l15 23.2 15-23.2c12.9-20 35.1-32.1 58.9-32.1 38.7 0 70.1 31.4 70.1 70.1l0 1.9c0 13.3-3.6 25.8-9.9 36.5 15.7 11.7 25.9 30.4 25.9 51.5l0 128c0 35.3-28.7 64-64 64l-72 0 0-208-48 0 0 208-72 0c-35.3 0-64-28.7-64-64l0-128c0-21.1 10.2-39.8 25.9-51.5z\"]\n};\nvar faBed = {\n  prefix: 'fas',\n  iconName: 'bed',\n  icon: [576, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32l0 224 224 0 0-128c0-17.7 14.3-32 32-32l160 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64-448 0 0 64c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64C0 46.3 14.3 32 32 32zm80 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faMoneyBillTransfer = {\n  prefix: 'fas',\n  iconName: 'money-bill-transfer',\n  icon: [640, 512, [], \"e528\", \"M31 105c-9.4-9.4-9.4-24.6 0-33.9L103-1c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-31 31 67.7 0 0 0 338.3 0c35.3 0 64 28.7 64 64l0 178.2-5.1-5.1c-28.1-28.1-73.7-28.1-101.8 0-27.2 27.2-28.1 70.6-2.8 98.9l67.7 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-406.1 0c-35.3 0-64-28.7-64-64l0-178.2 5.1 5.1c28.1 28.1 73.7 28.1 101.8 0 27.2-27.2 28.1-70.6 2.8-98.9l-67.7 0 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L31 105zM416 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zm88-64.5c4.4 .5 8-3.1 8-7.5l0-48c0-4.4-3.6-8-8-8l-48 0c-4.4 0-8.1 3.6-7.5 8 3.6 29 26.6 51.9 55.5 55.5zm-368 129c-4.4-.5-8 3.1-8 7.5l0 48c0 4.4 3.6 8 8 8l48 0c4.4 0 8.1-3.6 7.5-8-3.6-29-26.6-51.9-55.5-55.5z\"]\n};\nvar faPersonRunning = {\n  prefix: 'fas',\n  iconName: 'person-running',\n  icon: [448, 512, [127939, \"running\"], \"f70c\", \"M256.5-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM123.6 176c-3.3 0-6.2 2-7.4 5L94.2 235.9c-6.6 16.4-25.2 24.4-41.6 17.8s-24.4-25.2-17.8-41.6l21.9-54.9C67.7 129.9 94.1 112 123.6 112l97.3 0c28.5 0 54.8 15.1 69.1 39.7l32.8 56.3 61.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-61.6 0c-22.8 0-43.8-12.1-55.3-31.8l-10-17.1-20.7 70.4 75.4 22.6c27.7 8.3 41.8 39 30.1 65.5L285.7 509c-7.2 16.2-26.1 23.4-42.2 16.2s-23.4-26.1-16.2-42.2l49.2-110.8-95.9-28.8c-32.7-9.8-52-43.7-43.7-76.8l22.7-90.6-35.9 0zm-8 181c13.3 14.9 30.7 26.3 51.2 32.4l4.7 1.4-6.9 19.3c-5.8 16.3-16 30.8-29.3 41.8L52.9 519.8c-13.6 11.2-33.8 9.3-45-4.3s-9.3-33.8 4.3-45l82.4-67.9c4.5-3.7 7.8-8.5 9.8-13.9L115.6 357z\"]\n};\nvar faRunning = faPersonRunning;\nvar faCircleChevronDown = {\n  prefix: 'fas',\n  iconName: 'circle-chevron-down',\n  icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512 256 256 0 1 0 0-512zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nvar faChevronCircleDown = faCircleChevronDown;\nvar faUserNurse = {\n  prefix: 'fas',\n  iconName: 'user-nurse',\n  icon: [448, 512, [], \"f82f\", \"M96 44.9c0-12.7 7.5-24.2 19.2-29.3l96-42c8.2-3.6 17.5-3.6 25.7 0l96 42C344.5 20.7 352 32.2 352 44.9l0 99.1c0 70.7-57.3 128-128 128S96 214.7 96 144l0-99.1zM304 128l-111.6 0-.4 0-48 0 0 16c0 44.2 35.8 80 80 80s80-35.8 80-80l0-16zM208 16l0 16-16 0c-4.4 0-8 3.6-8 8l0 16c0 4.4 3.6 8 8 8l16 0 0 16c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-16 16 0c4.4 0 8-3.6 8-8l0-16c0-4.4-3.6-8-8-8l-16 0 0-16c0-4.4-3.6-8-8-8L216 8c-4.4 0-8 3.6-8 8zM142.6 323c-6.5-4.9-15.2-6.2-22.6-2.8-61.4 28.2-104.1 90.2-104.1 162.1 0 16.4 13.3 29.7 29.7 29.7l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-72-42.7-134-104.1-162.1-7.4-3.4-16.1-2.1-22.6 2.8l-67 50.2c-8.5 6.4-20.3 6.4-28.8 0l-67-50.2z\"]\n};\nvar faFaceKissWinkHeart = {\n  prefix: 'fas',\n  iconName: 'face-kiss-wink-heart',\n  icon: [640, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M543.7 268.3c.2-4.1 .3-8.2 .3-12.3 0-141.4-114.6-256-256-256S32 114.6 32 256 146.6 512 288 512c41.4 0 80.5-9.8 115.1-27.3-7.6-17.1-16.1-38.8-21.8-61.7-7.7-30.5-14.1-76.2 8.2-114.7l2.7-4.6c29.5-51 94.7-68.5 145.7-39 2 1.2 4 2.4 5.9 3.7zM240 304c0-8.8 7.2-16 16-16l32 0c26.5 0 48 21.5 48 48 0 12.3-4.6 23.5-12.2 32 7.6 8.5 12.2 19.7 12.2 32 0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0c-8.8 0-16-7.2-16-16zM208 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm152 20c-11 0-20 9-20 20s-9 20-20 20-20-9-20-20c0-33.1 26.9-60 60-60l16 0c33.1 0 60 26.9 60 60 0 11-9 20-20 20s-20-9-20-20-9-20-20-20l-16 0zM542.8 350c-2.2-18.3-12.9-34.6-28.9-43.8-28.1-16.2-63.9-6.6-80.1 21.5l-2.7 4.6c-24.5 42.5 7.9 117.9 24.4 150.8 5.1 10.1 15.5 16.1 26.8 15.5 36.7-2.2 118.2-11.7 142.8-54.2l2.7-4.6c16.2-28.1 6.6-63.9-21.5-80.1-16-9.2-35.4-10.4-52.4-3.1l-9.8 4.2-1.3-10.6z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faFill = {\n  prefix: 'fas',\n  iconName: 'fill',\n  icon: [512, 512, [], \"f575\", \"M296 64c6.9 0 13.5 2.7 18.3 7.6L440.4 197.7c4.9 4.9 7.6 11.5 7.6 18.3s-2.7 13.5-7.6 18.3L386.7 288 65.3 288c1.3-3.9 3.4-7.4 6.3-10.3l96.4-96.4 33.4 33.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136 277.7 71.6c4.9-4.9 11.5-7.6 18.3-7.6zM122.7 136L26.3 232.4C9.5 249.3 0 272.1 0 296s9.5 46.7 26.3 63.6L152.4 485.7C169.3 502.5 192.1 512 216 512s46.7-9.5 63.6-26.3L485.7 279.6C502.5 262.7 512 239.9 512 216s-9.5-46.7-26.3-63.6L359.6 26.3C342.7 9.5 319.9 0 296 0s-46.7 9.5-63.6 26.3L168 90.7 118.6 41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L122.7 136z\"]\n};\nvar faMoneyBill1Wave = {\n  prefix: 'fas',\n  iconName: 'money-bill-1-wave',\n  icon: [512, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 109.5L0 419.6c0 19.4 11.8 37.3 30.3 43.3 94 30 158.8 8.4 223.3-13.1 62.4-20.8 124.4-41.5 212.1-15.3 22.2 6.6 46.2-8.8 46.2-32l0-310.1c0-19.4-11.8-37.3-30.3-43.3-94-30-158.8-8.4-223.3 13.1-62.4 20.8-124.4 41.5-212.1 15.3-22.2-6.6-46.3 8.8-46.3 32zM256 368c-53 0-96-50.1-96-112s43-112 96-112 96 50.1 96 112-43 112-96 112zM127.1 405.5c.7 4.4-2.8 8.1-7.2 8.1-15.7 0-32.1-1.8-50-6.1-3.5-.8-6-4-6-7.7L64 360c0-4.4 3.6-8.1 8-7.5 28.1 3.5 50.6 25.2 55.2 53zM448 354.6c0 5-4.6 8.8-9.5 8-15.4-2.5-30.2-3.9-44.4-4.3-4.9-.1-8.7-4.5-7.2-9.2 7.3-23.7 28-41.4 53.2-44.6 4.4-.5 8 3.1 8 7.5l0 42.6zm-8-195.1c-28.1-3.5-50.6-25.2-55.2-53-.7-4.4 2.8-8.1 7.2-8.1 15.7 0 32.1 1.8 50 6.1 3.5 .8 6 4 6 7.7l0 39.9c0 4.4-3.6 8.1-8 7.5zm-322.1-5.8c4.9 .1 8.7 4.5 7.2 9.2-7.3 23.7-28 41.4-53.2 44.6-4.4 .5-8-3.1-8-7.5l0-42.6c0-5 4.6-8.8 9.5-8 15.4 2.5 30.2 3.9 44.4 4.3zM240 188c-11 0-20 9-20 20 0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l48 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0z\"]\n};\nvar faMoneyBillWaveAlt = faMoneyBill1Wave;\nvar faLandmark = {\n  prefix: 'fas',\n  iconName: 'landmark',\n  icon: [512, 512, [127963], \"f66f\", \"M238.7 5.1c10.5-6.8 24.1-6.8 34.6 0l224 144c11.9 7.7 17.4 22.3 13.4 35.9s-16.5 23-30.7 23l-32 0 0 208 51.2 38.4c8.1 6 12.8 15.5 12.8 25.6 0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32 0-10.1 4.7-19.6 12.8-25.6l51.2-38.4 0 0 0-208-32 0c-14.2 0-26.7-9.4-30.7-23s1.5-28.3 13.4-35.9l224-144zM336 208l0 208 64 0 0-208-64 0zM224 416l64 0 0-208-64 0 0 208zM112 208l0 208 64 0 0-208-64 0z\"]\n};\nvar faMusic = {\n  prefix: 'fas',\n  iconName: 'music',\n  icon: [512, 512, [127925], \"f001\", \"M468 7c7.6 6.1 12 15.3 12 25l0 304c0 44.2-43 80-96 80s-96-35.8-96-80 43-80 96-80c11.2 0 22 1.6 32 4.6l0-116.7-224 49.8 0 206.3c0 44.2-43 80-96 80s-96-35.8-96-80 43-80 96-80c11.2 0 22 1.6 32 4.6L128 96c0-15 10.4-28 25.1-31.2l288-64c9.5-2.1 19.4 .2 27 6.3z\"]\n};\nvar faBookMedical = {\n  prefix: 'fas',\n  iconName: 'book-medical',\n  icon: [448, 512, [], \"f7e6\", \"M96 512l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-66.7c18.6-6.6 32-24.4 32-45.3l0-288c0-26.5-21.5-48-48-48L96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96zM64 416c0-17.7 14.3-32 32-32l256 0 0 64-256 0c-17.7 0-32-14.3-32-32zM192 120c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n};\nvar faShuffle = {\n  prefix: 'fas',\n  iconName: 'shuffle',\n  icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9S384 204.9 384 192l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8l-32.4 43.2-40-53.3 21.2-28.3C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM154 296l40 53.3-21.2 28.3C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L154 296zM438.6 470.6c-9.2 9.2-22.9 11.9-34.9 6.9S384 460.9 384 448l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32S14.3 96 32 96l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nvar faRandom = faShuffle;\nvar faUnderline = {\n  prefix: 'fas',\n  iconName: 'underline',\n  icon: [384, 512, [], \"f0cd\", \"M0 32C0 14.3 14.3 0 32 0L96 0c17.7 0 32 14.3 32 32S113.7 64 96 64l0 160c0 53 43 96 96 96s96-43 96-96l0-160c-17.7 0-32-14.3-32-32S270.3 0 288 0l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 160c0 88.4-71.6 160-160 160S32 312.4 32 224L32 64C14.3 64 0 49.7 0 32zM0 480c0-17.7 14.3-32 32-32l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32z\"]\n};\nvar faBuildingUser = {\n  prefix: 'fas',\n  iconName: 'building-user',\n  icon: [640, 512, [], \"e4da\", \"M64 64C64 28.7 92.7 0 128 0L384 0c35.3 0 64 28.7 64 64l0 121.3c-46.9 19-80 65-80 118.7 0 27.7 8.8 53.4 23.8 74.4-51.5 21-87.8 71.6-87.8 130.7 0 1 0 1.9 0 2.9l-176 0c-35.3 0-64-28.7-64-64L64 64zM208 400l0 64 53.4 0c7.2-29.4 21.3-56.1 40.4-78.3-6.1-19.5-24.3-33.7-45.8-33.7-26.5 0-48 21.5-48 48zM339 224.3c-1-.2-2-.3-3-.3l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l16.7 0c2.1-22.8 8.4-44.3 18.3-63.7zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM176 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm240 80a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM352 512c0-53 43-96 96-96l96 0c53 0 96 43 96 96 0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32z\"]\n};\nvar faRobot = {\n  prefix: 'fas',\n  iconName: 'robot',\n  icon: [640, 512, [129302], \"f544\", \"M352 0c0-17.7-14.3-32-32-32S288-17.7 288 0l0 64-96 0c-53 0-96 43-96 96l0 224c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-224c0-53-43-96-96-96l-96 0 0-64zM160 368c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm120 0c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm120 0c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zM224 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm144 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM64 224c0-17.7-14.3-32-32-32S0 206.3 0 224l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96zm544-32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faPlus = {\n  prefix: 'fas',\n  iconName: 'plus',\n  icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-160z\"]\n};\nvar faAdd = faPlus;\nvar faCopy = {\n  prefix: 'fas',\n  iconName: 'copy',\n  icon: [448, 512, [], \"f0c5\", \"M192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-200.6c0-17.4-7.1-34.1-19.7-46.2L370.6 17.8C358.7 6.4 342.8 0 326.3 0L192 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-16-64 0 0 16-192 0 0-256 16 0 0-64-16 0z\"]\n};\nvar faChessKing = {\n  prefix: 'fas',\n  iconName: 'chess-king',\n  icon: [448, 512, [9818], \"f43f\", \"M224-32c17.7 0 32 14.3 32 32l0 32 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 64 153.8 0c21.1 0 38.2 17.1 38.2 38.2 0 6.4-1.6 12.7-4.7 18.3L352 384 408.2 454.3c5 6.3 7.8 14.1 7.8 22.2 0 19.6-15.9 35.5-35.5 35.5L67.5 512c-19.6 0-35.5-15.9-35.5-35.5 0-8.1 2.7-15.9 7.8-22.2L96 384 4.7 216.6C1.6 210.9 0 204.6 0 198.2 0 177.1 17.1 160 38.2 160l153.8 0 0-64-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-32c0-17.7 14.3-32 32-32z\"]\n};\nvar faHouseFloodWater = {\n  prefix: 'fas',\n  iconName: 'house-flood-water',\n  icon: [640, 512, [], \"e50e\", \"M496 208l4.5 0c15.2 0 27.5-12.3 27.5-27.5 0-7.9-3.4-15.5-9.4-20.7L348 10.5C340.3 3.7 330.3 0 320 0s-20.3 3.7-28 10.5L121.4 159.8c-6 5.2-9.4 12.8-9.4 20.7 0 15.2 12.3 27.5 27.5 27.5l4.5 0 0 94.4c20.3-9.4 42.1-14.2 64-14.4 33.1-.2 66.3 10.2 94.4 31.4 22.1 16.6 29.1 16.6 51.2 0 27.5-20.7 59.9-31.2 92.4-31.4 16.9-.1 33.8 2.6 50 8l0-88zm-224-8c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-48zM474.6 412.1c19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 418.3 17.6 426.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zm-71.2 96c21.3-16.1 49.9-16.1 71.2 0 19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 514.3 17.6 522.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n};\nvar faBitcoinSign = {\n  prefix: 'fas',\n  iconName: 'bitcoin-sign',\n  icon: [320, 512, [], \"e0b4\", \"M64 24C64 10.7 74.7 0 88 0s24 10.7 24 24l0 40 32 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 41.1c54.3 7.8 96 54.4 96 110.9 0 24.2-7.7 46.6-20.7 64.9 31.7 19.8 52.7 55 52.7 95.1 0 61.9-50.1 112-112 112l-16 0 0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40-32 0 0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40-22.3 0C18.7 448 0 429.3 0 406.3L0 101.6C0 80.8 16.8 64 37.6 64L64 64 64 24zm0 200l112 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-112 0 0 96zm112 64l-112 0 0 96 144 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n};\nvar faBox = {\n  prefix: 'fas',\n  iconName: 'box',\n  icon: [448, 512, [128230], \"f466\", \"M369.4 128l-34.3-48-222.1 0-34.3 48 290.7 0zM0 148.5c0-13.3 4.2-26.3 11.9-37.2L60.9 42.8C72.9 26 92.3 16 112.9 16l222.1 0c20.7 0 40.1 10 52.1 26.8l48.9 68.5c7.8 10.9 11.9 23.9 11.9 37.2L448 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 148.5z\"]\n};\nvar faSquarePlus = {\n  prefix: 'fas',\n  iconName: 'square-plus',\n  icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faArrowsLeftRight = {\n  prefix: 'fas',\n  iconName: 'arrows-left-right',\n  icon: [576, 512, [\"arrows-h\"], \"f07e\", \"M470.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l41.4 41.4-357.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-41.4-41.4 357.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faArrowsH = faArrowsLeftRight;\nvar faFan = {\n  prefix: 'fas',\n  iconName: 'fan',\n  icon: [512, 512, [], \"f863\", \"M160 144c0-79.5 64.5-144 144-144 8.8 0 16 7.2 16 16l0 152.2c15-5.3 31.2-8.2 48-8.2 79.5 0 144 64.5 144 144 0 8.8-7.2 16-16 16l-152.2 0c5.3 15 8.2 31.2 8.2 48 0 79.5-64.5 144-144 144-8.8 0-16-7.2-16-16l0-152.2c-15 5.3-31.2 8.2-48 8.2-79.5 0-144-64.5-144-144 0-8.8 7.2-16 16-16l152.2 0c-5.3-15-8.2-31.2-8.2-48zm96 144a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCrow = {\n  prefix: 'fas',\n  iconName: 'crow',\n  icon: [640, 512, [], \"f520\", \"M456.5 0c-48.6 0-88 39.4-88 88l0 36-355.2 266.4C-.8 401-3.7 421 6.9 435.2s30.6 17 44.8 6.4l76.8-57.6 131.3 0 46.6 113.1 1 2.2c5.7 10.7 18.8 15.5 30.3 10.8s17.3-17.3 13.9-29l-.8-2.3-39.1-94.9 40.9 0c1.1 0 2.2 0 3.2 0l46.6 113.2 1 2.2c5.7 10.7 18.8 15.5 30.3 10.8s17.3-17.3 13.9-29l-.8-2.3-42-102C485.3 354.1 544.5 280 544.5 192l0-72 80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4-7.1-28.5-32.7-48.5-62.1-48.5l-50.1 0C508.2 12.5 483.8 0 456.5 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFileCircleCheck = {\n  prefix: 'fas',\n  iconName: 'file-circle-check',\n  icon: [576, 512, [], \"e5a0\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM576 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n};\nvar faLinkSlash = {\n  prefix: 'fas',\n  iconName: 'link-slash',\n  icon: [576, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-122-122c4.2-3.4 8.3-7.1 12.1-10.9l71.1-71.1c29.3-29.3 45.8-69.1 45.8-110.6 0-86.4-70-156.5-156.5-156.5-37.3 0-73.1 13.3-101.3 37.2 20.3 10.1 38.7 23.5 54.5 39.5 14.1-8.3 30.2-12.7 46.8-12.7 51.1 0 92.5 41.4 92.5 92.5 0 24.5-9.7 48-27.1 65.4l-71.1 71.1c-3.9 3.9-8.1 7.4-12.6 10.5l-47.5-47.5c16.5-.9 29.7-14.4 30.2-31.1 0-1.3 0-2.6 0-3.9 0-86.3-69.9-156.9-156.5-156.9-19.2 0-37.9 3.5-55.5 10.2L41-24.9zM225.9 160c.6 0 1.1 0 1.7 0 15.1 0 29.5 3.7 42.1 10.2 1.8 1.2 3.6 2.3 5.5 3.1 26.8 16.3 44.8 45.9 44.8 79.6 0 .4 0 .8 0 1.2L225.9 160zM346.2 416L192 261.8c1.2 84.6 69.6 152.9 154.1 154.1zM139.7 209.5l-45.3-45.3-48.6 48.6c-29.3 29.3-45.8 69.1-45.8 110.6 0 86.4 70 156.5 156.5 156.5 37.2 0 73.1-13.3 101.3-37.2-20.3-10.1-38.8-23.5-54.6-39.5-14 8.2-30.1 12.6-46.7 12.6-51.1 0-92.5-41.4-92.5-92.5 0-24.5 9.7-48 27.1-65.4l48.6-48.6z\"]\n};\nvar faChainBroken = faLinkSlash;\nvar faChainSlash = faLinkSlash;\nvar faUnlink = faLinkSlash;\nvar faArrowRotateRight = {\n  prefix: 'fas',\n  iconName: 'arrow-rotate-right',\n  icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M436.7 74.7L448 85.4 448 32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l47.9 0-7.6-7.2c-.2-.2-.4-.4-.6-.6-75-75-196.5-75-271.5 0s-75 196.5 0 271.5 196.5 75 271.5 0c8.2-8.2 15.5-16.9 21.9-26.1 10.1-14.5 30.1-18 44.6-7.9s18 30.1 7.9 44.6c-8.5 12.2-18.2 23.8-29.1 34.7-100 100-262.1 100-362 0S-25 175 75 75c99.9-99.9 261.7-100 361.7-.3z\"]\n};\nvar faArrowRightRotate = faArrowRotateRight;\nvar faArrowRotateForward = faArrowRotateRight;\nvar faRedo = faArrowRotateRight;\nvar faPenClip = {\n  prefix: 'fas',\n  iconName: 'pen-clip',\n  icon: [512, 512, [\"pen-alt\"], \"f305\", \"M404 0c19.2 0 37.6 7.6 51.1 21.2l35.7 35.7C504.4 70.4 512 88.8 512 108s-7.6 37.6-21.2 51.1L445.9 204 308 66.1 352.9 21.2C366.4 7.6 384.8 0 404 0zM274.1 100l0 0 137.9 137.9-215.1 215.1c-10.7 10.7-24.1 18.5-38.7 22.6L30.4 511.1c-8.3 2.3-17.3 0-23.4-6.2s-8.5-15.1-6.2-23.4L36.4 353.8c4.1-14.6 11.8-27.9 22.6-38.7L240.1 133.9 223 116.9c-9.4-9.4-24.6-9.4-33.9 0L89 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L155.1 82.9c28.1-28.1 73.7-28.1 101.8 0L274.1 100z\"]\n};\nvar faPenAlt = faPenClip;\nvar faDoorClosed = {\n  prefix: 'fas',\n  iconName: 'door-closed',\n  icon: [448, 512, [128682], \"f52a\", \"M32 64C32 28.7 60.7 0 96 0L352 0c35.3 0 64 28.7 64 64l0 384c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64zM320 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faArrowDownWideShort = {\n  prefix: 'fas',\n  iconName: 'arrow-down-wide-short',\n  icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M246.6 374.6l-96 96c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L320 96z\"]\n};\nvar faSortAmountAsc = faArrowDownWideShort;\nvar faSortAmountDown = faArrowDownWideShort;\nvar faCaretDown = {\n  prefix: 'fas',\n  iconName: 'caret-down',\n  icon: [320, 512, [], \"f0d7\", \"M140.3 376.8c12.6 10.2 31.1 9.5 42.8-2.2l128-128c9.2-9.2 11.9-22.9 6.9-34.9S301.4 192 288.5 192l-256 0c-12.9 0-24.6 7.8-29.6 19.8S.7 237.5 9.9 246.6l128 128 2.4 2.2z\"]\n};\nvar faK = {\n  prefix: 'fas',\n  iconName: 'k',\n  icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7C143.4 167.2 76.4 236.3 64 249L64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-107 64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nvar faCheckToSlot = {\n  prefix: 'fas',\n  iconName: 'check-to-slot',\n  icon: [576, 512, [\"vote-yea\"], \"f772\", \"M552 288c13.3 0 24 10.7 24 24l0 104c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 312c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104c0 8.8 7.2 16 16 16l448 0c8.8 0 16-7.2 16-16l0-104c0-13.3 10.7-24 24-24zM416 32c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-256 0c-35.3 0-64-28.7-64-64L96 96c0-35.3 28.7-64 64-64l256 0zm-37.1 84.6c-10.7-7.8-25.7-5.4-33.5 5.3l-85.6 117.7-26.5-27.4c-9.2-9.5-24.4-9.8-33.9-.6-9.5 9.2-9.8 24.4-.6 33.9l46.4 48c4.9 5.1 11.8 7.8 18.9 7.3s13.6-4.1 17.8-9.8L384.2 150.1c7.8-10.7 5.4-25.7-5.3-33.5z\"]\n};\nvar faVoteYea = faCheckToSlot;\nvar faFishFins = {\n  prefix: 'fas',\n  iconName: 'fish-fins',\n  icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9s-12.4 26-5.3 38.6L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3 15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8 39.2-29.4 67.2-64.7 81.6-89.5 5.8-9.9 5.8-22.2 0-32.1-14.4-24.8-42.5-60.1-81.6-89.5-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCompress = {\n  prefix: 'fas',\n  iconName: 'compress',\n  icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32S96 46.3 96 64l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 320c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0z\"]\n};\nvar faArrowUpAZ = {\n  prefix: 'fas',\n  iconName: 'arrow-up-a-z',\n  icon: [512, 512, [\"sort-alpha-up\"], \"f15e\", \"M412.6 49.7C407.2 38.8 396.1 32 384 32s-23.2 6.8-28.6 17.7c-50.7 101.3-77.3 154.7-80 160-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9c-2.7-5.3-29.3-58.7-80-160zM384 135.6l20.2 40.4-40.4 0 20.2-40.4zM288 320c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9S307.1 480 320 480l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9S460.9 288 448 288l-128 0c-17.7 0-32 14.3-32 32zM150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80z\"]\n};\nvar faSortAlphaUp = faArrowUpAZ;\nvar faUserGraduate = {\n  prefix: 'fas',\n  iconName: 'user-graduate',\n  icon: [448, 512, [], \"f501\", \"M241.3-13c-11.4-2.3-23.1-2.3-34.5 0L19.3 24.5C8.1 26.7 0 36.6 0 48 0 58.3 6.5 67.3 16 70.6L16 144 .3 222.6c-.2 .9-.3 1.9-.3 2.9 0 8 6.5 14.6 14.6 14.6l34.9 0c8 0 14.6-6.5 14.6-14.6 0-1-.1-1.9-.3-2.9L48 144 48 77.3 96 86.9 96 144c0 70.7 57.3 128 128 128s128-57.3 128-128l0-57.1 76.7-15.3C439.9 69.3 448 59.4 448 48s-8.1-21.3-19.3-23.5L241.3-13zM224 224c-44.2 0-80-35.8-80-80l160 0c0 44.2-35.8 80-80 80zM120.1 320.1C58.7 348.3 16 410.3 16 482.3 16 498.7 29.3 512 45.7 512l154.3 0 0-146-57.4-43c-6.5-4.9-15.2-6.2-22.6-2.8zM248 512l154.3 0c16.4 0 29.7-13.3 29.7-29.7 0-72-42.7-134-104.1-162.1-7.4-3.4-16.1-2.1-22.6 2.8l-57.4 43 0 146z\"]\n};\nvar faFileCode = {\n  prefix: 'fas',\n  iconName: 'file-code',\n  icon: [384, 512, [], \"f1c9\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM154.2 295.6c8.6-10.1 7.5-25.2-2.6-33.8s-25.2-7.5-33.8 2.6l-48 56c-7.7 9-7.7 22.2 0 31.2l48 56c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8l-34.6-40.4 34.6-40.4zm112-31.2c-8.6-10.1-23.8-11.2-33.8-2.6s-11.2 23.8-2.6 33.8l34.6 40.4-34.6 40.4c-8.6 10.1-7.5 25.2 2.6 33.8s25.2 7.5 33.8-2.6l48-56c7.7-9 7.7-22.2 0-31.2l-48-56z\"]\n};\nvar faSoap = {\n  prefix: 'fas',\n  iconName: 'soap',\n  icon: [512, 512, [129532], \"e06e\", \"M208-32a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM320 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 160l112 0c0 23.8 7.4 45.9 20.1 64L160 224c-53 0-96 43-96 96s43 96 96 96l192 0c53 0 96-43 96-96 0-35.1-18.9-65.9-47-82.6 19-19.8 30.7-46.6 31-76.1 45.4 7.6 80 47.1 80 94.7l0 128c0 53-43 96-96 96L96 480c-53 0-96-43-96-96L0 256c0-53 43-96 96-96zm64 112l192 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48s21.5-48 48-48z\"]\n};\nvar faRecycle = {\n  prefix: 'fas',\n  iconName: 'recycle',\n  icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M152.3 60C198.5-20 314-20 360.2 60l37.3 64.6 27.7-16c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3L436.9 223c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l27.7-16-37.3-64.6c-21.6-37.3-75.4-37.3-97 0l-5.3 9.1c-8.8 15.3-28.4 20.5-43.7 11.7S138.2 84.5 147 69.1l5.3-9.1zM449.7 279.1c15.3-8.8 34.9-3.6 43.7 11.7l5.3 9.1c46.2 80-11.5 180-103.9 180l-74.6 0 0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 32 74.6 0c43.1 0 70.1-46.7 48.5-84l-5.3-9.1c-8.8-15.3-3.6-34.9 11.7-43.7zM51 235.4l-27.7-16c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20L116.5 152c12.8-3.4 26 4.2 29.4 17l23.4 87.4c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-27.7-16-37.3 64.6c-21.6 37.3 5.4 84 48.5 84l10.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.6 0C25.3 480-32.4 380 13.8 300L51 235.4z\"]\n};\nvar faFaceGrinWink = {\n  prefix: 'fas',\n  iconName: 'face-grin-wink',\n  icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM328 196c-11 0-20 9-20 20s-9 20-20 20-20-9-20-20c0-33.1 26.9-60 60-60l16 0c33.1 0 60 26.9 60 60 0 11-9 20-20 20s-20-9-20-20-9-20-20-20l-16 0zM176 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faWaterLadder = {\n  prefix: 'fas',\n  iconName: 'water-ladder',\n  icon: [640, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M374.5 405.7c38.4-29 90.5-29 129 0 16.9 12.7 32.9 21.5 47.8 24.6 13.7 2.8 27.4 .9 42.3-10.3 10.6-8 25.6-5.9 33.6 4.7s5.8 25.7-4.8 33.6c-26.4 19.9-54.2 24.4-80.7 19.1-25.3-5.1-48.1-18.9-67.2-33.3-21.3-16.1-49.9-16.1-71.2 0-24.2 18.3-52.3 35.9-83.4 35.9s-59.1-17.7-83.3-35.9c-21.3-16.1-49.9-16.1-71.2 0-23.8 17.9-54.1 35.5-88.1 35.3-20.4-.1-40.7-6.7-59.8-21.1-10.6-8-12.7-23-4.7-33.6s23-12.7 33.6-4.7c11.3 8.5 21.6 11.4 31.2 11.5 17.6 .1 37.3-9.4 58.9-25.7 38.4-29 90.6-29 129 0 24 18.1 40.7 26.3 54.5 26.3s30.5-8.2 54.5-26.3zM511.8 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8-17.5 0-31.8 14.2-31.8 31.8l0 211.8c-23.1-5.1-44.9-4.4-64-.4l0-51.2-192 0 0 48.7c-5.3-.5-10.7-.8-16-.7-16.2 .1-32.4 2.7-48 8l0-216.2c0-52.9 42.9-95.8 95.7-95.8 48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8-17.5 0-31.7 14.2-31.7 31.8l0 96.2 192 0 0-96.2C416 74.9 458.9 32 511.8 32z\"]\n};\nvar faLadderWater = faWaterLadder;\nvar faSwimmingPool = faWaterLadder;\nvar faGemini = {\n  prefix: 'fas',\n  iconName: 'gemini',\n  icon: [448, 512, [], \"e849\", \"M395.4 8c13.2-11.7 33.3-10.5 45.1 2.7 11.7 13.2 10.5 33.4-2.7 45.2-2.7 2.4-23.1 19.8-58.3 36.8-8.2 4-17.2 7.9-27 11.6l0 303.2c9.8 3.8 18.8 7.6 27 11.6 18.2 8.8 32.4 17.7 42.2 24.5 3 2.1 5.5 4.1 7.7 5.7 1.2 .9 2.3 1.6 3.2 2.4 .2 .1 .3 .2 .5 .4 1.3 1.1 2.4 2 3.2 2.6 .4 .3 .7 .6 .9 .8 .1 .1 .3 .2 .3 .3 0 0 .1 .1 .1 .1l.1 0 0 0 0 0c3.3 2.9 5.9 6.4 7.7 10.2 5.4 11.3 3.8 25.1-5 35-.3 .4-.7 .7-1.1 1.1-11.9 12.2-31.2 13.1-44 1.7-.3-.3-1.5-1.3-3.5-2.8-.4-.3-.9-.7-1.5-1.1-1.9-1.4-4.2-3.1-7.1-5.1-2.2-1.5-4.7-3.1-7.4-4.8-6.6-4.1-14.8-8.8-24.4-13.5-7.4-3.6-15.6-7.2-24.7-10.5-13.6-5.1-29-9.6-46.1-12.9-5.7-1.1-11.6-2.1-17.7-2.8-12.1-1.6-25-2.5-38.6-2.5-54.2 0-97.4 14.4-127 28.8-3.4 1.6-6.5 3.3-9.5 4.9-5.1 2.8-9.7 5.4-13.8 7.9-3.3 2.1-6.3 4-8.9 5.7-1.7 1.2-3.2 2.3-4.6 3.3-1.9 1.4-3.5 2.5-4.6 3.4-1.4 1.1-2.2 1.8-2.5 2-13.2 11.7-33.3 10.5-45.1-2.8-2.2-2.5-4-5.2-5.2-8.1s-2.1-5.9-2.5-8.9c-1.4-10.2 2.2-20.8 10.4-28.2 .2-.2 .6-.5 1.2-1 .1-.1 .2-.2 .3-.3l3.2-2.6c1.7-1.3 3.7-2.8 6.2-4.6 1.6-1.2 3.3-2.5 5.2-3.8 9.8-6.8 24-15.7 42.2-24.5 8.2-4 17.2-7.9 27-11.6l0-303.2C86.7 100.6 77.7 96.7 69.5 92.8 34.3 75.7 14 58.3 11.3 55.9-1.9 44.2-3.1 24 8.6 10.7 20.3-2.5 40.5-3.7 53.7 8 55.1 9.2 70.7 22.2 97.5 35.2 127.1 49.6 170.3 64 224.5 64s97.4-14.4 127-28.8c26.8-13 42.4-26 43.8-27.2zM288.5 122.3c-19.7 3.5-41 5.7-64 5.7s-44.3-2.2-64-5.7l0 267.4c12.6-2.3 25.9-4 39.9-4.9 7.8-.5 15.8-.8 24-.8 23 0 44.4 2.2 64 5.7l0-267.4z\"]\n};\nvar faTowerCell = {\n  prefix: 'fas',\n  iconName: 'tower-cell',\n  icon: [576, 512, [], \"e585\", \"M59.6 9.8C47.3 4.8 33.3 10.7 28.4 23 15.2 55.5 8 90.9 8 128s7.2 72.5 20.4 105c5 12.3 19 18.2 31.3 13.2s18.2-19 13.2-31.3C62 188.2 56 158.8 56 128s6-60.2 16.9-87c5-12.3-1-26.3-13.2-31.3zm456.8 0c-12.3 5-18.2 19-13.2 31.3 10.9 26.8 16.9 56.2 16.9 87s-6 60.2-16.9 87c-5 12.3 1 26.3 13.2 31.3s26.3-1 31.3-13.2c13.1-32.5 20.4-67.9 20.4-105s-7.2-72.5-20.4-105c-5-12.3-19-18.2-31.3-13.2zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2 0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9l20.6-45.2 220.6 0 20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM376.5 400l-177 0 21.8-48 133.3 0 21.8 48zM288 205.3l44.8 98.7-89.7 0 44.8-98.7zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nvar faColonSign = {\n  prefix: 'fas',\n  iconName: 'colon-sign',\n  icon: [384, 512, [], \"e140\", \"M213.8 8.7c12.9 3.2 20.7 16.2 17.5 29.1l-4.6 18.5c15.4 .8 30.4 3.4 44.7 7.5l9.4-37.6C283.9 13.3 297 5.5 309.8 8.7S330.5 25 327.3 37.8L316 82.8c13.5 7.8 26 17.1 37.2 27.8 12.9 12.1 13.4 32.4 1.3 45.2s-32.4 13.4-45.2 1.3c-3.1-2.9-6.4-5.8-9.8-8.4L239.2 390c26.9-4.6 51.1-17.1 70.1-35.1 12.9-12.1 33.1-11.5 45.2 1.3s11.5 33.1-1.3 45.2c-34.3 32.3-80 52.8-130.5 54.4l-7.5 29.9c-3.2 12.9-16.2 20.7-29.1 17.5s-20.7-16.2-17.5-29.1l5.6-22.5c-15-3.2-29.4-8-42.9-14.4l-12.1 48.5c-3.2 12.9-16.2 20.7-29.1 17.5S69.5 487 72.7 474.2l16-63.9C44.3 373.6 16 318.1 16 256 16 159.2 84.8 78.4 176.3 60l8.4-33.8C187.9 13.3 201 5.5 213.8 8.7zM158 132.9c-46.1 21.8-78 68.7-78 123.1 0 30.5 10 58.6 26.9 81.3L158 132.9zM147.4 373.4c13 7.6 27.3 13.1 42.5 16.1l65.9-263.6c-12.6-3.8-25.9-5.9-39.8-5.9-1.8 0-3.5 0-5.3 .1L147.4 373.4z\"]\n};\nvar faLaptopFile = {\n  prefix: 'fas',\n  iconName: 'laptop-file',\n  icon: [576, 512, [], \"e51d\", \"M64 64C64 28.7 92.7 0 128 0L416 0c35.3 0 64 28.7 64 64l0 48-64 0 0-48-288 0 0 192 112 0 0 96-163.2 0C34.4 352 0 317.6 0 275.2 0 264.6 8.6 256 19.2 256L64 256 64 64zM529.9 257.9c9 9 14.1 21.2 14.1 33.9L544 464c0 26.5-21.5 48-48 48l-160 0c-26.5 0-48-21.5-48-48l0-256c0-26.5 21.5-48 48-48l76.1 0c12.7 0 24.9 5.1 33.9 14.1 20 20 47.9 47.9 83.9 83.9zM416 272c0 8.8 7.2 16 16 16l60.1 0-76.1-76.1 0 60.1z\"]\n};\nvar faBahai = {\n  prefix: 'fas',\n  iconName: 'bahai',\n  icon: [576, 512, [\"haykal\"], \"f666\", \"M288.4-8c13.2 0 25 8.1 29.8 20.4l31.9 82 77.2-42.3c11.6-6.3 25.8-4.9 35.9 3.5s14 22.3 9.7 34.8l-28.2 83.3 86.3 17.2c12.9 2.6 23 12.8 25.3 25.8s-3.6 26.1-14.9 32.9l-75.2 45.7 55 68.6c8.3 10.3 9.3 24.6 2.7 36s-19.5 17.6-32.6 15.6l-87-13.3-2 88c-.3 13.2-8.6 24.8-21 29.4s-26.3 1-35-9l-58-66.1-58 66.1c-8.7 9.9-22.6 13.5-35 9s-20.8-16.2-21-29.4l-2-88-87 13.3c-13 2-26-4.2-32.6-15.6s-5.5-25.7 2.7-36l55-68.6-75.2-45.7c-11.3-6.8-17.2-19.9-14.9-32.9s12.3-23.2 25.3-25.8l86.3-17.2-28.2-83.3c-4.2-12.5-.4-26.3 9.7-34.8s24.4-9.9 35.9-3.5l77.1 42.3 31.9-82C263.3 .1 275.2-8 288.4-8zm0 120.2L273 151.6c-3.3 8.6-10.2 15.3-18.9 18.5s-18.2 2.4-26.3-2l-37-20.3 13.6 40c3 8.7 2 18.3-2.6 26.3s-12.4 13.6-21.5 15.4l-41.4 8.3 36.1 21.9c7.9 4.8 13.3 12.7 14.9 21.8s-.8 18.4-6.5 25.6l-26.4 33 41.8-6.4c9.1-1.4 18.4 1.2 25.4 7.1s11.2 14.6 11.4 23.8l.9 42.2 27.9-31.8c6.1-6.9 14.8-10.9 24.1-10.9s18 4 24.1 10.9l27.9 31.8 .9-42.2c.2-9.2 4.4-17.9 11.4-23.8s16.3-8.5 25.4-7.1l41.8 6.4-26.4-33c-5.8-7.2-8.2-16.5-6.6-25.6s7-17 14.9-21.8l36.1-21.9-41.4-8.3c-9-1.8-16.9-7.4-21.5-15.4s-5.5-17.6-2.6-26.3l13.6-40-37 20.3c-8.1 4.4-17.7 5.2-26.3 2s-15.5-9.9-18.9-18.5l-15.3-39.4z\"]\n};\nvar faHaykal = faBahai;\nvar faMoneyBill1 = {\n  prefix: 'fas',\n  iconName: 'money-bill-1',\n  icon: [512, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm192 80a112 112 0 1 1 0 224 112 112 0 1 1 0-224zM64 184l0-48c0-4.4 3.6-8 8-8l48 0c4.4 0 8.1 3.6 7.5 8-3.6 29-26.6 51.9-55.5 55.5-4.4 .5-8-3.1-8-7.5zm0 144c0-4.4 3.6-8.1 8-7.5 29 3.6 51.9 26.6 55.5 55.5 .5 4.4-3.1 8-7.5 8l-48 0c-4.4 0-8-3.6-8-8l0-48zM440 191.5c-29-3.6-51.9-26.6-55.5-55.5-.5-4.4 3.1-8 7.5-8l48 0c4.4 0 8 3.6 8 8l0 48c0 4.4-3.6 8.1-8 7.5zM448 328l0 48c0 4.4-3.6 8-8 8l-48 0c-4.4 0-8.1-3.6-7.5-8 3.6-29 26.6-51.9 55.5-55.5 4.4-.5 8 3.1 8 7.5zM240 188c-11 0-20 9-20 20 0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l48 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faCloudBolt = {\n  prefix: 'fas',\n  iconName: 'cloud-bolt',\n  icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96l38.6 0 124.1-111c12.2-10.9 28-17 44.4-17 44.6 0 76.5 43 63.7 85.7L354.1 320 416 320c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0 1.1-5.2 1.6-10.5 1.6-16 0-44.2-35.8-80-80-80-24.3 0-46.1 10.9-60.8 28-18.7-35.7-56.1-60-99.2-60-61.9 0-112 50.1-112 112 0 7.1 .7 14.1 1.9 20.8-38.3 12.6-65.9 48.7-65.9 91.2zM160.6 400l61.8 0-31.2 104.1c-3.6 11.9 5.3 23.9 17.8 23.9 4.6 0 9-1.7 12.4-4.7L362.5 396.9c3.5-3.1 5.5-7.6 5.5-12.4 0-9.2-7.4-16.6-16.6-16.6l-61.8 0 31.2-104.1c3.6-11.9-5.3-23.9-17.8-23.9-4.6 0-9 1.7-12.4 4.7L149.5 371.1c-3.5 3.1-5.5 7.6-5.5 12.4 0 9.2 7.4 16.6 16.6 16.6z\"]\n};\nvar faThunderstorm = faCloudBolt;\nvar faEthernet = {\n  prefix: 'fas',\n  iconName: 'ethernet',\n  icon: [512, 512, [], \"f796\", \"M0 224L0 416c0 17.7 14.3 32 32 32l32 0 0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104 64 0 0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104 64 0 0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104 64 0 0-104c0-13.3 10.7-24 24-24s24 10.7 24 24l0 104 32 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32L160 64c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHryvniaSign = {\n  prefix: 'fas',\n  iconName: 'hryvnia-sign',\n  icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M336 149.4C336 77 268.5 23.5 198 40.1L93.2 64.9C76 68.9 65.4 86.2 69.4 103.4s21.3 27.9 38.5 23.8l104.8-24.7c30.3-7.1 59.3 15.8 59.3 46.9 0 17.6-9.6 33.8-25 42.3l-.7 .4-222.3 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32.4 0c5.5-13.3 8.4-27.8 8.4-42.6zM360 272L24 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l33.3 0c-6.1 13.4-9.3 28.1-9.3 43.3 0 64.1 56.9 113.4 120.4 104.2l137.9-19.9c17.5-2.5 29.6-18.7 27.1-36.2s-18.8-29.6-36.2-27.1L159.2 404.2c-24.9 3.6-47.2-15.7-47.2-40.9 0-15.1 8.2-28.9 21.4-36.2l13-7.1 213.6 0c13.3 0 24-10.7 24-24s-10.7-24-24-24z\"]\n};\nvar faHryvnia = faHryvniaSign;\nvar faEyeSlash = {\n  prefix: 'fas',\n  iconName: 'eye-slash',\n  icon: [576, 512, [], \"f070\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-96.4-96.4c2.7-2.4 5.4-4.8 8-7.2 46.8-43.5 78.1-95.4 93-131.1 3.3-7.9 3.3-16.7 0-24.6-14.9-35.7-46.2-87.7-93-131.1-47.1-43.7-111.8-80.6-192.6-80.6-56.8 0-105.6 18.2-146 44.2L41-24.9zM204.5 138.7c23.5-16.8 52.4-26.7 83.5-26.7 79.5 0 144 64.5 144 144 0 31.1-9.9 59.9-26.7 83.5l-34.7-34.7c12.7-21.4 17-47.7 10.1-73.7-13.7-51.2-66.4-81.6-117.6-67.9-8.6 2.3-16.7 5.7-24 10l-34.7-34.7zM325.3 395.1c-11.9 3.2-24.4 4.9-37.3 4.9-79.5 0-144-64.5-144-144 0-12.9 1.7-25.4 4.9-37.3L69.4 139.2c-32.6 36.8-55 75.8-66.9 104.5-3.3 7.9-3.3 16.7 0 24.6 14.9 35.7 46.2 87.7 93 131.1 47.1 43.7 111.8 80.6 192.6 80.6 37.3 0 71.2-7.9 101.5-20.6l-64.2-64.2z\"]\n};\nvar faCartFlatbedSuitcase = {\n  prefix: 'fas',\n  iconName: 'cart-flatbed-suitcase',\n  icon: [576, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0L48 0c44.2 0 80 35.8 80 80l0 288c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-34.7 0c1.8 5 2.7 10.4 2.7 16 0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16l-197.5 0c1.8 5 2.7 10.4 2.7 16 0 26.5-21.5 48-48 48s-48-21.5-48-48c0-6 1.1-11.7 3.1-17-38.1-6.2-67.1-39.2-67.1-79L64 80c0-8.8-7.2-16-16-16L32 64C14.3 64 0 49.7 0 32zM176 144c0-26.5 21.5-48 48-48l32 0 0-24c0-30.9 25.1-56 56-56l64 0c30.9 0 56 25.1 56 56l0 24 32 0c26.5 0 48 21.5 48 48l0 144c0 26.5-21.5 48-48 48l-240 0c-26.5 0-48-21.5-48-48l0-144zM384 96l0-24c0-4.4-3.6-8-8-8l-64 0c-4.4 0-8 3.6-8 8l0 24 80 0z\"]\n};\nvar faLuggageCart = faCartFlatbedSuitcase;\nvar faRadiation = {\n  prefix: 'fas',\n  iconName: 'radiation',\n  icon: [576, 512, [], \"f7b9\", \"M446.2 34.5c-14.2-10.1-33.5-4.6-42.2 10.5L331.6 170.3c31.3 15.8 52.8 48.3 52.8 85.7l144 0c17.7 0 32.2-14.4 30.1-31.9-9.1-78.1-51.4-146.1-112.3-189.6zM172.7 44.9C164 29.8 144.7 24.3 130.5 34.5 69.6 77.9 27.3 145.9 18.2 224.1 16.1 241.6 30.7 256 48.3 256l144 0c0-37.5 21.5-69.9 52.8-85.7L172.7 44.9zm-9.4 416.8c-8.7 15.1-3.8 34.5 12 41.8 34.4 15.7 72.7 24.5 113 24.5s78.6-8.8 113-24.5c15.8-7.2 20.7-26.7 12-41.8L341 336.3c-15.1 9.9-33.2 15.7-52.6 15.7s-37.5-5.8-52.6-15.7L163.3 461.7zM288.3 304a48 48 0 1 0 -.7-96 48 48 0 1 0 .7 96z\"]\n};\nvar faFileWord = {\n  prefix: 'fas',\n  iconName: 'file-word',\n  icon: [384, 512, [], \"f1c2\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM135.4 274.8c-2.9-12.9-15.7-21.1-28.6-18.2s-21.1 15.7-18.2 28.6l32 144c2.3 10.5 11.4 18.2 22.2 18.8s20.6-6.1 24-16.4l25.2-75.7 25.2 75.7c3.4 10.2 13.2 16.9 24 16.4s19.9-8.2 22.2-18.8l32-144c2.9-12.9-5.3-25.8-18.2-28.6s-25.8 5.3-28.6 18.2l-13.2 59.4-20.6-61.8c-3.3-9.8-12.4-16.4-22.8-16.4s-19.5 6.6-22.8 16.4l-20.6 61.8-13.2-59.4z\"]\n};\nvar faBedPulse = {\n  prefix: 'fas',\n  iconName: 'bed-pulse',\n  icon: [640, 512, [\"procedures\"], \"f487\", \"M531.2-22.4L572 32 616 32c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-7.6 0-14.7-3.6-19.2-9.6l-24.1-32.1-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L387.2 80 344 80c-13.3 0-24-10.7-24-24s10.7-24 24-24l56 0c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5c3.6-7.6 10.9-12.8 19.3-13.7s16.6 2.7 21.6 9.5zM320 160c0-17.7 14.3-32 32-32l9.5 0 26.6 39.9c14.4 21.6 39.3 33.8 65.2 31.9s48.8-17.6 59.8-41.1L527 129.2c45.9 7.2 81 46.9 81 94.8l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64-448 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32L32 64c0-17.7 14.3-32 32-32S96 46.3 96 64l0 224 224 0 0-128zM144 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faProcedures = faBedPulse;\nvar faTents = {\n  prefix: 'fas',\n  iconName: 'tents',\n  icon: [576, 512, [], \"e582\", \"M539.9 352l-95.6 0-8.4-66.1c-2.9-23.2-15.9-43.9-35.4-56.8L252.2 131.5c-18-11.9-39.7-15.7-60.1-11.5 2.5-4.3 5.9-7.9 10.1-10.7L350.6 11.6c10.7-7 24.5-7 35.2 0l148.4 97.7c7.8 5.1 13 13.4 14.2 22.7l23.3 184c2.4 19.1-12.5 36-31.7 36zM4.8 476l23.3-184c1.2-9.3 6.3-17.6 14.2-22.7l148.4-97.7c10.7-7 24.5-7 35.2 0l148.4 97.7c7.8 5.1 13 13.4 14.2 22.7l23.3 184c2.4 19.1-12.5 36-31.7 36l-49.7 0c-11.2 0-21.5-5.8-27.3-15.4l-77-126.7c-1.7-2.8-4.8-4.6-8.1-4.6-5.3 0-9.5 4.3-9.5 9.5l0 105.2c0 17.7-14.3 32-32 32L36.5 512c-19.3 0-34.2-16.9-31.7-36z\"]\n};\nvar faMugHot = {\n  prefix: 'fas',\n  iconName: 'mug-hot',\n  icon: [576, 512, [9749], \"f7b6\", \"M152-16c-13.3 0-24 10.7-24 24 0 38.9 23.4 59.4 39.1 73.1l1.1 1c16.3 14.3 23.8 21.8 23.8 37.9 0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C183.5 31.7 176 24.1 176 8 176-5.3 165.3-16 152-16zM96 192c-17.7 0-32 14.3-32 32l0 192c0 53 43 96 96 96l192 0c41.8 0 77.4-26.7 90.5-64l5.5 0c70.7 0 128-57.3 128-128S518.7 192 448 192L96 192zM448 384l0-128c35.3 0 64 28.7 64 64s-28.7 64-64 64zM288 8c0-13.3-10.7-24-24-24S240-5.3 240 8c0 38.9 23.4 59.4 39.1 73.1l1.1 1c16.3 14.3 23.8 21.8 23.8 37.9 0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C295.5 31.7 288 24.1 288 8z\"]\n};\nvar faBolt = {\n  prefix: 'fas',\n  iconName: 'bolt',\n  icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M338.8-9.9c11.9 8.6 16.3 24.2 10.9 37.8L271.3 224 416 224c13.5 0 25.5 8.4 30.1 21.1s.7 26.9-9.6 35.5l-288 240c-11.3 9.4-27.4 9.9-39.3 1.3s-16.3-24.2-10.9-37.8L176.7 288 32 288c-13.5 0-25.5-8.4-30.1-21.1s-.7-26.9 9.6-35.5l288-240c11.3-9.4 27.4-9.9 39.3-1.3z\"]\n};\nvar faZap = faBolt;\nvar faJar = {\n  prefix: 'fas',\n  iconName: 'jar',\n  icon: [320, 512, [], \"e516\", \"M32-8c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 16C42.7 16 32 5.3 32-8zM0 128C0 92.7 28.7 64 64 64l192 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 128zm96 64c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L96 192z\"]\n};\nvar faTruckPlane = {\n  prefix: 'fas',\n  iconName: 'truck-plane',\n  icon: [640, 512, [], \"e58f\", \"M144 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 320c0 32.5 12.1 62.1 32 84.7l0 27.3c0 7.1 .9 14.1 2.7 20.7L192 480 83.9 507C73.8 509.6 64 501.9 64 491.5l0-19.8c0-4.9 2.2-9.5 6-12.5l74-59.2 0-57.6-122.1 48.8C11.4 395.4 0 387.7 0 376.4l0-44c0-8 3-15.6 8.3-21.5L144 161.6 144 48zm224 80l192 0c44.2 0 80 35.8 80 80l0 160c0 26.2-12.6 49.4-32 64l0 48c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c-19.4-14.6-32-37.8-32-64l0-160c0-44.2 35.8-80 80-80zm0 176l192 0 0-32c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32l0 32zm0 88a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm216-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHandHoldingHeart = {\n  prefix: 'fas',\n  iconName: 'hand-holding-heart',\n  icon: [576, 512, [], \"f4be\", \"M279.6 31C265.5 11.5 242.9 0 218.9 0 177.5 0 144 33.5 144 74.9l0 2.4c0 64.4 82 133.4 122.2 163.3 13 9.7 30.5 9.7 43.5 0 40.2-30 122.2-98.9 122.2-163.3l0-2.4c0-41.4-33.5-74.9-74.9-74.9-24 0-46.6 11.5-60.7 31L288 42.7 279.6 31zM109.3 341.5L66.7 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l320.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 280 416c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-152.2 0c-33.9 0-66.5 13.5-90.5 37.5z\"]\n};\nvar faArrowRotateLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-rotate-left',\n  icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M256 64c-56.8 0-107.9 24.7-143.1 64l47.1 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 192c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0S64 14.3 64 32l0 54.7C110.9 33.6 179.5 0 256 0 397.4 0 512 114.6 512 256S397.4 512 256 512c-87 0-163.9-43.4-210.1-109.7-10.1-14.5-6.6-34.4 7.9-44.6s34.4-6.6 44.6 7.9c34.8 49.8 92.4 82.3 157.6 82.3 106 0 192-86 192-192S362 64 256 64z\"]\n};\nvar faArrowLeftRotate = faArrowRotateLeft;\nvar faArrowRotateBack = faArrowRotateLeft;\nvar faArrowRotateBackward = faArrowRotateLeft;\nvar faUndo = faArrowRotateLeft;\nvar faFaceAngry = {\n  prefix: 'fas',\n  iconName: 'face-angry',\n  icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM256 368c24.1 0 45.4 11.8 58.5 30 7.7 10.8 22.7 13.2 33.5 5.5s13.2-22.7 5.5-33.5c-21.7-30.2-57.3-50-97.5-50s-75.7 19.8-97.5 50c-7.7 10.8-5.3 25.8 5.5 33.5s25.8 5.3 33.5-5.5c13.1-18.2 34.4-30 58.5-30zm-80-96c17.7 0 32-14.3 32-32l0-.3 9.7 3.2c10.5 3.5 21.8-2.2 25.3-12.6s-2.2-21.8-12.6-25.3l-96-32c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3l28.9 9.6c-4.1 5.4-6.6 12.1-6.6 19.4 0 17.7 14.3 32 32 32zm192-32c0-7.3-2.4-14-6.6-19.4l28.9-9.6c10.5-3.5 16.1-14.8 12.6-25.3s-14.8-16.1-25.3-12.6l-96 32c-10.5 3.5-16.1 14.8-12.6 25.3s14.8 16.1 25.3 12.6l9.7-3.2 0 .3c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faBurst = {\n  prefix: 'fas',\n  iconName: 'burst',\n  icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7S-2.3 28 4.2 37.6l112 163.3-99.6 32.3C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4-52.9 100.6c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1l-52.9-100.6 103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8l-106.5-34.5 25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7-34.5-106.5C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6L200.9 116.2 37.6 4.2z\"]\n};\nvar faZ = {\n  prefix: 'fas',\n  iconName: 'z',\n  icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32l320 0c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416 352 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nvar faBandage = {\n  prefix: 'fas',\n  iconName: 'bandage',\n  icon: [576, 512, [129657, \"band-aid\"], \"f462\", \"M464 416l48 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-48 0 0 320zM416 96l-256 0 0 320 256 0 0-320zM64 96C28.7 96 0 124.7 0 160L0 352c0 35.3 28.7 64 64 64l48 0 0-320-48 0zM216 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM216 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBandAid = faBandage;\nvar faPlaneCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'plane-circle-exclamation',\n  icon: [640, 512, [], \"e556\", \"M232 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 78 71.5c-69.3 29-118 97.4-118 177.2 0 49.3 18.6 94.3 49.1 128.3L288 512 179.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C58.7 396.4 48 388.7 48 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L232 151.3 232 24zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 228a20 20 0 1 0 0-40 20 20 0 1 0 0 40zm0-180c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nvar faBusSide = {\n  prefix: 'fas',\n  iconName: 'bus-side',\n  icon: [640, 512, [], \"e81d\", \"M480 0c88.4 0 160 71.6 160 160l0 224c0 35.3-28.7 64-64 64l-5.6 0c-13.2 37.3-48.6 64-90.4 64s-77.3-26.7-90.4-64l-139.1 0c-13.2 37.3-48.7 64-90.4 64s-77.2-26.7-90.4-64L64 448c-35.3 0-64-28.7-64-64L0 96C0 43 43 0 96 0L480 0zM160 368a48 48 0 1 0 0 96 48 48 0 1 0 0-96zm320 0a48 48 0 1 0 0 96 48 48 0 1 0 0-96zm0-304c-17.7 0-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-128c0-53-43-96-96-96zM248 224l104 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-104 0 0 160zM96 64C78.3 64 64 78.3 64 96l0 96c0 17.7 14.3 32 32 32l104 0 0-160-104 0z\"]\n};\nvar faBugs = {\n  prefix: 'fas',\n  iconName: 'bugs',\n  icon: [576, 512, [], \"e4d0\", \"M447.5 174.6c8.8-8.4 22.7-8.9 32.2-.8s11 21.9 4.1 31.9l-1.5 1.9-23 26.7c26.7 13.5 46.3 39.1 51.4 69.6l25.3 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 32 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-25.3 0c-7.6 45.4-47.1 80-94.7 80s-87-34.6-94.7-80L296 432c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-32-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l25.3 0c5.1-30.5 24.7-56.1 51.4-69.6l-22.9-26.7c-8.6-10.1-7.5-25.2 2.6-33.8s25.2-7.5 33.8 2.6l29.8 34.8 29.8-34.8 1.7-1.8zm-256-192c8.8-8.4 22.7-8.9 32.2-.8s11 21.9 4.1 31.9l-1.5 1.9-23 26.7C230 55.9 249.5 81.5 254.7 112l25.3 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 32 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-25.3 0c-7.6 45.4-47.1 80-94.7 80s-87-34.6-94.7-80L40 240c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-32-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l25.3 0C70.5 81.5 90 55.9 116.7 42.4L93.8 15.6C85.2 5.6 86.3-9.6 96.4-18.2s25.2-7.5 33.8 2.6l29.8 34.8 29.8-34.8 1.7-1.8z\"]\n};\nvar faBeerMugEmpty = {\n  prefix: 'fas',\n  iconName: 'beer-mug-empty',\n  icon: [576, 512, [\"beer\"], \"f0fc\", \"M64 80c0-26.5 21.5-48 48-48l288 0c26.5 0 48 21.5 48 48l0 16 64 0c35.3 0 64 28.7 64 64l0 108.2c0 24.2-13.7 46.4-35.4 57.2L448 371.8 448 384c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L64 80zM448 300.2l64-32 0-108.2-64 0 0 140.2zM192 152c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 208c0 13.3 10.7 24 24 24s24-10.7 24-24l0-208zm88 0c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 208c0 13.3 10.7 24 24 24s24-10.7 24-24l0-208zm88 0c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 208c0 13.3 10.7 24 24 24s24-10.7 24-24l0-208z\"]\n};\nvar faBeer = faBeerMugEmpty;\nvar faPersonCircleCheck = {\n  prefix: 'fas',\n  iconName: 'person-circle-check',\n  icon: [640, 512, [], \"e53e\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n};\nvar faStapler = {\n  prefix: 'fas',\n  iconName: 'stapler',\n  icon: [640, 512, [], \"e5af\", \"M640 299.3L640 432c0 26.5-21.5 48-48 48L64 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0 0-48-352 0c-17.7 0-32-14.3-32-32l0-116.6-30.2-5.4c-19.6-3.5-33.8-20.5-33.8-40.4 0-8.9 2.9-17.5 8.2-24.6l35.6-47.5c32.8-43.8 84.4-69.6 139.1-69.6 27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304l0-16-320-57.1 0 73.1 320 0z\"]\n};\nvar faHouseMedicalCircleCheck = {\n  prefix: 'fas',\n  iconName: 'house-medical-circle-check',\n  icon: [640, 512, [], \"e511\", \"M309.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S50.8 272 64 272l16 0 0 176c0 35.3 28.7 64 64 64l196 0c-21.2-29.5-34.3-65.3-35.9-104L272 408c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 20 0c34.9-48.5 91.7-80 156-80 10.7 0 21.1 .9 31.3 2.5L309.8 8.6zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n};\nvar faNairaSign = {\n  prefix: 'fas',\n  iconName: 'naira-sign',\n  icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64l0 192-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 89.5 0 107.8 161.8c7.8 11.7 22.4 17 35.9 12.9S384 462.1 384 448l0-144 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192-57.5 0-139.8-209.7zM294.5 304l25.5 0 0 38.3-25.5-38.3zM185.5 256l-57.5 0 0-86.3 57.5 86.3z\"]\n};\nvar faWifi = {\n  prefix: 'fas',\n  iconName: 'wifi',\n  icon: [576, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M288 96c-90.9 0-173.2 36-233.7 94.6-12.7 12.3-33 12-45.2-.7s-12-33 .7-45.2C81.7 74.9 179.9 32 288 32S494.3 74.9 566.3 144.7c12.7 12.3 13 32.6 .7 45.2s-32.6 13-45.2 .7C461.2 132 378.9 96 288 96zM240 432a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM168 326.2c-11.7 13.3-31.9 14.5-45.2 2.8s-14.5-31.9-2.8-45.2C161 237.4 221.1 208 288 208s127 29.4 168 75.8c11.7 13.3 10.4 33.5-2.8 45.2s-33.5 10.4-45.2-2.8C378.6 292.9 335.8 272 288 272s-90.6 20.9-120 54.2z\"]\n};\nvar faWifi3 = faWifi;\nvar faWifiStrong = faWifi;\nvar faMoneyCheckDollar = {\n  prefix: 'fas',\n  iconName: 'money-check-dollar',\n  icon: [512, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM296 288l128 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-128 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm-24-88c0-13.3 10.7-24 24-24l128 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-128 0c-13.3 0-24-10.7-24-24zM148 144c11 0 20 9 20 20l0 4 8 0c11 0 20 9 20 20s-9 20-20 20l-47.5 0c-6.9 0-12.5 5.6-12.5 12.5 0 6.1 4.4 11.3 10.4 12.3l41.7 7c25.3 4.2 43.9 26.1 43.9 51.8 0 26.1-19 47.7-44 51.8l0 4.7c0 11-9 20-20 20s-20-9-20-20l0-4-24 0c-11 0-20-9-20-20s9-20 20-20l55.5 0c6.9 0 12.5-5.6 12.5-12.5 0-6.1-4.4-11.3-10.4-12.3l-41.7-7C94.5 268 76 246.1 76 220.5 76 191.7 99.2 168.3 128 168l0-4c0-11 9-20 20-20z\"]\n};\nvar faMoneyCheckAlt = faMoneyCheckDollar;\nvar faEyeLowVision = {\n  prefix: 'fas',\n  iconName: 'eye-low-vision',\n  icon: [576, 512, [\"low-vision\"], \"f2a8\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-96.4-96.4c2.7-2.4 5.4-4.8 8-7.2 46.8-43.5 78.1-95.4 93-131.1 3.3-7.9 3.3-16.7 0-24.6-14.9-35.7-46.2-87.7-93-131.1-47.1-43.7-111.8-80.6-192.6-80.6-56.8 0-105.6 18.2-146 44.2L41-24.9zM204.5 138.7c23.5-16.8 52.4-26.7 83.5-26.7 79.5 0 144 64.5 144 144 0 31.1-9.9 59.9-26.7 83.5l-34.7-34.7c12.7-21.4 17-47.7 10.1-73.7-13.7-51.2-66.4-81.6-117.6-67.9-8.6 2.3-16.7 5.7-24 10l-34.7-34.7zM88 157.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L328.2 466c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L88 157.9zM45.7 251.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L181.9 455.5c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L45.7 251.3z\"]\n};\nvar faLowVision = faEyeLowVision;\nvar faCircleArrowUp = {\n  prefix: 'fas',\n  iconName: 'circle-arrow-up',\n  icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm17-377l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-39-39 0 150.1c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-150.1-39 39c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0z\"]\n};\nvar faArrowCircleUp = faCircleArrowUp;\nvar faCameraRetro = {\n  prefix: 'fas',\n  iconName: 'camera-retro',\n  icon: [512, 512, [128247], \"f083\", \"M0 416l0-208 136.2 0c13.5-20.2 32-36.8 53.7-48L0 160 0 125.7c0-35.3 28.7-64 64-64l.1 0C65.3 45.1 79.1 32 96 32l32 0c16.9 0 30.7 13.1 31.9 29.7l32.1 0 51.2-23.8c8.4-3.9 17.6-6 26.9-6L448 32c35.3 0 64 28.7 64 64l0 64-190 0c21.7 11.2 40.2 27.8 53.7 48l136.2 0 0 208c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64zM256 192a96.1 96.1 0 1 0 0 192.1 96.1 96.1 0 1 0 0-192.1z\"]\n};\nvar faCapsules = {\n  prefix: 'fas',\n  iconName: 'capsules',\n  icon: [576, 512, [], \"f46b\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112-96 0 0-112zm-64 0l0 288c0 61.9 50.1 112 112 112s112-50.1 112-112l0-105.8 116.3 169.5c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 145.3c-35.5-51.7-105.3-64.3-156-28.1-5.6 4-10.7 8.4-15.3 13.1l0-18.3C256 50.1 205.9 0 144 0S32 50.1 32 112zM296.6 240.2c-16-23.3-10-55.3 11.9-71 21.2-15.1 50.5-10.3 66 12.2l67 97.6-79.9 55.9-65-94.8z\"]\n};\nvar faPoo = {\n  prefix: 'fas',\n  iconName: 'poo',\n  icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1 0 44.1-35.7 79.9-79.8 80L160 128c-35.3 0-64 28.7-64 64 0 19.1 8.4 36.3 21.7 48L104 240c-39.8 0-72 32.2-72 72 0 23.2 11 43.8 28 57-34.1 5.7-60 35.3-60 71 0 39.8 32.2 72 72 72l368 0c39.8 0 72-32.2 72-72 0-35.7-25.9-65.3-60-71 17-13.2 28-33.8 28-57 0-39.8-32.2-72-72-72l-13.7 0c13.3-11.7 21.7-28.9 21.7-48 0-35.3-28.7-64-64-64l-5.5 0c3.5-10 5.5-20.8 5.5-32 0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7 0-6.8 5.5-12.3 12.3-12.3l167.4 0c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nvar faVolume = {\n  prefix: 'fas',\n  iconName: 'volume',\n  icon: [512, 512, [128265, \"volume-medium\"], \"f6a8\", \"M48 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L96 160 48 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48zM441.1 107c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C443.3 170.7 464 210.9 464 256s-20.7 85.3-53.2 111.8c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5c43.2-35.2 70.9-88.9 70.9-149s-27.7-113.8-70.9-149zm-60.5 74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C361.1 227.6 368 241 368 256s-6.9 28.4-17.7 37.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C402.1 312.9 416 286.1 416 256s-13.9-56.9-35.5-74.5z\"]\n};\nvar faVolumeMedium = faVolume;\nvar faElevator = {\n  prefix: 'fas',\n  iconName: 'elevator',\n  icon: [512, 512, [], \"e16d\", \"M292.7-4.7l64 64c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5-32 432-32L304-32c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4zm-160-22.6l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4S73.5 64 80 64l128 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm192 0c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faTag = {\n  prefix: 'fas',\n  iconName: 'tag',\n  icon: [512, 512, [127991], \"f02b\", \"M32.5 96l0 149.5c0 17 6.7 33.3 18.7 45.3l192 192c25 25 65.5 25 90.5 0L483.2 333.3c25-25 25-65.5 0-90.5l-192-192C279.2 38.7 263 32 246 32L96.5 32c-35.3 0-64 28.7-64 64zm112 16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFileCircleMinus = {\n  prefix: 'fas',\n  iconName: 'file-circle-minus',\n  icon: [576, 512, [], \"e4ed\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l180 0c-22.7-31.5-36-70.2-36-112 0-100.6 77.4-183.2 176-191.3l0-38.1c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0L96 0zM357.5 176L264 176c-13.3 0-24-10.7-24-24L240 58.5 357.5 176zM576 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nvar faDownLong = {\n  prefix: 'fas',\n  iconName: 'down-long',\n  icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M137.4 534.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9S300.9 352 288 352l-64 0 0-336c0-26.5-21.5-48-48-48l-32 0c-26.5 0-48 21.5-48 48l0 336-64 0c-12.9 0-24.6 7.8-29.6 19.8S.2 397.5 9.4 406.6l128 128z\"]\n};\nvar faLongArrowAltDown = faDownLong;\nvar faCompactDisc = {\n  prefix: 'fas',\n  iconName: 'compact-disc',\n  icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zm-56-16c0-32.4 16.3-66.6 42.8-93.2S207.6 104 240 104c13.3 0 24-10.7 24-24s-10.7-24-24-24c-47.9 0-93.7 23.5-127.1 56.9S56 192.1 56 240c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faSuitcaseRolling = {\n  prefix: 'fas',\n  iconName: 'suitcase-rolling',\n  icon: [384, 512, [], \"f5c1\", \"M144 24c0-4.4 3.6-8 8-8l80 0c4.4 0 8 3.6 8 8l0 72-96 0 0-72zM320 96l-32 0 0-72c0-30.9-25.1-56-56-56l-80 0C121.1-32 96-6.9 96 24l0 72-32 0C28.7 96 0 124.7 0 160L0 448c0 35.3 28.7 64 64 64 0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64zM120 208l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 128l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faBookQuran = {\n  prefix: 'fas',\n  iconName: 'book-quran',\n  icon: [448, 512, [\"quran\"], \"f687\", \"M64 512l288 0c53 0 96-43 96-96l0-320c0-53-43-96-96-96L48 0C21.5 0 0 21.5 0 48L0 336c0 20.9 13.4 38.7 32 45.3L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0zM352 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0 0-64 256 0zM273.1 144.4c2.5-6.1 11.2-6.1 13.7 0l10.3 24.8 26.8 2.1c6.6 .5 9.2 8.7 4.2 13L307.8 201.9 314 228c1.5 6.4-5.5 11.5-11.1 8.1l-22.9-14-22.9 14c-5.6 3.4-12.6-1.6-11.1-8.1l6.2-26.1-20.4-17.5c-5-4.3-2.3-12.5 4.2-13l26.8-2.1 10.3-24.8zM100 192c0-68.5 55.5-124 124-124 23.8 0 46.1 6.7 65 18.4 4.8 2.9 6.9 8.8 5 14.1s-7.1 8.6-12.7 8c-3.1-.3-6.2-.5-9.4-.5-46.4 0-84 37.6-84 84s37.6 84 84 84c3.2 0 6.3-.2 9.4-.5 5.6-.6 10.8 2.7 12.7 8s-.3 11.2-5 14.1c-18.9 11.7-41.2 18.4-65 18.4-68.5 0-124-55.5-124-124z\"]\n};\nvar faQuran = faBookQuran;\nvar faPhoneSlash = {\n  prefix: 'fas',\n  iconName: 'phone-slash',\n  icon: [576, 512, [], \"f3dd\", \"M535-24.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 537.1c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L141.5 368.6C89.2 310.5 51.6 238.8 34.8 159.4 18.7 83.1 73.9 20.6 138.5 2.9l5.5-1.5c19.7-5.4 40.3 4.7 48.1 23.5l40.5 97.3c6.9 16.5 2.1 35.6-11.8 47l-44.1 36.1c12.9 28.5 29.6 54.8 49.5 78.5L535-24.9zm-150.4 534c-63-13.4-121.3-39.8-171.7-76.3L297.8 348c12.2 8.2 25 15.6 38.3 22.2L374.7 323c11.3-13.9 30.4-18.6 47-11.8L519 351.8c18.8 7.8 28.9 28.4 23.5 48.1l-1.5 5.5c-17.6 64.6-80.2 119.8-156.4 103.7z\"]\n};\nvar faRoadCircleCheck = {\n  prefix: 'fas',\n  iconName: 'road-circle-check',\n  icon: [640, 512, [], \"e564\", \"M288 32l-76.3 0c-29.4 0-55.1 20.1-62.1 48.6L65.4 420.5C57.9 450.7 80.8 480 112 480l209.4 0c-11.2-24.4-17.4-51.4-17.4-80 0-28.6 6.2-55.7 17.4-80-.5 0-1 0-1.5 0-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49c35.2-39.9 86.7-65 144-65 9 0 17.8 .6 26.5 1.8l-32-129.2C483.4 52.1 457.8 32 428.3 32l-76.4 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM640 400a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-86.6-60.9c7.1 5.2 8.7 15.2 3.5 22.3l-64 88c-2.8 3.8-7 6.2-11.7 6.5s-9.3-1.3-12.6-4.6l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l26.8 26.8 53-72.9c5.2-7.1 15.2-8.7 22.4-3.5z\"]\n};\nvar faShopLock = {\n  prefix: 'fas',\n  iconName: 'shop-lock',\n  icon: [640, 512, [], \"e4a5\", \"M21.5 181.1L78.3 67.4C89.2 45.7 111.3 32 135.6 32l304.9 0c24.2 0 46.4 13.7 57.2 35.4l55.6 111.1c-8.2-1.6-16.6-2.5-25.2-2.5-53.7 0-99.7 33.1-118.7 80l-57.3 0 0 176c0 26.5-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48l0-176.1c-26.8-1.9-48-24.3-48-51.6 0-8 1.9-16 5.5-23.2zM128 256l0 112c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-112-160 0zm432 48.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM416 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nvar faImagePortrait = {\n  prefix: 'fas',\n  iconName: 'image-portrait',\n  icon: [384, 512, [\"portrait\"], \"f3e0\", \"M0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM80 368c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16 0-44.2-35.8-80-80-80l-64 0c-44.2 0-80 35.8-80 80zM192 248a56 56 0 1 0 0-112 56 56 0 1 0 0 112z\"]\n};\nvar faPortrait = faImagePortrait;\nvar faBridgeLock = {\n  prefix: 'fas',\n  iconName: 'bridge-lock',\n  icon: [576, 512, [], \"e4cc\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0 0 32.2c13.8 .6 27.2 2.8 40 6.4l0 50.7c-14.8-6-31-9.3-48-9.3-70.7 0-128 57.3-128 128l0 24.4c-.4 .3-.7 .6-1.1 1-17.3-25-46.2-41.3-78.9-41.3-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-94c0-38.8-26.4-72.6-64-82l0-112 40 0 0-64-8 0C14.3 96 0 81.7 0 64zm424 68.6l0-36.6-80 0 0 64 18.8 0c18.2-12.8 38.9-22.2 61.2-27.4zM216 96l0 64 80 0 0-64-80 0zm-48 0l-80 0 0 64 80 0 0-64zM496 304.1c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0 0-47.9zM352 400c0-20.9 13.4-38.7 32-45.3l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nvar faHammer = {\n  prefix: 'fas',\n  iconName: 'hammer',\n  icon: [640, 512, [128296], \"f6e3\", \"M246.9 18.3L271 3.8c21.6-13 46.3-19.8 71.5-19.8 36.8 0 72.2 14.6 98.2 40.7l63.9 63.9c15 15 23.4 35.4 23.4 56.6l0 30.9 19.7 19.7 0 0c15.6-15.6 40.9-15.6 56.6 0s15.6 40.9 0 56.6l-64 64c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L464 240 433.1 240c-21.2 0-41.6-8.4-56.6-23.4l-49.1-49.1c-15-15-23.4-35.4-23.4-56.6l0-12.7c0-11.2-5.9-21.7-15.5-27.4l-41.6-25c-10.4-6.2-10.4-21.2 0-27.4zM50.7 402.7l222.1-222.1 90.5 90.5-222.1 222.1c-25 25-65.5 25-90.5 0s-25-65.5 0-90.5z\"]\n};\nvar faArrowUp19 = {\n  prefix: 'fas',\n  iconName: 'arrow-up-1-9',\n  icon: [512, 512, [\"sort-numeric-up\"], \"f163\", \"M150.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 141.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96zM418.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM365.1 430.6c-9.6 14.8-5.4 34.6 9.4 44.3s34.6 5.4 44.3-9.4l42.1-64.9c12.4-19.2 19.1-41.6 19.1-64.5 0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.1 23.9 66.7 56.8 76.6l-11.7 18zM376 336a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faSortNumericUp = faArrowUp19;\nvar faChessKnight = {\n  prefix: 'fas',\n  iconName: 'chess-knight',\n  icon: [384, 512, [9822], \"f441\", \"M192-32c106 0 192 86 192 192l0 133.5c0 17-6.8 33.2-18.7 45.2L320 384 370.8 434.7c8.5 8.5 13.2 20 13.2 32 0 25-20.3 45.2-45.2 45.3L45.3 512c-25 0-45.2-20.3-45.2-45.3 0-12 4.8-23.5 13.2-32L64 384 64 349.4c0-18.7 8.2-36.4 22.3-48.6l89.7-76.8-48 0-12.1 12.1c-12.7 12.7-30 19.9-48 19.9-37.5 0-67.9-30.4-67.9-67.9l0-8.7c0-22.8 8.2-44.9 23.1-62.3L96 32 96 0c0-17.7 14.3-32 32-32l64 0zM160 72a24 24 0 1 0 0 48 24 24 0 1 0 0-48z\"]\n};\nvar faHouseFloodWaterCircleArrowRight = {\n  prefix: 'fas',\n  iconName: 'house-flood-water-circle-arrow-right',\n  icon: [640, 512, [], \"e50f\", \"M288.5 112a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM141.2 44.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l28.7-28.7-89.4 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l89.4 0-28.7-28.7c-6.2-6.2-6.2-16.4 0-22.6zM336.5 112c0 71.1-38.6 133.1-96 166.3l0 12.8c22.1 4.5 43.4 13.9 62.4 28.2 22.1 16.6 29.1 16.6 51.2 0 27.5-20.7 59.9-31.2 92.4-31.4 33.1-.2 66.3 10.2 94.4 31.4 6.9 5.2 12.8 9 18 11.7 .6 .3 1.2 .6 1.8 1 4.2 2.3 8.5 4.6 12.6 1.5 6-4.5 12.6-8 19.3-10.4l0-115.2 4.5 0c15.2 0 27.5-12.3 27.5-27.5 0-7.9-3.4-15.5-9.4-20.7L444.5 10.5C436.8 3.7 426.8 0 416.5 0s-20.3 3.7-28 10.5L329.9 61.8c4.3 16 6.6 32.8 6.6 50.2zm32 88c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-48zM475.1 412.1c19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3S290 391.8 266 373.7c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7s-5.9 25.6 4.7 33.6c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9c21.3-16.1 49.9-16.1 71.2 0zm-71.2 96c21.3-16.1 49.9-16.1 71.2 0 19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3S290 487.8 266 469.7c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7s-5.9 25.6 4.7 33.6c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n};\nvar faArrowUpRightFromSquare = {\n  prefix: 'fas',\n  iconName: 'arrow-up-right-from-square',\n  icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0-201.4 201.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 96C35.8 96 0 131.8 0 176L0 432c0 44.2 35.8 80 80 80l256 0c44.2 0 80-35.8 80-80l0-80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 80c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 96z\"]\n};\nvar faExternalLink = faArrowUpRightFromSquare;\nvar faArrowDownUpAcrossLine = {\n  prefix: 'fas',\n  iconName: 'arrow-down-up-across-line',\n  icon: [512, 512, [], \"e4af\", \"M265.4 105.4l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-41.4-41.4 0 114.7 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 114.7 41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 402.7 96 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l320 0 0-114.7-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zM416 336l0 144c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-144 64 0zM96 176L96 32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 144-64 0z\"]\n};\nvar faFaceGrinBeam = {\n  prefix: 'fas',\n  iconName: 'face-grin-beam',\n  icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM176 180c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zm132 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faRectangleAd = {\n  prefix: 'fas',\n  iconName: 'rectangle-ad',\n  icon: [512, 512, [\"ad\"], \"f641\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM416 184l0 144c0 13.3-10.7 24-24 24-7.1 0-13.5-3.1-17.9-8-10.2 5.1-21.8 8-34.1 8-42 0-76-34-76-76s34-76 76-76c9.9 0 19.3 1.9 28 5.3l0-21.3c0-13.3 10.7-24 24-24s24 10.7 24 24zm-48 92a28 28 0 1 0 -56 0 28 28 0 1 0 56 0zM160 208c-8.8 0-16 7.2-16 16l0 32 48 0 0-32c0-8.8-7.2-16-16-16l-16 0zm32 96l-48 0 0 24c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-35.3 28.7-64 64-64l16 0c35.3 0 64 28.7 64 64l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-24z\"]\n};\nvar faAd = faRectangleAd;\nvar faBookTanakh = {\n  prefix: 'fas',\n  iconName: 'book-tanakh',\n  icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 512L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-66.7C13.4 374.7 0 356.9 0 336L0 48C0 21.5 21.5 0 48 0L352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96zm32-96c0-17.7-14.3-32-32-32l-256 0 0 64 256 0c17.7 0 32-14.3 32-32zM113.9 229c-1.2 2-1.9 4.2-1.9 6.6 0 6.9 5.6 12.5 12.5 12.5l56.9 0 30.5 49.2c2.6 4.2 7.2 6.8 12.2 6.8s9.6-2.6 12.2-6.8l30.5-49.2 56.9 0c6.9 0 12.5-5.6 12.5-12.5 0-2.3-.6-4.6-1.9-6.6l-27.8-45 27.8-45c1.2-2 1.9-4.2 1.9-6.6 0-6.9-5.6-12.5-12.5-12.5l-56.9 0-30.5-49.2C233.6 66.6 229 64 224 64s-9.6 2.6-12.2 6.8l-30.5 49.2-56.9 0c-6.9 0-12.5 5.6-12.5 12.5 0 2.3 .6 4.6 1.9 6.6l27.8 45-27.8 45z\"]\n};\nvar faTanakh = faBookTanakh;\nvar faHotTubPerson = {\n  prefix: 'fas',\n  iconName: 'hot-tub-person',\n  icon: [448, 512, [\"hot-tub\"], \"f593\", \"M240 40c0 13.6 5.8 26.5 15.8 35.6l26.5 23.8c24 21.6 37.7 52.3 37.7 84.6 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-18.7-7.9-36.4-21.8-48.9l-26.5-23.8C203.5 93.1 192 67.2 192 40 192 26.7 202.7 16 216 16s24 10.7 24 24zM0 336l0-80c0-35.3 28.7-64 64-64l19.7 0c8.1 0 16.2 1.6 23.8 4.6l137.1 54.8c7.6 3 15.6 4.6 23.8 4.6L384 256c35.3 0 64 28.7 64 64l0 128c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 336zm96-16c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24zm152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80zm104-24c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24zM328 16c13.3 0 24 10.7 24 24 0 13.6 5.8 26.5 15.8 35.6l26.5 23.8c24 21.6 37.7 52.3 37.7 84.6 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-18.7-7.9-36.4-21.8-48.9l-26.5-23.8C315.5 93.1 304 67.2 304 40 304 26.7 314.7 16 328 16zM64 40a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faHotTub = faHotTubPerson;\nvar faFileHalfDashed = {\n  prefix: 'fas',\n  iconName: 'file-half-dashed',\n  icon: [384, 512, [], \"e698\", \"M64 0C28.7 0 0 28.7 0 64l0 256 384 0 0-149.5c0-17-6.7-33.3-18.7-45.3L258.7 18.7C246.7 6.7 230.5 0 213.5 0L64 0zM325.5 176L232 176c-13.3 0-24-10.7-24-24L208 58.5 325.5 176zM0 352l0 64 64 0 0-64-64 0zM64 512l0-64-64 0c0 35.3 28.7 64 64 64zm32 0l80 0 0-64-80 0 0 64zm112 0l80 0 0-64-80 0 0 64zm112 0c35.3 0 64-28.7 64-64l-64 0 0 64zm64-160l-64 0 0 64 64 0 0-64z\"]\n};\nvar faOutdent = {\n  prefix: 'fas',\n  iconName: 'outdent',\n  icon: [448, 512, [\"dedent\"], \"f03b\", \"M.4 64c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0C14.8 96 .4 81.7 .4 64zm192 128c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM.4 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0c-17.7 0-32-14.3-32-32zM.7 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6l0 158.6c0 13.3-15.3 20.8-25.8 12.6L.7 268.6z\"]\n};\nvar faDedent = faOutdent;\nvar faHandPeace = {\n  prefix: 'fas',\n  iconName: 'hand-peace',\n  icon: [448, 512, [9996], \"f25b\", \"M192 0c17.7 0 32 14.3 32 32l0 208-64 0 0-208c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM61.3 51.2L143.9 240 74.1 240 2.7 76.8C-4.4 60.6 3 41.8 19.2 34.7S54.2 35 61.3 51.2zm27 221.3l-.2-.5 95.9 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6 13.2 0 25.4-4 35.6-10.8 8.7 24.9 32.5 42.8 60.4 42.8 11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9L69.5 453.5C45.5 429.5 32 396.9 32 363l0-27c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nvar faHeadSideVirus = {\n  prefix: 'fas',\n  iconName: 'head-side-virus',\n  icon: [512, 512, [], \"e064\", \"M329.7 448c-5.1 0-9.7 3.7-9.7 8.8l0 7.2c0 26.5-21.5 48-48 48l-160 0c-26.5 0-48-21.5-48-48l0-63.6c0-12.6-5.1-24.5-13.1-34.2-31.8-38.7-50.9-88.2-50.9-142.2 0-123.7 100.3-224 224-224 112.7 0 206 83.3 221.7 191.7 .4 3 1.7 5.9 3.6 8.3l35.8 42.9c7 8.4 10.9 19.1 10.9 30.1 0 25.9-21 47-47 47l-1 0c-8.8 0-16 7.2-16 16l0 48c0 35.3-28.7 64-64 64l-38.3 0zM224 64c-13.3 0-24 10.7-24 24 0 22.9-27.7 34.4-43.9 18.2-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c16.2 16.2 4.7 43.9-18.2 43.9-13.3 0-24 10.7-24 24s10.7 24 24 24c22.9 0 34.4 27.7 18.2 43.9-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c16.2-16.2 43.9-4.7 43.9 18.2 0 13.3 10.7 24 24 24s24-10.7 24-24c0-22.9 27.7-34.4 43.9-18.2 9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-16.2-16.2-4.7-43.9 18.2-43.9 13.3 0 24-10.7 24-24s-10.7-24-24-24c-22.9 0-34.4-27.7-18.2-43.9 9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-16.2 16.2-43.9 4.7-43.9-18.2 0-13.3-10.7-24-24-24zm-32 88a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 88a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faCompass = {\n  prefix: 'fas',\n  iconName: 'compass',\n  icon: [512, 512, [129517], \"f14e\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faPenNib = {\n  prefix: 'fas',\n  iconName: 'pen-nib',\n  icon: [512, 512, [10001], \"f5ad\", \"M368.5 18.3l-50.1 50.1 125.3 125.3 50.1-50.1c21.9-21.9 21.9-57.3 0-79.2L447.7 18.3c-21.9-21.9-57.3-21.9-79.2 0zM279.3 97.2l-.5 .1-144.1 43.2c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-2.9 8.7-1.9 18.2 2.5 26L161.7 316.4c-1.1-4-1.6-8.1-1.6-12.4 0-26.5 21.5-48 48-48s48 21.5 48 48-21.5 48-48 48c-4.3 0-8.5-.6-12.4-1.6L40.3 505.7c7.8 4.4 17.2 5.4 26 2.5l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 .1-.5-135.5-135.5z\"]\n};\nvar faTentArrowsDown = {\n  prefix: 'fas',\n  iconName: 'tent-arrows-down',\n  icon: [512, 512, [], \"e581\", \"M185.5 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 102.1-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72zm248 72l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 102.1-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0zM60.3 292.6L37.1 476c-2.4 19.1 12.5 36 31.7 36l154.5 0c17.7 0 32-14.3 32-32l0-117.4c0-5.9 4.7-10.6 10.6-10.6 4 0 7.7 2.3 9.5 5.9l68.2 136.5c5.4 10.8 16.5 17.7 28.6 17.7l71.9 0c19.3 0 34.2-16.9 31.7-36L452.7 292.7c-1.2-9.7-6.9-18.4-15.3-23.4L271.9 169.9c-10.2-6.1-22.9-6.1-33.1 .1L75.4 269.3c-8.3 5.1-13.9 13.7-15.1 23.3z\"]\n};\nvar faForwardFast = {\n  prefix: 'fas',\n  iconName: 'forward-fast',\n  icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M19.8 477.6c12 5 25.7 2.2 34.9-6.9L224 301.3 224 448c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9L448 301.3 448 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 146.7-169.4-169.4c-9.2-9.2-22.9-11.9-34.9-6.9S224 51.1 224 64L224 210.7 54.6 41.4c-9.2-9.2-22.9-11.9-34.9-6.9S0 51.1 0 64L0 448c0 12.9 7.8 24.6 19.8 29.6z\"]\n};\nvar faFastForward = faForwardFast;\nvar faCrop = {\n  prefix: 'fas',\n  iconName: 'crop',\n  icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 176 64 176 128 338.7 128 128 338.7 128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32-32 0C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l208 0 0-64-162.7 0 210.7-210.7 0 306.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-274.7z\"]\n};\nvar faWhiskeyGlass = {\n  prefix: 'fas',\n  iconName: 'whiskey-glass',\n  icon: [448, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32C14.3 32 0 46.3 0 64L0 352c0 70.7 57.3 128 128 128l192 0c70.7 0 128-57.3 128-128l0-288c0-17.7-14.3-32-32-32L32 32zM64 256l0-160 320 0 0 160-320 0z\"]\n};\nvar faGlassWhiskey = faWhiskeyGlass;\nvar faSquare = {\n  prefix: 'fas',\n  iconName: 'square',\n  icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32z\"]\n};\nvar faFaceGrin = {\n  prefix: 'fas',\n  iconName: 'face-grin',\n  icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM386.7 308.9c11.9-3.7 23.9 6.3 19.6 18.1-22.4 61.3-81.3 105.1-150.3 105.1S128.1 388.2 105.7 326.9c-4.3-11.8 7.7-21.8 19.6-18.1 39.2 12.2 83.7 19.1 130.7 19.1s91.5-6.9 130.7-19.1zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrin = faFaceGrin;\nvar faFileContract = {\n  prefix: 'fas',\n  iconName: 'file-contract',\n  icon: [384, 512, [], \"f56c\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM88 64C74.7 64 64 74.7 64 88s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 64zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm70.3 160c-11.3 0-21.9 5.1-28.9 13.9L69.3 409c-8.3 10.3-6.6 25.5 3.7 33.7s25.5 6.6 33.7-3.8l47.1-58.8 15.2 50.7c3 10.2 12.4 17.1 23 17.1l104 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-86.1 0-16.1-53.6c-4.7-15.7-19.1-26.4-35.5-26.4z\"]\n};\nvar faAngleUp = {\n  prefix: 'fas',\n  iconName: 'angle-up',\n  icon: [384, 512, [8963], \"f106\", \"M169.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L192 205.3 54.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nvar faFaceSmile = {\n  prefix: 'fas',\n  iconName: 'face-smile',\n  icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM165.4 321.9c20.4 28 53.4 46.1 90.6 46.1s70.2-18.1 90.6-46.1c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5C356.3 390 309.2 416 256 416s-100.3-26-129.4-65.9c-7.8-10.7-5.4-25.7 5.3-33.5s25.7-5.4 33.5 5.3zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSmile = faFaceSmile;\nvar faPersonDressBurst = {\n  prefix: 'fas',\n  iconName: 'person-dress-burst',\n  icon: [640, 512, [], \"e544\", \"M208 40.1c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24zM8 144.1c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zm92.5 141.4l33.9-33.9c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L66.6 251.6c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0zM66.6 2.7c-9.4 9.4-9.4 24.6 0 33.9l33.9 33.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L100.5 2.7C91.1-6.7 76-6.7 66.6 2.7zM352 80a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM246.2 384l25.8 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 25.8 0c10.9 0 18.6-10.7 15.2-21.1l-43-129 48.3 65.1c10.5 14.2 30.6 17.2 44.8 6.6s17.2-30.6 6.6-44.8l-70.5-95C434 132 394.3 112 352 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6l48.3-65.1-43 129c-3.5 10.4 4.3 21.1 15.2 21.1z\"]\n};\nvar faDivide = {\n  prefix: 'fas',\n  iconName: 'divide',\n  icon: [448, 512, [10135, 247], \"f529\", \"M224 48a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM168 408a56 56 0 1 1 112 0 56 56 0 1 1 -112 0z\"]\n};\nvar faCodeFork = {\n  prefix: 'fas',\n  iconName: 'code-fork',\n  icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 22.7c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-22.7c-28.3-12.3-48-40.5-48-73.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 22.7c0 61.9-50.1 112-112 112l-32 0 0 70.7c28.3 12.3 48 40.5 48 73.3 0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-70.7-32 0C98.1 288 48 237.9 48 176l0-22.7C19.7 141 0 112.8 0 80 0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHouseFlag = {\n  prefix: 'fas',\n  iconName: 'house-flag',\n  icon: [640, 512, [], \"e50d\", \"M472 0c17.7 0 32 14.3 32 32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0 0 288c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM283.5 59.1l100.5 96.9 0 356-256 0c-35.3 0-64-28.7-64-64l0-144-19.9 0c-15.5 0-28.1-12.6-28.1-28.1 0-7.6 3.1-14.9 8.6-20.2L228.5 59.1C235.9 52 245.7 48 256 48s20.1 4 27.5 11.1zM232 256c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0z\"]\n};\nvar faBuildingColumns = {\n  prefix: 'fas',\n  iconName: 'building-columns',\n  icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M271.9 20.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128c-12.6 7.2-18.8 22-15.1 36S17.5 208 32 208l32 0 0 208 0 0-51.2 38.4C4.7 460.4 0 469.9 0 480 0 497.7 14.3 512 32 512l448 0c17.7 0 32-14.3 32-32 0-10.1-4.7-19.6-12.8-25.6l-51.2-38.4 0-208 32 0c14.5 0 27.2-9.8 30.9-23.8s-2.5-28.8-15.1-36l-224-128zM400 208l0 208-64 0 0-208 64 0zm-112 0l0 208-64 0 0-208 64 0zm-112 0l0 208-64 0 0-208 64 0zM256 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBank = faBuildingColumns;\nvar faInstitution = faBuildingColumns;\nvar faMuseum = faBuildingColumns;\nvar faUniversity = faBuildingColumns;\nvar faRug = {\n  prefix: 'fas',\n  iconName: 'rug',\n  icon: [576, 512, [], \"e569\", \"M24 64l56 0 0 384-56 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0C10.7 112 0 101.3 0 88S10.7 64 24 64zm104 0l320 0 0 384-320 0 0-384zM576 88c0 13.3-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0 0-384 56 0c13.3 0 24 10.7 24 24z\"]\n};\nvar faCodeMerge = {\n  prefix: 'fas',\n  iconName: 'code-merge',\n  icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2 0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3l0 205.3C19.7 371 0 399.2 0 432 0 476.2 35.8 512 80 512s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-86.6c26.7 20.1 60 32 96 32l86.7 0c12.3 28.3 40.5 48 73.3 48 44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48L208 240c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faHouseTsunami = {\n  prefix: 'fas',\n  iconName: 'house-tsunami',\n  icon: [640, 512, [], \"e515\", \"M288 16C155.5 16 48 123.5 48 256S155.5 496 288 496c7.4 0 19.7-2.3 33.7-7.3 13.8-4.9 27.1-11.7 36.7-18.9 38.4-29 90.5-29 129 0 15.4 11.6 35.3 21.1 55 24.4 19.5 3.3 37 .4 51.1-10.2 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-27.3 20.5-59.2 24-87.9 19.2-28.5-4.8-55.4-18-75.9-33.4-21.3-16.1-49.9-16.1-71.2 0-14.5 10.9-32.4 19.7-49.5 25.8-16.8 6-34.9 10.1-49.9 10.1l-.1 0C128.9 543.9 0 415 0 256 0 96.9 128.9-32 288-32 301.3-32 312-21.3 312-8s-10.7 24-24 24zm44.8 166.4l96-72c11.4-8.5 27.1-8.5 38.5 0l95.5 72c8 6 12.7 15.5 12.7 25.5l.3 121.5c-2.2 1.3-4.3 2.6-6.4 4.2-4.3 3.1-8.7 .8-13.2-1.5l-1.2-.6-.7-.3c-5.4-2.7-11.7-6.6-18.9-11.7-29.5-21.1-64.3-31.6-99.1-31.4-34.1 .2-68.1 10.7-97 31.4-7.8 5.6-13.8 9.3-19.3 11.2L320 208c0-10.1 4.7-19.6 12.8-25.6zm54.6 229.7c-14.5 10.9-32.4 19.7-49.5 25.8-16.8 6-34.9 10.1-49.9 10.1-106 0-192-86-192-192S182 64 288 64c13.3 0 24 10.7 24 24s-10.7 24-24 24c-79.5 0-144 64.5-144 144s64.5 144 144 144c7.4 0 19.7-2.3 33.7-7.3 13.8-4.9 27.1-11.7 36.7-18.9 38.4-29 90.5-29 129 0 15.4 11.6 35.3 21.1 55 24.4 19.5 3.3 37 .4 51.1-10.2 10.6-8 25.6-5.9 33.6 4.7s5.9 25.6-4.7 33.6c-27.3 20.5-59.2 24-87.9 19.2-28.5-4.8-55.4-18-75.9-33.4-21.3-16.1-49.9-16.1-71.2 0z\"]\n};\nvar faMagnifyingGlassChart = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-chart',\n  icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zm-312 8l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64l0 96c0 13.3 10.7 24 24 24s24-10.7 24-24l0-96c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faUmbrella = {\n  prefix: 'fas',\n  iconName: 'umbrella',\n  icon: [512, 512, [], \"f0e9\", \"M256-32c17.7 0 32 14.3 32 32l0 2c126.3 15.7 224 123.5 224 254 0 3.8-.1 7.5-.2 11.3-.3 6.9-5 12.8-11.7 14.7s-13.8-.7-17.6-6.5c-14.4-21.4-38.8-35.5-66.5-35.5-29.3 0-54.9 15.7-68.9 39.3-2.7 4.6-7.6 7.6-13 7.8s-10.5-2.2-13.7-6.5c-14.6-19.8-38-32.6-64.5-32.6s-49.9 12.8-64.5 32.6c-3.2 4.3-8.3 6.8-13.7 6.5s-10.2-3.2-13-7.8c-14-23.6-39.6-39.3-68.9-39.3-27.7 0-52.1 14.1-66.5 35.5-3.9 5.7-11 8.4-17.6 6.5S.5 274.2 .2 267.3C.1 263.5 0 259.8 0 256 0 125.5 97.7 17.7 224 2l0-2c0-17.7 14.3-32 32-32zm32 360l0 102.6c0 45-36.5 81.4-81.4 81.4-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6 9.6 0 17.4-7.8 17.4-17.4L224 328c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faHillRockslide = {\n  prefix: 'fas',\n  iconName: 'hill-rockslide',\n  icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2l-53.3 0c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9l0-53.3c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9l0 53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faUserSecret = {\n  prefix: 'fas',\n  iconName: 'user-secret',\n  icon: [448, 512, [128373], \"f21b\", \"M171-16c-36.4 0-57.8 58.3-68.3 112L72 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 32c0 17 3.3 33.2 9.3 48l-9.3 0 0 0-20.5 0c-15.2 0-27.5 12.3-27.5 27.5 0 3 .5 5.9 1.4 8.7l28.9 86.6C40.2 379.6 16 428.1 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-54.2-24.2-102.7-62.3-135.4l28.9-86.6c.9-2.8 1.4-5.7 1.4-8.7 0-15.2-12.3-27.5-27.5-27.5l-20.5 0 0 0-9.3 0c6-14.8 9.3-31 9.3-48l0-32 24 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-30.7 0c-10.4-53.7-31.9-112-68.3-112-9.6 0-19 3.9-27.5 8.2-8.2 4.1-18.4 7.8-25.5 7.8s-17.3-3.7-25.5-7.8C190-12.1 180.6-16 171-16zm93.7 484.4l-24.8-70.9 27.9-32.5c2.7-3.2 4.2-7.2 4.2-11.4 0-9.7-7.8-17.5-17.5-17.5l-61 0c-9.7 0-17.5 7.8-17.5 17.5 0 4.2 1.5 8.2 4.2 11.4l27.9 32.5-24.8 70.9-57-180.4 35.7 0c18.4 10.2 39.5 16 62 16s43.6-5.8 62-16l35.7 0-57 180.4zM224 256c-34.7 0-64.2-22.1-75.3-53 5.7 3.2 12.3 5 19.3 5l12.4 0c16.5 0 31.1-10.6 36.3-26.2 2.3-7 12.2-7 14.5 0 5.2 15.6 19.9 26.2 36.3 26.2l12.4 0c7 0 13.6-1.8 19.3-5-11.1 30.9-40.6 53-75.3 53z\"]\n};\nvar faPager = {\n  prefix: 'fas',\n  iconName: 'pager',\n  icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 64c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM88 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z\"]\n};\nvar faBriefcase = {\n  prefix: 'fas',\n  iconName: 'briefcase',\n  icon: [512, 512, [128188], \"f0b1\", \"M200 48l112 0c4.4 0 8 3.6 8 8l0 40-128 0 0-40c0-4.4 3.6-8 8-8zm-56 8l0 40-80 0C28.7 96 0 124.7 0 160l0 96 512 0 0-96c0-35.3-28.7-64-64-64l-80 0 0-40c0-30.9-25.1-56-56-56L200 0c-30.9 0-56 25.1-56 56zM512 304l-192 0 0 16c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-16-192 0 0 112c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-112z\"]\n};\nvar faTrowelBricks = {\n  prefix: 'fas',\n  iconName: 'trowel-bricks',\n  icon: [512, 512, [], \"e58a\", \"M224 32c0-11.5-6.2-22.2-16.2-27.8s-22.3-5.5-32.2 .4l-160 96C5.9 106.3 0 116.8 0 128s5.9 21.7 15.5 27.4l160 96c9.9 5.9 22.2 6.1 32.2 .4S224 235.5 224 224l0-64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-256 0 0-64zm96 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-160 0zM0 416l0 64c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32zm224-32c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-256 0z\"]\n};\nvar faSocks = {\n  prefix: 'fas',\n  iconName: 'socks',\n  icon: [512, 512, [129510], \"f696\", \"M252.8 0L176 0c-26.5 0-48 21.5-48 48l0 16 112 0 0-16c0-17.5 4.7-33.9 12.8-48zM128 112l0 128c0 20.1-9.5 39.1-25.6 51.2l-64 48c-24.2 18.1-38.4 46.6-38.4 76.8 0 53 43 96 96 96 15.4 0 30.5-3.7 44-10.7-17.6-23.9-28-53.4-28-85.3 0-45.3 21.3-88 57.6-115.2l64-48c4-3 6.4-7.8 6.4-12.8l0-128-112 0zm160 0l0 128c0 20.1-9.5 39.1-25.6 51.2l-64 48c-24.2 18.1-38.4 46.6-38.4 76.8 0 53 43 96 96 96 20.8 0 41-6.7 57.6-19.2l115.2-86.4C461 382.2 480 344.3 480 304l0-192-192 0zM480 64l0-16c0-26.5-21.5-48-48-48L336 0c-26.5 0-48 21.5-48 48l0 16 192 0z\"]\n};\nvar faT = {\n  prefix: 'fas',\n  iconName: 't',\n  icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l128 0 0 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32z\"]\n};\nvar faMicrochip = {\n  prefix: 'fas',\n  iconName: 'microchip',\n  icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c-35.3 0-64 28.7-64 64l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c0 35.3 28.7 64 64 64l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c35.3 0 64-28.7 64-64l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0c0-35.3-28.7-64-64-64l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40zM160 128l192 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32l0-192c0-17.7 14.3-32 32-32zm16 48l0 160 160 0 0-160-160 0z\"]\n};\nvar faTruckMedical = {\n  prefix: 'fas',\n  iconName: 'truck-medical',\n  icon: [576, 512, [128657, \"ambulance\"], \"f0f9\", \"M64 32C28.7 32 0 60.7 0 96L0 384c0 35.3 28.7 64 64 64l3.3 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l102.6 0c10.4 36.9 44.4 64 84.7 64s74.2-27.1 84.7-64l3.3 0c35.3 0 64-28.7 64-64l0-146.7c0-17-6.7-33.3-18.7-45.3L512 146.7c-12-12-28.3-18.7-45.3-18.7l-50.7 0 0-32c0-35.3-28.7-64-64-64L64 32zM512 237.3l0 50.7-96 0 0-96 50.7 0 45.3 45.3zM152 384a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm232 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM176 136c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 40 40 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-40 0 0 40c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-40-40 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l40 0 0-40z\"]\n};\nvar faAmbulance = faTruckMedical;\nvar faOm = {\n  prefix: 'fas',\n  iconName: 'om',\n  icon: [576, 512, [128329], \"f679\", \"M388.7 4.7c6.2-6.2 16.4-6.2 22.6 0l16 16c6.2 6.2 6.2 16.4 0 22.6l-16 16c-6.2 6.2-16.4 6.2-22.6 0l-16-16c-6.2-6.2-6.2-16.4 0-22.6l16-16zM176 160c-10.8 0-20.8 3.6-28.8 9.6-14.1 10.6-34.2 7.8-44.8-6.4s-7.8-34.2 6.4-44.8c18.7-14.1 42-22.4 67.2-22.4 61.9 0 112 50.1 112 112 0 17.2-3.9 33.5-10.8 48l49.7 0c12.7 0 24.9-5 33.9-14.1l20.7-20.7c18.7-18.7 44.1-29.3 70.6-29.3 55.2 0 99.9 44.7 99.9 99.9l0 96.1c0 55.2-44.8 100-100 100S352 443.2 352 388l0-4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 4c0 19.9 16.1 36 36 36s36-16.1 36-36l0-96.1c0-19.8-16.1-35.9-35.9-35.9-9.5 0-18.6 3.8-25.4 10.5l-20.7 20.7c-21 21-49.4 32.8-79.1 32.8l-26.8 0c12.6 19.6 19.9 42.8 19.9 68 0 75.2-65 132-140 132S40 463.2 40 388c0-17.7 14.3-32 32-32s32 14.3 32 32c0 35.3 31.7 68 76 68s76-32.7 76-68-31.7-68-76-68l-20 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0c26.5 0 48-21.5 48-48s-21.5-48-48-48zM337.1 60.1c-11-13.8-31.1-16.2-45-5.2s-16.2 31.1-5.2 45C312.6 132.2 354.4 152 400 152s87.4-19.8 113.1-52.1c11-13.8 8.7-34-5.2-45s-34-8.7-45 5.2C450.3 76 427.5 88 400 88s-50.3-12-62.9-27.9z\"]\n};\nvar faMosquitoNet = {\n  prefix: 'fas',\n  iconName: 'mosquito-net',\n  icon: [640, 512, [], \"e52c\", \"M576 352c13.3 0 24 10.7 24 24l0 16 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 48 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 16-.1 2.5C598.6 566.6 588.4 576 576 576s-22.6-9.4-23.9-21.5l-.1-2.5 0-16-48 0 0 16-.1 2.5C502.6 566.6 492.4 576 480 576s-22.6-9.4-23.9-21.5l-.1-2.5 0-16-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-48-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-16c0-13.3 10.7-24 24-24s24 10.7 24 24l0 16 48 0 0-16c0-13.3 10.7-24 24-24zM429.9 16.3c7.7-9.4 21.3-11.5 31.4-4.3 10.1 7.1 13.1 20.9 7.4 31.7l-1.3 2.1-25.9 38.9 13.3 53.4c2 8-.1 16.3-5.3 22.3l-2.4 2.4-44.7 38.3 130.5 14.5c42.8 4.8 75.1 40.9 75.1 83.9 0 3.9-.4 7.7-.9 11.5-7.3-3.5-15.3-5.8-23.8-6.7L576 304c-18.5 0-35.3 7-48 18.4-11-9.9-25.1-16.5-40.6-18.1L480 304c-30.3 0-56.1 18.7-66.8 45.2-12.5 5-23.2 13.4-31.1 24l-30.2-40.1 0 74.7c0 17.7-14.3 32-32 32-16.6 0-30.2-12.6-31.8-28.7l-.2-3.3 0-74.6-32.3 43 0 39.8c0 3.5-.7 6.9-2.1 10.1l-1.6 3.1-40 64-1.4 2c-7.5 9.6-21 12.1-31.3 5.3-10.3-6.8-13.7-20.5-8.3-31.5l1.2-2.2 36.2-58 0-41 .3-4c.6-3.9 2.2-7.7 4.6-10.9l39.3-52.2-66.2 59.5c-17 15.3-39 23.7-61.9 23.8l-8.1 0c-46.6 0-84.4-37.8-84.4-84.4 0-43 32.4-79.2 75.1-83.9l130.5-14.5-44.7-38.3-2.4-2.4c-5.2-6-7.3-14.4-5.3-22.3l13.3-53.4-25.9-38.9-1.2-2.1c-5.7-10.8-2.7-24.6 7.4-31.7 10.1-7.1 23.7-5.1 31.4 4.3l1.5 2 32 48 1.4 2.2c2.8 5.3 3.5 11.6 2.1 17.6l-12.3 49.2 53.3 45.7 0-28.8 .2-3.2c1.1-10.4 7.2-19.4 15.8-24.4l0-60.5 .3-3.2c1.5-7.3 8-12.7 15.7-12.8 7.7 0 14.2 5.5 15.7 12.8l.3 3.2 0 60.5c8.7 5 14.8 14 15.8 24.4l.2 3.2 0 28.9 53.4-45.7-12.3-49.2c-1.5-5.9-.7-12.2 2.1-17.6l1.4-2.2 32-48 1.5-2zM504 488l48 0 0-48-48 0 0 48z\"]\n};\nvar faPrescriptionBottle = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle',\n  icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zM32 144l320 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0 0-48 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0 0-48 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0 0-64z\"]\n};\nvar faUsersGear = {\n  prefix: 'fas',\n  iconName: 'users-gear',\n  icon: [640, 512, [\"users-cog\"], \"f509\", \"M320 224a104 104 0 1 0 0-208 104 104 0 1 0 0 208zM96 232a72 72 0 1 0 0-144 72 72 0 1 0 0 144zM0 416l0 32c0 17.7 14.3 32 32 32l86.7 0c-4.3-9.8-6.7-20.6-6.7-32l0-16c0-53.2 20-101.8 52.9-138.6-11.7-3.5-24.1-5.4-36.9-5.4-70.7 0-128 57.3-128 128zM616 160a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zM160 432l0 16c0 17.7 14.3 32 32 32l156.8 0c-7.1-21.6-6.3-44.4 10.7-64-14-16.2-20.5-39.7-11.4-63.3 6.6-17.1 15.9-33.1 27.4-47.3 5.4-6.6 11.6-11.7 18.3-15.4-22.1-11.5-47.2-18-73.8-18-88.4 0-160 71.6-160 160zm464.6-44.1c6.3-3.6 9.5-11.1 6.8-18-4.8-12.4-11.5-24.1-19.9-34.4-4.6-5.7-12.7-6.7-19-3-21.8 12.6-48.6-2.8-48.6-28.1 0-7.3-4.9-13.8-12.1-14.9-12.9-2-26.8-2-39.7 0-7.2 1.1-12.1 7.6-12.1 14.9 0 25.2-26.8 40.7-48.6 28.1-6.3-3.6-14.4-2.6-19 3-8.4 10.3-15.1 22-19.9 34.4-2.6 6.8 .5 14.3 6.8 17.9 21.9 12.6 21.9 43.5 0 56.2-6.3 3.6-9.5 11.1-6.8 17.9 4.8 12.4 11.5 24.1 19.9 34.4 4.6 5.7 12.7 6.7 19 3 21.8-12.6 48.6 2.9 48.6 28.1 0 7.3 4.9 13.8 12.1 14.9 12.9 2 26.8 2 39.7 0 7.2-1.1 12.1-7.6 12.1-14.9 0-25.2 26.8-40.7 48.6-28.1 6.3 3.6 14.4 2.6 19-3 8.4-10.3 15.1-22 19.9-34.4 2.6-6.8-.5-14.3-6.8-17.9-21.9-12.6-21.9-43.5 0-56.2zM472 416a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nvar faUsersCog = faUsersGear;\nvar faRoadCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'road-circle-exclamation',\n  icon: [640, 512, [], \"e565\", \"M288 32l-76.3 0c-29.4 0-55.1 20.1-62.1 48.6L65.4 420.5C57.9 450.7 80.8 480 112 480l209.4 0c-11.2-24.4-17.4-51.4-17.4-80 0-28.6 6.2-55.7 17.4-80-.5 0-1 0-1.5 0-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49c35.2-39.9 86.7-65 144-65 9 0 17.8 .6 26.5 1.8l-32-129.2C483.4 52.1 457.8 32 428.3 32l-76.4 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-100a20 20 0 1 1 0 40 20 20 0 1 1 0-40zm0-140c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nvar faPause = {\n  prefix: 'fas',\n  iconName: 'pause',\n  icon: [384, 512, [9208], \"f04c\", \"M48 32C21.5 32 0 53.5 0 80L0 432c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 32zm224 0c-26.5 0-48 21.5-48 48l0 352c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48l-64 0z\"]\n};\nvar faStaffSnake = {\n  prefix: 'fas',\n  iconName: 'staff-snake',\n  icon: [448, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M192 32l0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 64 0c53 0 96 43 96 96s-43 96-96 96l-16 0 0-64 16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0 192 32 0c53 0 96 43 96 96 0 47.6-34.6 87.1-80 94.7l0-67c9.6-5.5 16-15.9 16-27.7 0-17.7-14.3-32-32-32l-32 0 0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-64-32 0c-53 0-96-43-96-96 0-47.6 34.6-87.1 80-94.7l0 67c-9.6 5.5-16 15.9-16 27.7 0 17.7 14.3 32 32 32l32 0 0-192-72.6 0c-11.1 19.1-31.7 32-55.4 32l-16 0C21.5 128 0 106.5 0 80S21.5 32 48 32l144 0z\"]\n};\nvar faRodAsclepius = faStaffSnake;\nvar faRodSnake = faStaffSnake;\nvar faStaffAesculapius = faStaffSnake;\nvar faPiggyBank = {\n  prefix: 'fas',\n  iconName: 'piggy-bank',\n  icon: [576, 512, [], \"f4d3\", \"M288-32a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM48 304c0-70.1 47-131.4 117.1-164.9 25.3 41.3 70.9 68.9 122.9 68.9 55.7 0 104.1-31.7 128-78 15.8-11.3 35.1-18 56-18l19.5 0c10.4 0 18 9.8 15.5 19.9l-17.1 68.3c9.9 12.4 18.2 25.7 24.4 39.8l21.7 0c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24l-40 0c-16.5 22-38.5 39.6-64 50.7l0 29.3c0 17.7-14.3 32-32 32l-33 0c-14.3 0-26.8-9.5-30.8-23.2l-7.1-24.8-82.3 0-7.1 24.8C235.8 502.5 223.3 512 209 512l-33 0c-17.7 0-32-14.3-32-32l0-29.3C87.5 426 48 369.6 48 304zm376 16a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faMonument = {\n  prefix: 'fas',\n  iconName: 'monument',\n  icon: [384, 512, [], \"f5a6\", \"M209-33c-9.4-9.4-24.6-9.4-33.9 0L95 47c-4.1 4.1-6.5 9.4-7 15.1L58.4 448 48 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.4 0-29.7-385.8c-.4-5.7-2.9-11.1-7-15.1L209-33zM128 296c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24z\"]\n};\nvar faAnglesRight = {\n  prefix: 'fas',\n  iconName: 'angles-right',\n  icon: [448, 512, [187, \"angle-double-right\"], \"f101\", \"M439.1 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L371.2 256 233.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L179.2 256 41.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faAngleDoubleRight = faAnglesRight;\nvar faDesktop = {\n  prefix: 'fas',\n  iconName: 'desktop',\n  icon: [512, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 32C28.7 32 0 60.7 0 96L0 352c0 35.3 28.7 64 64 64l144 0-16 48-72 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0-16-48 144 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 32zM96 96l320 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32L96 320c-17.7 0-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32z\"]\n};\nvar faDesktopAlt = faDesktop;\nvar faPlaneCircleXmark = {\n  prefix: 'fas',\n  iconName: 'plane-circle-xmark',\n  icon: [640, 512, [], \"e557\", \"M232 24c0-30.9 25.1-56 56-56s56 25.1 56 56l0 127.3 78 71.5c-69.3 29-118 97.4-118 177.2 0 49.3 18.6 94.3 49.1 128.3L288 512 179.9 539c-10.1 2.5-19.9-5.1-19.9-15.5l0-19.8c0-4.9 2.2-9.5 6-12.5l66-52.8 0-99.7-162.9 54.3C58.7 396.4 48 388.7 48 377.8l0-43.7c0-9 3.8-17.5 10.4-23.6L232 151.3 232 24zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-36.7 36.7-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l36.7 36.7-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l36.7-36.7 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-36.7-36.7 36.7-36.7z\"]\n};\nvar faRetweet = {\n  prefix: 'fas',\n  iconName: 'retweet',\n  icon: [576, 512, [], \"f079\", \"M118.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9S19.1 160 32 160l32 0 0 224c0 53 43 96 96 96l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0c-17.7 0-32-14.3-32-32l0-224 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64zM457.4 470.6c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9S556.9 352 544 352l-32 0 0-224c0-53-43-96-96-96L288 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32 14.3 32 32l0 224-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64z\"]\n};\nvar faUserGear = {\n  prefix: 'fas',\n  iconName: 'user-gear',\n  icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M256.5 8a120 120 0 1 1 0 240 120 120 0 1 1 0-240zM226.7 304l59.4 0 1.5 0c-12.9 26.8-7.8 58.2 11.5 79.5-20.2 22.3-24.8 55.8-9.4 83.4l22.5 40.4c.9 1.6 1.9 3.2 2.9 4.7l-237 0c-16.4 0-29.7-13.3-29.7-29.7 0-98.5 79.8-178.3 178.3-178.3zm205.9-56.4c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 6.1c0 18.9 24.1 32.8 40.5 23.4l5-2.9c11.6-6.7 26.5-2.6 33 9.1l22.4 40.2c6.2 11.2 2.6 25.2-8.2 32l-4.7 2.9c-16.2 10.1-16.2 39.9 0 50.1l4.6 2.9c10.8 6.8 14.5 20.8 8.3 32L607 483.8c-6.5 11.7-21.4 15.9-33 9.1l-4.9-2.9c-16.4-9.5-40.5 4.5-40.5 23.4l0 6.1c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-5.9c0-19-24.2-33-40.7-23.5l-4.8 2.8c-11.6 6.7-26.4 2.6-33-9.1l-22.6-40.4c-6.2-11.2-2.6-25.3 8.3-32.1l4.4-2.7c16.3-10.1 16.3-40.1 0-50.2l-4.5-2.8c-10.9-6.8-14.5-20.9-8.3-32.1l22.5-40.3c6.5-11.7 21.4-15.8 32.9-9.1l4.8 2.8c16.5 9.5 40.7-4.5 40.7-23.5l0-5.9zm99.9 136.2a52 52 0 1 0 -104 0 52 52 0 1 0 104 0z\"]\n};\nvar faUserCog = faUserGear;\nvar faBorderAll = {\n  prefix: 'fas',\n  iconName: 'border-all',\n  icon: [448, 512, [], \"f84c\", \"M384 96l0 128-128 0 0-128 128 0zm0 192l0 128-128 0 0-128 128 0zM192 224l-128 0 0-128 128 0 0 128zM64 288l128 0 0 128-128 0 0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nvar faCoins = {\n  prefix: 'fas',\n  iconName: 'coins',\n  icon: [512, 512, [], \"f51e\", \"M128 96l0-16c0-44.2 86-80 192-80S512 35.8 512 80l0 16c0 30.6-41.3 57.2-102 70.7-2.4-2.8-4.9-5.5-7.4-8-15.5-15.3-35.5-26.9-56.4-35.5-41.9-17.5-96.5-27.1-154.2-27.1-21.9 0-43.3 1.4-63.8 4.1-.2-1.3-.2-2.7-.2-4.1zM432 353l0-46.2c15.1-3.9 29.3-8.5 42.2-13.9 13.2-5.5 26.1-12.2 37.8-20.3l0 15.4c0 26.8-31.5 50.5-80 65zm0-96l0-33c0-4.5-.4-8.8-1-13 15.5-3.9 30-8.6 43.2-14.2s26.1-12.2 37.8-20.3l0 15.4c0 26.8-31.5 50.5-80 65zM0 240l0-16c0-44.2 86-80 192-80s192 35.8 192 80l0 16c0 44.2-86 80-192 80S0 284.2 0 240zm384 96c0 44.2-86 80-192 80S0 380.2 0 336l0-15.4c11.6 8.1 24.5 14.7 37.8 20.3 41.9 17.5 96.5 27.1 154.2 27.1s112.3-9.7 154.2-27.1c13.2-5.5 26.1-12.2 37.8-20.3l0 15.4zm0 80.6l0 15.4c0 44.2-86 80-192 80S0 476.2 0 432l0-15.4c11.6 8.1 24.5 14.7 37.8 20.3 41.9 17.5 96.5 27.1 154.2 27.1s112.3-9.7 154.2-27.1c13.2-5.5 26.1-12.2 37.8-20.3z\"]\n};\nvar faMarsStroke = {\n  prefix: 'fas',\n  iconName: 'mars-stroke',\n  icon: [576, 512, [9894], \"f229\", \"M416-32c-17.7 0-32 14.3-32 32s14.3 32 32 32l50.7 0-58.7 58.7-17.4-17.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l17.4 17.4-23 23c-28.4-19.5-62.7-31-99.8-31-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176c0-37-11.4-71.4-31-99.8l23-23 17.4 17.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L453.3 136 512 77.3 512 128c0 17.7 14.3 32 32 32s32-14.3 32-32L576 0c0-17.7-14.3-32-32-32L416-32zM128 304a112 112 0 1 1 224 0 112 112 0 1 1 -224 0z\"]\n};\nvar faHandshakeAngle = {\n  prefix: 'fas',\n  iconName: 'handshake-angle',\n  icon: [576, 512, [\"hands-helping\"], \"f4c4\", \"M268.9 53.2L152.3 182.8c-4.6 5.1-4.4 13 .5 17.9 30.5 30.5 80 30.5 110.5 0l31.8-31.8c4.2-4.2 9.5-6.5 14.9-6.9 6.8-.6 13.8 1.7 19 6.9L505.6 344 576 288 576 0 464 64 440.2 48.1C424.4 37.6 405.9 32 386.9 32l-70.4 0c-1.1 0-2.3 0-3.4 .1-16.9 .9-32.8 8.5-44.2 21.1zM116.6 150.7L223.4 32 183.8 32c-25.5 0-49.9 10.1-67.9 28.1L0 192 0 544 144 408 156.4 418.3c23 19.2 52 29.7 81.9 29.7l15.7 0-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l41 41 9 0c19.1 0 37.8-4.3 54.8-12.3L359 409c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l32 32 17.5-17.5c8.9-8.9 11.5-21.8 7.6-33.1l-137.9-136.8-14.9 14.9c-49.3 49.3-129.1 49.3-178.4 0-23-23-23.9-59.9-2.2-84z\"]\n};\nvar faHandsHelping = faHandshakeAngle;\nvar faArrowDown = {\n  prefix: 'fas',\n  iconName: 'arrow-down',\n  icon: [384, 512, [8595], \"f063\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7-105.4-105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faLocationDot = {\n  prefix: 'fas',\n  iconName: 'location-dot',\n  icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M0 188.6C0 84.4 86 0 192 0S384 84.4 384 188.6c0 119.3-120.2 262.3-170.4 316.8-11.8 12.8-31.5 12.8-43.3 0-50.2-54.5-170.4-197.5-170.4-316.8zM192 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faMapMarkerAlt = faLocationDot;\nvar faPlugCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'plug-circle-exclamation',\n  icon: [640, 512, [], \"e55d\", \"M192-32c17.7 0 32 14.3 32 32l0 96 128 0 0-96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 48.7c-98.6 8.1-176 90.7-176 191.3 0 27.3 5.7 53.3 16 76.9l0 3.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7C165.2 398.1 96 319.1 96 224l0-64c-17.7 0-32-14.3-32-32S78.3 96 96 96l64 0 0-96c0-17.7 14.3-32 32-32zM496 256a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 228a20 20 0 1 0 0-40 20 20 0 1 0 0 40zm0-180c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nvar faCookieBite = {\n  prefix: 'fas',\n  iconName: 'cookie-bite',\n  icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9-.9-5.3-5.3-9.3-10.6-10.1-51.5-8.2-92.8-47.1-104.5-97.4-1.8-7.6-8-13.4-15.7-14.6-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faScrewdriverWrench = {\n  prefix: 'fas',\n  iconName: 'screwdriver-wrench',\n  icon: [576, 512, [\"tools\"], \"f7d9\", \"M70.8-6.7c5.4-5.4 13.8-6.2 20.2-2L209.9 70.5c8.9 5.9 14.2 15.9 14.2 26.6l0 49.6 90.8 90.8c33.3-15 73.9-8.9 101.2 18.5L542.2 382.1c18.7 18.7 18.7 49.1 0 67.9l-60.1 60.1c-18.7 18.7-49.1 18.7-67.9 0L288.1 384c-27.4-27.4-33.5-67.9-18.5-101.2l-90.8-90.8-49.6 0c-10.7 0-20.7-5.3-26.6-14.2L23.4 58.9c-4.2-6.3-3.4-14.8 2-20.2L70.8-6.7zm145 303.5c-6.3 36.9 2.3 75.9 26.2 107.2l-94.9 95c-28.1 28.1-73.7 28.1-101.8 0s-28.1-73.7 0-101.8l135.4-135.5 35.2 35.1zM384.1 0c20.1 0 39.4 3.7 57.1 10.5 10 3.8 11.8 16.5 4.3 24.1L388.8 91.3c-3 3-4.7 7.1-4.7 11.3l0 41.4c0 8.8 7.2 16 16 16l41.4 0c4.2 0 8.3-1.7 11.3-4.7l56.7-56.7c7.6-7.5 20.3-5.7 24.1 4.3 6.8 17.7 10.5 37 10.5 57.1 0 43.2-17.2 82.3-45 111.1l-49.1-49.1c-33.1-33-78.5-45.7-121.1-38.4l-56.8-56.8 0-29.7-.2-5c-.8-12.4-4.4-24.3-10.5-34.9 29.4-35 73.4-57.2 122.7-57.3z\"]\n};\nvar faTools = faScrewdriverWrench;\nvar faIndent = {\n  prefix: 'fas',\n  iconName: 'indent',\n  icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3L0 176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nvar faBars = {\n  prefix: 'fas',\n  iconName: 'bars',\n  icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faNavicon = faBars;\nvar faHandsPraying = {\n  prefix: 'fas',\n  iconName: 'hands-praying',\n  icon: [640, 512, [\"praying-hands\"], \"f684\", \"M224 296c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112.6 88.2-119.7c13.1-17.8 9.3-42.8-8.5-55.9s-42.8-9.3-55.9 8.5L106.5 142.9C89.3 166.2 80 194.5 80 223.6l0 110.7-58.1 19.4C8.8 358 0 370.2 0 384l0 96c0 10 4.7 19.5 12.7 25.5s18.4 8 28.1 5.2l154.4-44.1c55-15.7 92.8-65.9 92.8-123.1L288 224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 72zm192 0l0-72c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 119.6c0 57.2 37.9 107.4 92.8 123.1l154.4 44.1c9.7 2.8 20 .8 28.1-5.2S640 490 640 480l0-96c0-13.8-8.8-26-21.9-30.4l-58.1-19.4 0-110.7c0-29-9.3-57.3-26.5-80.7L440.2 16.3C427.1-1.5 402.1-5.3 384.3 7.8s-21.6 38.1-8.5 55.9L464 183.4 464 296c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPrayingHands = faHandsPraying;\nvar faViruses = {\n  prefix: 'fas',\n  iconName: 'viruses',\n  icon: [640, 512, [], \"e076\", \"M192 0c17.7 0 32 14.3 32 32 0 30.5 36.9 45.8 58.5 24.2 12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-21.6 21.6-6.3 58.5 24.2 58.5 17.7 0 32 14.3 32 32s-14.3 32-32 32c-30.5 0-45.8 36.9-24.2 58.5 12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0c-21.6-21.6-58.5-6.3-58.5 24.2 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-30.5-36.9-45.8-58.5-24.2-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3C77.8 260.9 62.5 224 32 224 14.3 224 0 209.7 0 192s14.3-32 32-32c30.5 0 45.8-36.9 24.2-58.5-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0C123.1 77.8 160 62.5 160 32 160 14.3 174.3 0 192 0zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm248 40c0 22.9 27.7 34.4 43.9 18.2 9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-16.2 16.2-4.7 43.9 18.2 43.9 13.3 0 24 10.7 24 24s-10.7 24-24 24c-22.9 0-34.4 27.7-18.2 43.9 9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-16.2-16.2-43.9-4.7-43.9 18.2 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-22.9-27.7-34.4-43.9-18.2-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c16.2-16.2 4.7-43.9-18.2-43.9-13.3 0-24-10.7-24-24s10.7-24 24-24c22.9 0 34.4-27.7 18.2-43.9-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c16.2 16.2 43.9 4.7 43.9-18.2 0-13.3 10.7-24 24-24s24 10.7 24 24zM504 384a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faSchoolFlag = {\n  prefix: 'fas',\n  iconName: 'school-flag',\n  icon: [576, 512, [], \"e56e\", \"M256-8c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-72 0 0 19.2 128 76.8 64 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l64 0 128-76.8 0-91.2zM240 384l0 80 96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48zM112 416c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 416c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zm-224 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faTrademark = {\n  prefix: 'fas',\n  iconName: 'trademark',\n  icon: [640, 512, [8482], \"f25c\", \"M346.6 110.2c-7.8-11.7-22.4-17-35.9-12.9S288 113.9 288 128l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-150.3 69.4 104.1c5.9 8.9 15.9 14.2 26.6 14.2s20.7-5.3 26.6-14.2L544 233.7 544 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256c0-14.1-9.2-26.5-22.7-30.6s-28.1 1.1-35.9 12.9L448 262.3 346.6 110.2zM32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l64 0 0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 96z\"]\n};\nvar faFireBurner = {\n  prefix: 'fas',\n  iconName: 'fire-burner',\n  icon: [512, 512, [], \"e4f1\", \"M281.7 48.3L294 34.5c5.4-6.1 13.3-8.8 20.9-8.9 7.2 0 14.3 2.6 19.9 7.8 19.7 18.3 39.8 43.2 55 70.6 15.1 27.2 26.2 58.1 26.2 88.1 0 88.7-71.3 159.8-160 159.8-89.6 0-160-71.3-160-159.8 0-37.3 16-73.4 36.8-104.5 20.9-31.3 47.5-59 70.9-80.2 5.7-5.2 13.1-7.7 20.3-7.5s13.4 3.2 18.8 7.5c14.4 11.4 38.9 40.7 38.9 40.7zM320 240.2c0-36.5-37-73-54.8-88.4-5.4-4.7-13.1-4.7-18.5 0-17.7 15.4-54.8 51.9-54.8 88.4 0 35.3 28.7 64 64 64s64-28.7 64-64zM92.8 320c37.7 48.3 96.1 80 163.2 80 66.5 0 125.1-31.7 163-80l45 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l44.8 0zM456 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faFaceSmileBeam = {\n  prefix: 'fas',\n  iconName: 'face-smile-beam',\n  icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM165.4 321.9c20.4 28 53.4 46.1 90.6 46.1s70.2-18.1 90.6-46.1c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5C356.3 390 309.2 416 256 416s-100.3-26-129.4-65.9c-7.8-10.7-5.4-25.7 5.3-33.5s25.7-5.4 33.5 5.3zM176 180c-15.5 0-28 12.5-28 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28zm132 28l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-37.6 30.4-68 68-68s68 30.4 68 68l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-15.5-12.5-28-28-28s-28 12.5-28 28z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faTentArrowLeftRight = {\n  prefix: 'fas',\n  iconName: 'tent-arrow-left-right',\n  icon: [512, 512, [], \"e57f\", \"M-.5 113c-9.4-9.4-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-31 31 310.1 0 54.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-102.1 0-.1 0-262 0 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72zM37.1 476L60.3 292.6c1.2-9.7 6.8-18.3 15.1-23.3L238.8 170c10.2-6.2 22.9-6.2 33.1-.1l165.5 99.4c8.4 5 14 13.7 15.3 23.4L475.9 476c2.4 19.1-12.5 36-31.7 36l-71.9 0c-12.1 0-23.2-6.8-28.6-17.7L275.4 357.9c-1.8-3.6-5.5-5.9-9.5-5.9-5.9 0-10.6 4.7-10.6 10.6l0 117.4c0 17.7-14.3 32-32 32L68.8 512c-19.3 0-34.2-16.9-31.7-36z\"]\n};\nvar faRoute = {\n  prefix: 'fas',\n  iconName: 'route',\n  icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155-3.8 4.4-9.4 6.1-14.5 5L320 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96 43 96 96s-43 96-96 96l-276.4 0c8.7-9.9 19.3-22.6 30-36.8 6.3-8.4 12.8-17.6 19-27.2L416 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-53 0-96-43-96-96s43-96 96-96l39.8 0c-21-31.5-39.8-67.7-39.8-96 0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8-25.2-27.4-85-97.9-85-148.4 0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faAnglesUp = {\n  prefix: 'fas',\n  iconName: 'angles-up',\n  icon: [384, 512, [\"angle-double-up\"], \"f102\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 329.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faAngleDoubleUp = faAnglesUp;\nvar faBucket = {\n  prefix: 'fas',\n  iconName: 'bucket',\n  icon: [448, 512, [], \"e4cf\", \"M443.7 208c2.7 4.7 4.3 10.2 4.3 16 0 17.7-14.3 32-32 32l-5.1 0-22.4 213c-2.6 24.4-23.2 43-47.8 43l-233.6 0c-24.6 0-45.2-18.5-47.8-43L37.1 256 32 256c-17.7 0-32-14.3-32-32 0-5.8 1.6-11.3 4.3-16l439.4 0zM224-16c79.5 0 144 64.5 144 144l0 32-48 0 0-32c0-53-43-96-96-96s-96 43-96 96l0 32-48 0 0-32C80 48.5 144.5-16 224-16z\"]\n};\nvar faLessThanEqual = {\n  prefix: 'fas',\n  iconName: 'less-than-equal',\n  icon: [448, 512, [], \"f537\", \"M426.1 94.4c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-384 128C8.8 166 0 178.2 0 192s8.8 26 21.9 30.4l384 128c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L133.2 192 426.1 94.4zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nvar faFolderClosed = {\n  prefix: 'fas',\n  iconName: 'folder-closed',\n  icon: [512, 512, [], \"e185\", \"M448 448L64 448c-35.3 0-64-28.7-64-64l0-176 512 0 0 176c0 35.3-28.7 64-64 64zm64-288L0 160 0 96C0 60.7 28.7 32 64 32l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4L448 80c35.3 0 64 28.7 64 64l0 16z\"]\n};\nvar faPersonThroughWindow = {\n  prefix: 'fas',\n  iconName: 'person-through-window',\n  icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4-60.5 24.2-100.1 82.7-100.1 147.9l0 73.8-64 0 0-320zm288 0l224 0 0 320-67.7 0-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4 44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320l-26.6 0 42.7 64 150.9 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 400c0 26.5 21.5 48 48 48l260.2 0 33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4l-84.2-126.2 74.6 0 40 48zm-159.5 0l-73.5 0 0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faSchoolLock = {\n  prefix: 'fas',\n  iconName: 'school-lock',\n  icon: [640, 512, [], \"e56f\", \"M0 192c0-35.3 28.7-64 64-64l64 0 127.9-115.1c18.3-16.4 46-16.4 64.2 0L448 128 512 128c33 0 60.2 25 63.6 57.2-14.7-5.9-30.8-9.2-47.6-9.2-70.7 0-128 57.3-128 128l0 24.4c-19.6 17.6-32 43.1-32 71.5l0 96c0 5.5 .5 10.9 1.3 16.1L64 512c-35.3 0-64-28.7-64-64L0 192zM332.3 341.5c-6-3.5-12.9-5.5-20.3-5.5l-48 0c-22.1 0-40 17.9-40 40l0 88 96 0 0-64.1c0-20.8 4.4-40.5 12.3-58.4zM112 384c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0zm16-144l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zm224-48a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM560 352l0-47.9c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 47.9 64 0zm-112 2.7l0-50.6c0-44.2 35.8-80 80-80s80 35.8 80 80l0 50.6c18.6 6.6 32 24.4 32 45.3l0 96c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-96c0-20.9 13.4-38.7 32-45.3z\"]\n};\nvar faPersonBurst = {\n  prefix: 'fas',\n  iconName: 'person-burst',\n  icon: [640, 512, [], \"e53b\", \"M204 40.1c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24l0 48c0 13.3-10.7 24-24 24zM4 144.1c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM96.5 285.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l33.9-33.9c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L96.5 285.5zM62.6 2.7c9.4-9.4 24.6-9.4 33.9 0l33.9 33.9c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L62.6 36.6c-9.4-9.4-9.4-24.6 0-33.9zM352.4-32a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM478.7 299.1l-46.3-62.4 0 275.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-275.3-46.3 62.4c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95c25.2-33.9 65-53.9 107.2-53.9s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6z\"]\n};\nvar faLeftLong = {\n  prefix: 'fas',\n  iconName: 'left-long',\n  icon: [576, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9S192 115.1 192 128l0 64 336 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-336 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nvar faLongArrowAltLeft = faLeftLong;\nvar faLocationCrosshairs = {\n  prefix: 'fas',\n  iconName: 'location-crosshairs',\n  icon: [576, 512, [\"location\"], \"f601\", \"M288-16c17.7 0 32 14.3 32 32l0 18.3c98.1 14 175.7 91.6 189.7 189.7l18.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.3 0c-14 98.1-91.6 175.7-189.7 189.7l0 18.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.3C157.9 463.7 80.3 386.1 66.3 288L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.3 0C80.3 125.9 157.9 48.3 256 34.3L256 16c0-17.7 14.3-32 32-32zM128 256a160 160 0 1 0 320 0 160 160 0 1 0 -320 0zm160-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faLocation = faLocationCrosshairs;\nvar faPersonDotsFromLine = {\n  prefix: 'fas',\n  iconName: 'person-dots-from-line',\n  icon: [512, 512, [\"diagnoses\"], \"f470\", \"M184 72a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zM160 299.3c-19.9 22.6-32 52.2-32 84.7l0 32-64 0 0-32c0-106 86-192 192-192s192 86 192 192l0 32-64 0 0-32c0-32.5-12.1-62.1-32-84.7l0 116.7-192 0 0-116.7zM232 384a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88-104a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM24 464l464 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24zM64 184a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm424 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faDiagnoses = faPersonDotsFromLine;\nvar faGaugeSimpleHigh = {\n  prefix: 'fas',\n  iconName: 'gauge-simple-high',\n  icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm320 96c0-16.2-6-31.1-16-42.3l69.5-138.9c5.9-11.9 1.1-26.3-10.7-32.2s-26.3-1.1-32.2 10.7L261.1 288.2c-1.7-.1-3.4-.2-5.1-.2-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64z\"]\n};\nvar faTachometer = faGaugeSimpleHigh;\nvar faTachometerFast = faGaugeSimpleHigh;\nvar faAnglesLeft = {\n  prefix: 'fas',\n  iconName: 'angles-left',\n  icon: [448, 512, [171, \"angle-double-left\"], \"f100\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L269.3 256 406.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faAngleDoubleLeft = faAnglesLeft;\nvar faUpDown = {\n  prefix: 'fas',\n  iconName: 'up-down',\n  icon: [512, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M406.6 502.6l96-96c9.2-9.2 11.9-22.9 6.9-34.9S492.9 352 480 352l-64 0 0-320c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 320-64 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l96 96c12.5 12.5 32.8 12.5 45.3 0zM150.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-9.2 9.2-11.9 22.9-6.9 34.9S19.1 160 32 160l64 0 0 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320 64 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-96-96z\"]\n};\nvar faArrowsAltV = faUpDown;\nvar faBatteryEmpty = {\n  prefix: 'fas',\n  iconName: 'battery-empty',\n  icon: [640, 512, [\"battery-0\"], \"f244\", \"M112 160c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16l416 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16l-416 0zM32 176c0-44.2 35.8-80 80-80l416 0c44.2 0 80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 48c0 44.2-35.8 80-80 80l-416 0c-44.2 0-80-35.8-80-80l0-224z\"]\n};\nvar faBattery0 = faBatteryEmpty;\nvar faKeyboard = {\n  prefix: 'fas',\n  iconName: 'keyboard',\n  icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm16 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM176 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM160 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nvar faCookie = {\n  prefix: 'fas',\n  iconName: 'cookie',\n  icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faStopwatch = {\n  prefix: 'fas',\n  iconName: 'stopwatch',\n  icon: [448, 512, [9201], \"f2f2\", \"M168.5 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 25.3c-108 11.9-192 103.5-192 214.7 0 119.3 96.7 216 216 216s216-96.7 216-216c0-39.8-10.8-77.1-29.6-109.2l28.2-28.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-23.4 23.4c-32.9-30.2-75.2-50.3-122-55.5l0-25.3 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0zm80 184l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faEject = {\n  prefix: 'fas',\n  iconName: 'eject',\n  icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320L48 320c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48l352 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48z\"]\n};\nvar faSatelliteDish = {\n  prefix: 'fas',\n  iconName: 'satellite-dish',\n  icon: [512, 512, [128225], \"f7c0\", \"M232 0c154.6 0 280 125.4 280 280 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-128.1-103.9-232-232-232-13.3 0-24-10.7-24-24S218.7 0 232 0zM208 120c0-13.3 10.7-24 24-24 101.6 0 184 82.4 184 184 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-75.1-60.9-136-136-136-13.3 0-24-10.7-24-24zM26.4 142.7c8.8-17.9 32.4-19.9 46.5-5.8l128.5 128.5 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32 128.5 128.5c14.1 14.1 12 37.6-5.8 46.5-34.2 16.9-72.6 26.4-113.3 26.4-141.4 0-256-114.6-256-256 0-40.7 9.5-79.2 26.4-113.3z\"]\n};\nvar faFaceRollingEyes = {\n  prefix: 'fas',\n  iconName: 'face-rolling-eyes',\n  icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM192 352l128 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-128 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm32-128c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4-3.7 5.2-5.8 11.6-5.8 18.4 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4 22.3 10 37.8 32.4 37.8 58.4zm128 64c-35.3 0-64-28.7-64-64 0-26 15.5-48.4 37.8-58.4-3.7 5.2-5.8 11.6-5.8 18.4 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4 22.3 10 37.8 32.4 37.8 58.4 0 35.3-28.7 64-64 64z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faListCheck = {\n  prefix: 'fas',\n  iconName: 'list-check',\n  icon: [512, 512, [\"tasks\"], \"f0ae\", \"M133.8 36.3c10.9 7.6 13.5 22.6 5.9 33.4l-56 80c-4.1 5.8-10.5 9.5-17.6 10.1S52 158 47 153L7 113C-2.3 103.6-2.3 88.4 7 79S31.6 69.7 41 79l19.8 19.8 39.6-56.6c7.6-10.9 22.6-13.5 33.4-5.9zm0 160c10.9 7.6 13.5 22.6 5.9 33.4l-56 80c-4.1 5.8-10.5 9.5-17.6 10.1S52 318 47 313L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l19.8 19.8 39.6-56.6c7.6-10.9 22.6-13.5 33.4-5.9zM224 96c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32zM64 376a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faTasks = faListCheck;\nvar faSackXmark = {\n  prefix: 'fas',\n  iconName: 'sack-xmark',\n  icon: [512, 512, [], \"e56a\", \"M328 112l-144 0-37.3-74.5c-1.8-3.6-2.7-7.6-2.7-11.6 0-14.3 11.6-25.9 25.9-25.9L342.1 0c14.3 0 25.9 11.6 25.9 25.9 0 4-.9 8-2.7 11.6L328 112zM169.6 160l172.8 0 48.7 40.6C457.6 256 496 338 496 424.5 496 472.8 456.8 512 408.5 512l-305.1 0C55.2 512 16 472.8 16 424.5 16 338 54.4 256 120.9 200.6L169.6 160zM323.9 284.1c-9.4-9.4-24.6-9.4-33.9 0l-33.9 33.9-33.9-33.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l33.9 33.9-33.9 33.9c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l33.9-33.9 33.9 33.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-33.9-33.9 33.9-33.9c9.4-9.4 9.4-24.6 0-33.9z\"]\n};\nvar faHashtag = {\n  prefix: 'fas',\n  iconName: 'hashtag',\n  icon: [512, 512, [62098], \"23\", \"M214.7 .7c17.3 3.7 28.3 20.7 24.6 38l-19.1 89.3 126.5 0 22-102.7C372.4 8 389.4-3 406.7 .7s28.3 20.7 24.6 38L412.2 128 480 128c17.7 0 32 14.3 32 32s-14.3 32-32 32l-81.6 0-27.4 128 67.8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-81.6 0-22 102.7c-3.7 17.3-20.7 28.3-38 24.6s-28.3-20.7-24.6-38l19.1-89.3-126.5 0-22 102.7c-3.7 17.3-20.7 28.3-38 24.6s-28.3-20.7-24.6-38L99.8 384 32 384c-17.7 0-32-14.3-32-32s14.3-32 32-32l81.6 0 27.4-128-67.8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l81.6 0 22-102.7C180.4 8 197.4-3 214.7 .7zM206.4 192l-27.4 128 126.5 0 27.4-128-126.5 0z\"]\n};\nvar faTrain = {\n  prefix: 'fas',\n  iconName: 'train',\n  icon: [384, 512, [128646], \"f238\", \"M0 96C0 43 43 0 96 0L288 0c53 0 96 43 96 96l0 256c0 40.1-24.6 74.5-59.5 88.8l53.9 63.7c8.6 10.1 7.3 25.3-2.8 33.8s-25.3 7.3-33.8-2.8l-74-87.5-151.3 0-74 87.5c-8.6 10.1-23.7 11.4-33.8 2.8s-11.4-23.7-2.8-33.8l53.9-63.7C24.6 426.5 0 392.1 0 352L0 96zm64 32l0 96c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L96 96c-17.7 0-32 14.3-32 32zM192 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faGamepad = {\n  prefix: 'fas',\n  iconName: 'gamepad',\n  icon: [640, 512, [], \"f11b\", \"M448 64c106 0 192 86 192 192S554 448 448 448l-256 0C86 448 0 362 0 256S86 64 192 64l256 0zM192 176c-13.3 0-24 10.7-24 24l0 32-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-32c0-13.3-10.7-24-24-24zm240 96a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm64-96a32 32 0 1 0 0 64 32 32 0 1 0 0-64z\"]\n};\nvar faFileExport = {\n  prefix: 'fas',\n  iconName: 'file-export',\n  icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M96.5 0c-35.3 0-64 28.7-64 64l0 384c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-96 78.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-78.1 0 0-133.5c0-17-6.7-33.3-18.7-45.3L291.2 18.7C279.2 6.7 263 0 246 0L96.5 0zM358 176l-93.5 0c-13.3 0-24-10.7-24-24L240.5 58.5 358 176zM224.5 328c0-13.3 10.7-24 24-24l104 0 0 48-104 0c-13.3 0-24-10.7-24-24z\"]\n};\nvar faArrowRightFromFile = faFileExport;\nvar faFaceGrimace = {\n  prefix: 'fas',\n  iconName: 'face-grimace',\n  icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM400 352c0 25.2-19.4 45.8-44 47.8l0-95.7c24.6 2 44 22.7 44 47.8zM276 304l40 0 0 96-40 0 0-96zm-80 96l0-96 40 0 0 96-40 0zm-40-95.8l0 95.7c-24.6-2-44-22.7-44-47.8s19.4-45.8 44-47.8zM144 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faTrainSubway = {\n  prefix: 'fas',\n  iconName: 'train-subway',\n  icon: [384, 512, [\"subway\"], \"f239\", \"M0 96C0 43 43 0 96 0L288 0c53 0 96 43 96 96l0 256c0 40.1-24.6 74.5-59.5 88.8l53.9 63.7c8.6 10.1 7.3 25.3-2.8 33.8s-25.3 7.3-33.8-2.8l-74-87.5-151.3 0-74 87.5c-8.6 10.1-23.7 11.4-33.8 2.8s-11.4-23.7-2.8-33.8l53.9-63.7C24.6 426.5 0 392.1 0 352L0 96zm64 32l0 96c0 17.7 14.3 32 32 32l72 0 0-160-72 0c-17.7 0-32 14.3-32 32zM216 256l72 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-72 0 0 160zM96 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm224-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSubway = faTrainSubway;\nvar faCircleDot = {\n  prefix: 'fas',\n  iconName: 'circle-dot',\n  icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faObjectGroup = {\n  prefix: 'fas',\n  iconName: 'object-group',\n  icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64 0 28.7 28.7 0 64 0 87.7 0 108.4 12.9 119.4 32l337.1 0c11.1-19.1 31.7-32 55.4-32 35.3 0 64 28.7 64 64 0 23.7-12.9 44.4-32 55.4l0 273.1c19.1 11.1 32 31.7 32 55.4 0 35.3-28.7 64-64 64-23.7 0-44.4-12.9-55.4-32l-337.1 0c-11.1 19.1-31.7 32-55.4 32-35.3 0-64-28.7-64-64 0-23.7 12.9-44.4 32-55.4l0-273.1zm448 0c-9.7-5.6-17.8-13.7-23.4-23.4L119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 273.1c9.7 5.6 17.8 13.7 23.4 23.4l337.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-273.1zM144 176c0-17.7 14.3-32 32-32l112 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-112 0c-17.7 0-32-14.3-32-32l0-64zM256 320l32 0c44.2 0 80-35.8 80-80l32 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-112 0c-17.7 0-32-14.3-32-32l0-16z\"]\n};\nvar faShip = {\n  prefix: 'fas',\n  iconName: 'ship',\n  icon: [640, 512, [128674], \"f21a\", \"M272 0c-26.5 0-48 21.5-48 48l0 16-16 0c-44.2 0-80 35.8-80 80l0 108.8-21.6 8.6c-14.8 5.9-22.5 22.4-17.4 37.5 10.4 31.3 26.8 59.3 47.7 83.1 20.1-9.2 41.7-13.9 63.3-14 33.1-.2 66.3 10.2 94.4 31.4l1.6 1.2 0-215-104 41.6 0-83.2c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 83.2-104-41.6 0 215 1.6-1.2c27.5-20.7 59.9-31.2 92.4-31.4 22.3-.1 44.6 4.5 65.3 14 20.9-23.7 37.3-51.8 47.7-83.1 5-15.2-2.6-31.6-17.4-37.5L512 252.8 512 144c0-44.2-35.8-80-80-80l-16 0 0-16c0-26.5-21.5-48-48-48L272 0zM403.4 476.1c21.3-16.1 49.9-16.1 71.2 0 19 14.4 41.9 28.2 67.2 33.3 26.5 5.4 54.3 .8 80.7-19.1 10.6-8 12.7-23 4.7-33.6s-23-12.7-33.6-4.7c-14.9 11.2-28.6 13.1-42.3 10.3-14.9-3-30.9-11.9-47.8-24.6-38.4-29-90.5-29-129 0-24 18.1-40.7 26.3-54.5 26.3s-30.5-8.2-54.5-26.3c-38.4-29-90.5-29-129 0-21.6 16.3-41.3 25.8-58.9 25.7-9.6-.1-19.9-3-31.2-11.5-10.6-8-25.6-5.9-33.6 4.7S7 482.3 17.6 490.3c19.1 14.4 39.4 21 59.8 21.1 33.9 .2 64.3-17.4 88.1-35.3 21.3-16.1 49.9-16.1 71.2 0 24.2 18.3 52.3 35.9 83.4 35.9s59.1-17.7 83.4-35.9z\"]\n};\nvar faC = {\n  prefix: 'fas',\n  iconName: 'c',\n  icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3 155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8 221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faSquarePhone = {\n  prefix: 'fas',\n  iconName: 'square-phone',\n  icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 96.7c9.8-2.7 20.1 2.4 24 11.8l20.3 48.7c3.4 8.3 1.1 17.8-5.9 23.5l-22.1 18c16.2 35.8 44.5 65 79.6 82.4l19.3-23.6c5.7-6.9 15.2-9.3 23.5-5.9l48.7 20.3c9.4 3.9 14.4 14.2 11.8 24l-.8 2.8c-8.8 32.3-40.1 59.9-78.2 51.8-87.5-18.5-156.3-87.4-174.9-174.9-8.1-38.1 19.5-69.4 51.8-78.2l2.8-.8z\"]\n};\nvar faPhoneSquare = faSquarePhone;\nvar faRulerCombined = {\n  prefix: 'fas',\n  iconName: 'ruler-combined',\n  icon: [448, 512, [], \"f546\", \"M1 441.7C5.5 463.5 24.8 480 48 480l352 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 72c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-72-64 0 0 72c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-72-72 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0 0-64-72 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0 0-48c0-26.5-21.5-48-48-48L48 32C21.5 32 0 53.5 0 80L0 432c0 3.3 .3 6.6 1 9.7z\"]\n};\nvar faArrowsRotate = {\n  prefix: 'fas',\n  iconName: 'arrows-rotate',\n  icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M65.9 228.5c13.3-93 93.4-164.5 190.1-164.5 53 0 101 21.5 135.8 56.2 .2 .2 .4 .4 .6 .6l7.6 7.2-47.9 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.4-11.3-10.7C390.5 28.6 326.5 0 256 0 127 0 20.3 95.4 2.6 219.5 .1 237 12.2 253.2 29.7 255.7s33.7-9.7 36.2-27.1zm443.5 64c2.5-17.5-9.7-33.7-27.1-36.2s-33.7 9.7-36.2 27.1c-13.3 93-93.4 164.5-190.1 164.5-53 0-101-21.5-135.8-56.2-.2-.2-.4-.4-.6-.6l-7.6-7.2 47.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320c-8.5 0-16.7 3.4-22.7 9.5S-.1 343.7 0 352.3l1 127c.1 17.7 14.6 31.9 32.3 31.7S65.2 496.4 65 478.7l-.4-51.5 10.7 10.1c46.3 46.1 110.2 74.7 180.7 74.7 129 0 235.7-95.4 253.4-219.5z\"]\n};\nvar faRefresh = faArrowsRotate;\nvar faSync = faArrowsRotate;\nvar faPersonDress = {\n  prefix: 'fas',\n  iconName: 'person-dress',\n  icon: [384, 512, [\"female\"], \"f182\", \"M136 24a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zM112 384l-25.8 0c-10.9 0-18.6-10.7-15.2-21.1l43-129-48.3 65.1c-10.5 14.2-30.6 17.2-44.8 6.6s-17.2-30.6-6.6-44.8l70.5-95C110 132 149.7 112 192 112s82 20 107.2 53.9l70.5 95c10.5 14.2 7.6 34.2-6.6 44.8s-34.2 7.6-44.8-6.6L270 234 313 362.9c3.5 10.4-4.3 21.1-15.2 21.1l-25.8 0 0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-32 0 0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128z\"]\n};\nvar faFemale = faPersonDress;\nvar faBookOpen = {\n  prefix: 'fas',\n  iconName: 'book-open',\n  icon: [512, 512, [128214, 128366], \"f518\", \"M256 141.3l0 309.3 .5-.2C311.1 427.7 369.7 416 428.8 416l19.2 0 0-320-19.2 0c-42.2 0-84.1 8.4-123.1 24.6-16.8 7-33.4 13.9-49.7 20.7zM230.9 61.5L256 72 281.1 61.5C327.9 42 378.1 32 428.8 32L464 32c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-35.2 0c-50.7 0-100.9 10-147.7 29.5l-12.8 5.3c-7.9 3.3-16.7 3.3-24.6 0l-12.8-5.3C184.1 490 133.9 480 83.2 480L48 480c-26.5 0-48-21.5-48-48L0 80C0 53.5 21.5 32 48 32l35.2 0c50.7 0 100.9 10 147.7 29.5z\"]\n};\nvar faFolderTree = {\n  prefix: 'fas',\n  iconName: 'folder-tree',\n  icon: [576, 512, [], \"f802\", \"M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24L0 392c0 30.9 25.1 56 56 56l184 0 0-48-184 0c-4.4 0-8-3.6-8-8l0-232 192 0 0-48-192 0 0-88zM336 224l192 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-82.7 0c-8.5 0-16.6-3.4-22.6-9.4l-8.6-8.6c-9-9-21.2-14.1-33.9-14.1L336 0c-26.5 0-48 21.5-48 48l0 128c0 26.5 21.5 48 48 48zm0 288l192 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-82.7 0c-8.5 0-16.6-3.4-22.6-9.4l-8.6-8.6c-9-9-21.2-14.1-33.9-14.1L336 288c-26.5 0-48 21.5-48 48l0 128c0 26.5 21.5 48 48 48z\"]\n};\nvar faVirgo = {\n  prefix: 'fas',\n  iconName: 'virgo',\n  icon: [640, 512, [], \"e850\", \"M368 32c61.9 0 112 50.1 112 112l0 26.8c14.5-6.9 30.8-10.8 48-10.8 61.9 0 112 50.1 112 112S589.9 384 528 384l-48 0 0 32c0 16.6 12.6 30.2 28.7 31.8l6.6 .3c16.1 1.6 28.7 15.3 28.7 31.8 0 17.7-14.3 32-32 32-53 0-96-43-96-96l0-32-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-176c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 304c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-304c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 304c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-320c0-16.6-12.6-30.2-28.7-31.8l-6.6-.3C44.6 94.2 32 80.6 32 64 32 46.3 46.3 32 64 32 91 32 115.3 43.1 132.7 61 152.6 43 179 32 208 32 239.3 32 267.7 44.9 288 65.7 308.3 44.9 336.6 32 368 32zM528 224c-26.5 0-48 21.5-48 48l0 48 48 0c26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faBoxArchive = {\n  prefix: 'fas',\n  iconName: 'box-archive',\n  icon: [512, 512, [\"archive\"], \"f187\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96L0 64zM32 176l448 0 0 240c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-240zm152 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nvar faArchive = faBoxArchive;\nvar faTentArrowDownToLine = {\n  prefix: 'fas',\n  iconName: 'tent-arrow-down-to-line',\n  icon: [576, 512, [], \"e57e\", \"M185 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-102.1C120 2.7 109.3-8 96-8S72 2.7 72 16l0 102.1-31-31C31.6 77.7 16.4 77.7 7 87S-2.3 111.6 7 121l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72zM155.8 260.6L132.1 448 32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32 0-2.8-.4-5.5-1-8L548.2 260.7c-1.2-9.7-6.9-18.4-15.3-23.4L367.4 137.9c-10.2-6.1-22.9-6.1-33.1 .1L170.9 237.3c-8.3 5.1-13.9 13.7-15.1 23.3zM448 448l-97.1 0 0-149.4c0-5.9 4.7-10.6 10.6-10.6 4 0 7.7 2.3 9.5 5.9L448 448z\"]\n};\nvar faQrcode = {\n  prefix: 'fas',\n  iconName: 'qrcode',\n  icon: [448, 512, [], \"f029\", \"M64 160l64 0 0-64-64 0 0 64zM0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48L0 80zM64 416l64 0 0-64-64 0 0 64zM0 336c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96zM320 96l0 64 64 0 0-64-64 0zM304 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zM288 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm96 32c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm32-96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-32 32a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faDragon = {\n  prefix: 'fas',\n  iconName: 'dragon',\n  icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4-43.3-32.5c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0L464 0c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8 0 26.5-21.5 48-48 48l-21.5 0c-17 0-33.3-6.7-45.3-18.7l-13.3-13.3-32 0 0 21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1 0 60.6-49.1 109.8-109.8 109.8L32.3 512c-3.3 0-6.6-.4-9.6-1.4-9.2-2.8-16.7-9.6-20.4-18.6-1.3-3.3-2.2-6.9-2.3-10.7-.2-3.7 .3-7.3 1.3-10.7 2.8-9.2 9.6-16.7 18.6-20.4 3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1 0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1l0-102.5zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3l0 .6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9 0 13.3 10.7 24 24 24 10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87 0 27.5c0 32.8 8.4 64.8 24 93l-232 0c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9S.1 232.8 5.4 228L130.9 116.5z\"]\n};\nvar faHourglassEnd = {\n  prefix: 'fas',\n  iconName: 'hourglass-end',\n  icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1l67.9 67.9-67.9 67.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1l-67.9-67.9 67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32S369.7 0 352 0L32 0zM96 75l0-11 192 0 0 11c0 25.5-10.1 49.9-28.1 67.9l-67.9 67.9-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nvar faHourglass3 = faHourglassEnd;\nvar faGrip = {\n  prefix: 'fas',\n  iconName: 'grip',\n  icon: [512, 512, [58119, \"grid-horizontal\", \"grip-horizontal\"], \"f58d\", \"M88 96c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0zM280 224l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40zm192 0l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40zm0 192l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40zM280 288c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0zM88 416l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40z\"]\n};\nvar faGridHorizontal = faGrip;\nvar faGripHorizontal = faGrip;\nvar faBorderTopLeft = {\n  prefix: 'fas',\n  iconName: 'border-top-left',\n  icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32C28.7 32 0 60.7 0 96L0 448zm128 0c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm128 0c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm160 32c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zM384 192a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm32 160a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBorderStyle = faBorderTopLeft;\nvar faListUl = {\n  prefix: 'fas',\n  iconName: 'list-ul',\n  icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M48 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM48 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM96 256a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faListDots = faListUl;\nvar faPeopleRobbery = {\n  prefix: 'fas',\n  iconName: 'people-robbery',\n  icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6L328 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-305.7c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64l0 96 0 .6 0 191.4c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-227.3 13 20.5c5.9 9.2 16.1 14.9 27 14.9l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-30.4 0-37.4-58.9C157.6 142 132.1 128 104.7 128L72 128z\"]\n};\nvar faMobileButton = {\n  prefix: 'fas',\n  iconName: 'mobile-button',\n  icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zM192 464c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faArrowDownAZ = {\n  prefix: 'fas',\n  iconName: 'arrow-down-a-z',\n  icon: [512, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M230.6 390.6l-80 80c-12.5 12.5-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L96 370.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 306.7 25.4-25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm182-340.9c50.7 101.3 77.3 154.7 80 160 7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3l-7.2-14.3-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9c2.7-5.3 29.3-58.7 80-160 5.4-10.8 16.5-17.7 28.6-17.7s23.2 6.8 28.6 17.7zM384 135.6l-20.2 40.4 40.4 0-20.2-40.4zM288 320c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L397.3 416 448 416c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l73.4-73.4-50.7 0c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSortAlphaAsc = faArrowDownAZ;\nvar faSortAlphaDown = faArrowDownAZ;\nvar faMoneyBill = {\n  prefix: 'fas',\n  iconName: 'money-bill',\n  icon: [512, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm192 24c0 4.4-3.6 8.1-8 7.5-29-3.6-51.9-26.6-55.5-55.5-.5-4.4 3.1-8 7.5-8l48 0c4.4 0 8 3.6 8 8l0 48zM64 328c0-4.4 3.6-8.1 8-7.5 29 3.6 51.9 26.6 55.5 55.5 .5 4.4-3.1 8-7.5 8l-48 0c-4.4 0-8-3.6-8-8l0-48zm8-136.5c-4.4 .5-8-3.1-8-7.5l0-48c0-4.4 3.6-8 8-8l48 0c4.4 0 8.1 3.6 7.5 8-3.6 29-26.6 51.9-55.5 55.5zm368 129c4.4-.5 8 3.1 8 7.5l0 48c0 4.4-3.6 8-8 8l-48 0c-4.4 0-8.1-3.6-7.5-8 3.6-29 26.6-51.9 55.5-55.5z\"]\n};\nvar faCircleMinus = {\n  prefix: 'fas',\n  iconName: 'circle-minus',\n  icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM168 232l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-176 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusCircle = faCircleMinus;\nvar faArrowPointer = {\n  prefix: 'fas',\n  iconName: 'arrow-pointer',\n  icon: [448, 512, [\"mouse-pointer\"], \"f245\", \"M77.3 2.5c8.1-4.1 17.9-3.2 25.1 2.3l320 239.9c8.3 6.2 11.6 17 8.4 26.8s-12.4 16.4-22.8 16.4l-152.3 0 88.9 177.7c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3l-88.9-177.7-91.3 121.8c-6.2 8.3-17 11.6-26.8 8.4S64 434.3 64 424L64 24c0-9.1 5.1-17.4 13.3-21.5z\"]\n};\nvar faMousePointer = faArrowPointer;\nvar faSquareShareNodes = {\n  prefix: 'fas',\n  iconName: 'square-share-nodes',\n  icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM368 160c0 35.3-28.7 64-64 64-15.4 0-29.5-5.4-40.6-14.5l-85.3 46.5 85.3 46.5c11-9.1 25.2-14.5 40.6-14.5 35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L158.5 300c-11.7 12.3-28.2 20-46.5 20-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3 0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faShareAltSquare = faSquareShareNodes;\nvar faTableCellsLarge = {\n  prefix: 'fas',\n  iconName: 'table-cells-large',\n  icon: [448, 512, [\"th-large\"], \"f009\", \"M384 96l-128 0 0 128 128 0 0-128zm64 128l0 192c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 128zM64 288l0 128 128 0 0-128-128 0zm128-64l0-128-128 0 0 128 128 0zm64 64l0 128 128 0 0-128-128 0z\"]\n};\nvar faThLarge = faTableCellsLarge;\nvar faCat = {\n  prefix: 'fas',\n  iconName: 'cat',\n  icon: [576, 512, [128008], \"f6be\", \"M64 96c53 0 96 43 96 96l0 85.8c29.7-44.7 77.8-76.2 133.4-84 25.6 60 85.2 102.1 154.6 102.1 10.9 0 21.6-1.1 32-3.1L480 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-140.8-136 108.8 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-144 0c-53 0-96-43-96-96l0-224c0-16.6-12.6-30.2-28.7-31.8l-6.6-.3C44.6 158.2 32 144.6 32 128 32 110.3 46.3 96 64 96zM533.8 3.2C544.2-5.5 560 1.9 560 15.5L560 128c0 61.9-50.1 112-112 112S336 189.9 336 128l0-112.5c0-13.6 15.8-21 26.2-12.3L416 48 480 48 533.8 3.2zM400 108a20 20 0 1 0 0 40 20 20 0 1 0 0-40zm96 0a20 20 0 1 0 0 40 20 20 0 1 0 0-40z\"]\n};\nvar faCalendarWeek = {\n  prefix: 'fas',\n  iconName: 'calendar-week',\n  icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-32c0-17.7 14.3-32 32-32zm0 256c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-192 0z\"]\n};\nvar faCodeCompare = {\n  prefix: 'fas',\n  iconName: 'code-compare',\n  icon: [512, 512, [], \"e13a\", \"M198.8 1.8c9-3.7 19.3-1.7 26.2 5.2l56 56c9.4 9.4 9.4 24.6 0 33.9l-56 56c-6.9 6.9-17.2 8.9-26.2 5.2S184 145.7 184 136l0-24-24 0c-17.7 0-32 14.3-32 32l0 214.7c28.3 12.3 48 40.5 48 73.3 0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L64 144c0-53 43-96 96-96l24 0 0-24c0-9.7 5.8-18.5 14.8-22.2zM392 80a24 24 0 1 0 48 0 24 24 0 1 0 -48 0zm-8 73.3c-28.3-12.3-48-40.5-48-73.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3L448 368c0 53-43 96-96 96l-24 0 0 24c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-56-56c-9.4-9.4-9.4-24.6 0-33.9l56-56c6.9-6.9 17.2-8.9 26.2-5.2S328 366.3 328 376l0 24 24 0c17.7 0 32-14.3 32-32l0-214.7zM72 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nvar faLeo = {\n  prefix: 'fas',\n  iconName: 'leo',\n  icon: [512, 512, [], \"e84a\", \"M260 0c72.9 0 132 59.1 132 132l0 5.4-.1 1.4-23.8 270c.4 21.7 18.2 39.2 40 39.2 22.1 0 40-17.9 40-40l0-40c0-17.7 14.3-32 32-32s32 14.3 32 32l0 40c0 57.4-46.6 104-104 104S304 465.4 304 408l0-1.4 .1-1.4 23.9-270.6 0-2.6c0-37.6-30.4-68-68-68s-68 30.4-68 68l0 4c0 3.7 .3 7.3 .8 11l29.7 193.4c.9 6.1 1.4 12.2 1.4 18.4l0 9.2c0 61.9-50.1 112-112 112S0 429.9 0 368 50.1 256 112 256c11.7 0 23 1.8 33.7 5.1L129.6 156.7c-1.1-6.8-1.6-13.8-1.6-20.7l0-4C128 59.1 187.1 0 260 0zM112 320a48 48 0 1 0 0 96 48 48 0 1 0 0-96z\"]\n};\nvar faRoadCircleXmark = {\n  prefix: 'fas',\n  iconName: 'road-circle-xmark',\n  icon: [640, 512, [], \"e566\", \"M287.9 32l-76.2 0c-29.4 0-55.1 20.1-62.1 48.6L65.4 420.5C57.9 450.7 80.8 480 112 480l209.4 0c-11.2-24.4-17.4-51.4-17.4-80 0-28.6 6.2-55.7 17.4-80-.5 0-1 0-1.6 0-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49.2c35.2-40 86.7-65.2 144.2-65.2 9 0 17.8 .6 26.4 1.8l-32-129.2C483.4 52.1 457.8 32 428.3 32l-76.5 0 0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPallet = {\n  prefix: 'fas',\n  iconName: 'pallet',\n  icon: [576, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 64-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-64 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 320zm96 64l128 0 0 64-128 0 0-64zm192 0l128 0 0 64-128 0 0-64z\"]\n};\nvar faCakeCandles = {\n  prefix: 'fas',\n  iconName: 'cake-candles',\n  icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4-10.5L61.8 31.6C58 38.1 56 45.6 56 53.2L56 56c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L105.6-10.5c-2-3.4-5.7-5.5-9.6-5.5s-7.6 2.1-9.6 5.5zm128 0L189.8 31.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L233.6-10.5c-2-3.4-5.7-5.5-9.6-5.5s-7.6 2.1-9.6 5.5zM317.8 31.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L361.6-10.5c-2-3.4-5.7-5.5-9.6-5.5s-7.6 2.1-9.6 5.5L317.8 31.6zM128 160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.5C26.7 226.6 0 262.2 0 304l0 20.8c20.9 1.3 41.6 7.3 60.3 18l7.1 4.1c26.3 15 58.9 13.4 83.6-4.2 43.7-31.2 102.3-31.2 146 0 24.6 17.6 57.3 19.3 83.6 4.2l7.1-4.1c18.7-10.7 39.3-16.7 60.3-18l0-20.8c0-41.8-26.7-77.4-64-90.5l0-53.5c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48zM448 373c-12.7 1.2-25.1 5-36.5 11.5l-7.1 4.1c-42.6 24.3-95.4 21.7-135.3-6.8-27-19.3-63.2-19.3-90.2 0-39.9 28.5-92.7 31.2-135.3 6.8l-7.1-4.1C25.1 378 12.7 374.1 0 373l0 75c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-75z\"]\n};\nvar faBirthdayCake = faCakeCandles;\nvar faCake = faCakeCandles;\nvar faBugSlash = {\n  prefix: 'fas',\n  iconName: 'bug-slash',\n  icon: [576, 512, [], \"e490\", \"M7-24.9c9.4-9.4 24.6-9.4 33.9 0L241.8 176 344 176c14.2 0 27.7 2.8 40 8l108.8-81.6c14.1-10.6 34.2-7.7 44.8 6.4s7.7 34.2-6.4 44.8l-97.8 73.3c5.3 8.9 9.3 18.7 11.8 29.1l98.8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 32c0 9.5-.8 18.7-2.4 27.8L569 503.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9.1C-2.3-.3-2.3-15.5 7-24.9zM398.2 468c-23.2 22.1-53 37.2-86.2 42.2l0-128.4 86.2 86.2zM264 333.8l0 176.4c-51.2-7.7-94.5-39.7-117.7-83.9L83.2 473.6c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l83.4-62.5c-.1-2.6-.2-5.2-.2-7.9l0-32-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l98.8 0c3.3-13.9 9.3-26.7 17.6-37.8L264 333.8zM355.6 128l-82.4 0-72.3-72.3C216.1 22.8 249.4 0 288 0 341 0 384 43 384 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4z\"]\n};\nvar faTarp = {\n  prefix: 'fas',\n  iconName: 'tarp',\n  icon: [512, 512, [], \"e57b\", \"M448 64c35.3 0 64 28.7 64 64l0 149.5c0 17-6.7 33.3-18.7 45.3L386.7 429.3c-12 12-28.3 18.7-45.3 18.7L64 448c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l384 0zm5.5 208L360 272c-13.3 0-24 10.7-24 24l0 93.5 117.5-117.5zM96 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDiagramPredecessor = {\n  prefix: 'fas',\n  iconName: 'diagram-predecessor',\n  icon: [448, 512, [], \"e477\", \"M289.2 137.9c2.5-6 8.3-9.9 14.8-9.9l40 0 0-24c0-13.3-10.7-24-24-24l-98 0c1.3 5.1 2 10.5 2 16l0 64c0 35.3-28.7 64-64 64l-96 0c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l256 0c39.8 0 72 32.2 72 72l0 24 40 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-64 64c-6.2 6.2-16.4 6.2-22.6 0l-64-64c-4.6-4.6-5.9-11.5-3.5-17.4zM384 352l-320 0 0 64 320 0 0-64zm64 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 64z\"]\n};\nvar faFaceFlushed = {\n  prefix: 'fas',\n  iconName: 'face-flushed',\n  icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM168 392c0 13.3 10.7 24 24 24l128 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-128 0c-13.3 0-24 10.7-24 24zm-8-96a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faDiagramNext = {\n  prefix: 'fas',\n  iconName: 'diagram-next',\n  icon: [448, 512, [], \"e476\", \"M384 224c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l128 0 0 64-32 0c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S294.5 288 288 288l-32 0 0-64 128 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64l-34 0c5.6 21.7-.5 45.1-16.7 61.3l-64 64c-25 25-65.5 25-90.5 0l-64-64C98.6 333.1 92.4 309.7 98 288l-34 0z\"]\n};\nvar faAnchorCircleXmark = {\n  prefix: 'fas',\n  iconName: 'anchor-circle-xmark',\n  icon: [640, 512, [], \"e4ac\", \"M320.5 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-32-96c-53 0-96 43-96 96 0 41.8 26.7 77.4 64 90.5l0 257.9c-62.9-14.3-110.2-69.7-111.9-136.5l16.1 14.1c10 8.7 25.1 7.7 33.9-2.3s7.7-25.1-2.3-33.9l-64-56c-9-7.9-22.6-7.9-31.6 0l-64 56c-10 8.7-11 23.9-2.3 33.9s23.9 11 33.9 2.3l16.2-14.2c2.1 113.1 94.4 204.1 208 204.1 16.6 0 32.7-1.9 48.2-5.6-20.3-30.5-32.2-67-32.2-106.4 0-27.3 5.7-53.3 16-76.9l0-136.6c37.3-13.2 64-48.7 64-90.5 0-53-43-96-96-96zm208 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7l-36.7 36.7 36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPersonCircleXmark = {\n  prefix: 'fas',\n  iconName: 'person-circle-xmark',\n  icon: [640, 512, [], \"e543\", \"M280 24a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm24 212.7L341 286.6c12.8-17.5 28.5-32.7 46.3-45l-56.2-75.7C306 132 266.3 112 224 112s-82 20-107.2 53.9l-70.5 95c-10.5 14.2-7.6 34.2 6.6 44.8s34.2 7.6 44.8-6.6L144 236.7 144 512c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-8.8 7.2-16 16-16s16 7.2 16 16l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-275.3zM496 544a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-36.7-36.7-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l36.7-36.7-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l36.7 36.7 36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 400z\"]\n};\nvar faSpa = {\n  prefix: 'fas',\n  iconName: 'spa',\n  icon: [576, 512, [], \"f5bb\", \"M169.7 227.5c34.3 18.7 64.5 44.1 88.8 74.5 11.1 13.9 21 28.9 29.4 44.8 8.5-15.9 18.3-30.8 29.4-44.8 24.3-30.5 54.5-55.9 88.8-74.5 41.7-22.7 89.4-35.5 139.7-35.5l9.9 0c11.1 0 20.1 9 20.1 20.1 0 148-119.9 267.9-267.9 267.9l-40.2 0C119.9 480 0 360.1 0 212.1 0 201 9 192 20.1 192l9.9 0c50.4 0 98.1 12.8 139.7 35.5zM303.9 38c16.9 15.9 61.4 63.4 89 142.3-40.1 20.2-75.8 48.2-104.9 82.1-29.2-33.9-64.8-61.8-104.9-82.1 27.6-78.9 72.2-126.4 89-142.3 4.3-4.1 10-6 15.9-6s11.6 2 15.9 6z\"]\n};\nvar faAries = {\n  prefix: 'fas',\n  iconName: 'aries',\n  icon: [512, 512, [], \"e846\", \"M401.6 0c61.3 0 110.4 50.3 110.4 111 0 29.4-11.6 57.9-32.6 78.8l-8.8 8.8c-12.5 12.5-32.8 12.5-45.2 0s-12.5-32.8 0-45.2l8.8-8.8c8.8-8.8 13.8-21 13.8-33.6 0-25.9-21.1-47-46.4-47-22.5 0-41.7 16.1-45.7 38.2L287.5 485.6c0 .1-.1 .3-.1 .4-.2 .8-.3 1.6-.5 2.3-.1 .3-.1 .5-.2 .7-.2 .6-.4 1.3-.7 1.9-.2 .5-.4 1-.6 1.5-.1 .3-.3 .6-.4 .9-1.6 3.5-3.8 6.5-6.4 9.2-2 2-4.2 3.7-6.6 5.1-.2 .1-.3 .2-.5 .3-.7 .4-1.4 .7-2.1 1-.3 .1-.6 .3-.9 .4-.5 .2-1 .4-1.5 .6-.6 .2-1.2 .5-1.9 .7-.2 .1-.5 .2-.7 .2-.8 .2-1.6 .4-2.3 .5-.2 0-.3 .1-.4 .1-.2 0-.4 0-.6 .1-.7 .1-1.3 .2-2 .2-.4 0-.8 .1-1.2 .1-.6 0-1.2 .1-1.8 .1-.6 0-1.2 0-1.8-.1-.4 0-.8-.1-1.2-.1-.7-.1-1.4-.1-2-.2-.2 0-.4 0-.6-.1-.2 0-.3-.1-.5-.1-.8-.2-1.6-.3-2.3-.5-.3-.1-.5-.1-.8-.2-.6-.2-1.3-.4-1.9-.7-.5-.2-1-.4-1.5-.6-.3-.1-.6-.3-.9-.4-.7-.3-1.4-.7-2.1-1-.2-.1-.3-.2-.5-.3-2.4-1.4-4.7-3.1-6.6-5.1-2.6-2.6-4.8-5.7-6.4-9.2-.1-.2-.2-.3-.2-.5l-.5-1.1c-.1-.3-.2-.5-.3-.8-.2-.6-.5-1.2-.7-1.9-.1-.2-.2-.5-.2-.7-.2-.8-.4-1.6-.5-2.3 0-.1-.1-.3-.1-.4L156 102.2c-4-22.1-23.2-38.2-45.7-38.2-25.3 0-46.4 21.1-46.4 47 0 12.6 5 24.8 13.8 33.6l8.8 8.8c12.5 12.5 12.5 32.8 0 45.2s-32.8 12.5-45.2 0l-8.8-8.8C11.6 168.9 0 140.3 0 111 0 50.3 49.1 0 110.4 0 163.8 0 209.6 38.3 219 91l37 207 37-207c9.4-52.6 55.2-91 108.7-91z\"]\n};\nvar faBarsProgress = {\n  prefix: 'fas',\n  iconName: 'bars-progress',\n  icon: [448, 512, [\"tasks-alt\"], \"f828\", \"M288 160l96 0 0-64-96 0 0 64zM0 160L0 80C0 53.5 21.5 32 48 32l352 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 224c-26.5 0-48-21.5-48-48l0-16zM160 416l224 0 0-64-224 0 0 64zM0 416l0-80c0-26.5 21.5-48 48-48l352 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-16z\"]\n};\nvar faTasksAlt = faBarsProgress;\nvar faHeartCircleCheck = {\n  prefix: 'fas',\n  iconName: 'heart-circle-check',\n  icon: [576, 512, [], \"e4fd\", \"M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 17.6-3.4 35.6-9.5 53.7-21.8-8.6-45.6-13.4-70.5-13.4-106 0-192 86-192 192 0 28.5 6.2 55.6 17.4 80-.5 0-.9 0-1.4 0-15.5 0-30.8-4.6-43.1-14.1-73-55.7-212.9-186-212.9-298.2l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1zM288 400a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm201.4-60.9c-7.1-5.2-17.2-3.6-22.4 3.5l-53 72.9-26.8-26.8c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c3.3 3.3 7.9 5 12.6 4.6s8.9-2.8 11.7-6.5l64-88c5.2-7.1 3.6-17.2-3.5-22.3z\"]\n};\nvar faMarsStrokeRight = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-right',\n  icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M320.5 256a112 112 0 1 0 -224 0 112 112 0 1 0 224 0zM208.5 80c86.3 0 158.1 62.1 173.1 144.1 1-.1 1.9-.1 2.9-.1l16 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 61.4 0-22.4-28c-11-13.8-8.8-33.9 5-45s33.9-8.8 45 5l64 80c9.3 11.7 9.3 28.3 0 40l-64 80c-11 13.8-31.2 16-45 5s-16-31.2-5-45l22.4-28-61.4 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-16 0c-1 0-1.9 0-2.9-.1-15 82-86.8 144.1-173.1 144.1-97.2 0-176-78.8-176-176s78.8-176 176-176z\"]\n};\nvar faMarsStrokeH = faMarsStrokeRight;\nvar faTowerObservation = {\n  prefix: 'fas',\n  iconName: 'tower-observation',\n  icon: [448, 512, [], \"e586\", \"M209.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9-5.6 11.2-16.9 17.7-28.6 17.7l0 80c0 17.7-14.3 32-32 32l-13 0 32 192 45 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l45 0 32-192-13 0c-17.7 0-32-14.3-32-32l0-80c-11.7 0-23-6.5-28.6-17.7-7.9-15.8-1.5-35 14.3-42.9l160-80zM310.7 448l-86.7-61.9-86.7 61.9 173.4 0zm-153-192l-3.5 21.2 69.9 49.9 69.9-49.9-3.5-21.2-132.7 0zm-12.3 73.9l-10.1 60.6 47.5-33.9-37.4-26.7zm119.9 26.7l47.5 33.9-10.1-60.6-37.4 26.7zM152 128c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nvar faSterlingSign = {\n  prefix: 'fas',\n  iconName: 'sterling-sign',\n  icon: [384, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M91.3 288l-34.8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l21.4 0C37.3 147.3 105.1 42 207.6 42l8.2 0c33.6 0 66.2 11.3 92.5 32.2l16.1 12.7c13.9 11 16.2 31.1 5.2 45s-31.1 16.2-45 5.2l-16.1-12.7c-15-11.9-33.6-18.4-52.8-18.4l-8.2 0c-57.3 0-94.7 59.9-69.7 111.4 3.6 7.4 6.6 14.9 9.1 22.6l149.5 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-141.2 0c1 35.3-8.7 70.6-28.9 100.9l-18.1 27.1 212.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-272 0c-11.8 0-22.6-6.5-28.2-16.9s-5-23 1.6-32.9l51.2-76.8c13.1-19.6 19.2-42.6 18.2-65.4z\"]\n};\nvar faGbp = faSterlingSign;\nvar faPoundSign = faSterlingSign;\nvar faFaucetDrip = {\n  prefix: 'fas',\n  iconName: 'faucet-drip',\n  icon: [512, 512, [128688], \"e006\", \"M224 32c-17.7 0-32 14.3-32 32L96 64C78.3 64 64 78.3 64 96s14.3 32 32 32l96 0 0 64-18.7 0c-8.5 0-16.6 3.4-22.6 9.4L128 224 32 224c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l100.1 0c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48l36.1 0c17.7 0 32 14.3 32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32 0-88.4-71.6-160-160-160l-32 0-22.6-22.6c-6-6-14.1-9.4-22.6-9.4l-18.7 0 0-64 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c0-17.7-14.3-32-32-32zM436.8 455.4l-18.2 42.4c-1.8 4.1-2.7 8.6-2.7 13.1l0 1.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-1.2c0-4.5-.9-8.9-2.7-13.1l-18.2-42.4c-1.9-4.5-6.3-7.4-11.2-7.4s-9.2 2.9-11.2 7.4z\"]\n};\nvar faCircleInfo = {\n  prefix: 'fas',\n  iconName: 'circle-info',\n  icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-8 64l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faInfoCircle = faCircleInfo;\nvar faFeather = {\n  prefix: 'fas',\n  iconName: 'feather',\n  icon: [512, 512, [129718], \"f52d\", \"M352 0c41 0 80.3 16.3 109.2 45.2l5.5 5.5c29 29 45.3 68.3 45.3 109.2 0 24.1-5.7 47.6-16.2 68.8-1.9 3.7-5.3 6.5-9.3 7.7L374.5 270c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2l32.2 0c14.3 0 21.4 17.2 11.3 27.3l-22.4 22.4c-1.9 1.9-4.2 3.2-6.7 4l-81 24.3c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2 13.2 0 18.9 15.7 7.8 22.9-41.1 26.6-89.3 41.1-139 41.1l-86 0-48 48c-8.8 8.8-23.2 8.8-32 0s-8.8-23.2 0-32L256 224c8.8-8.8 8.8-23.2 0-32s-23.2-8.8-32 0L79.5 336.5c-5.7 5.7-15.5 1.7-15.5-6.4 0-67.9 27-133 75-181L242.8 45.2C271.7 16.3 311 0 352 0z\"]\n};\nvar faBowlRice = {\n  prefix: 'fas',\n  iconName: 'bowl-rice',\n  icon: [512, 512, [], \"e2eb\", \"M176 40c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm24 48l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 160l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4 0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 184c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zM104 88l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zM296 88l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zM392 88l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 16l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faStarHalfStroke = {\n  prefix: 'fas',\n  iconName: 'star-half-stroke',\n  icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M288.1 353.6c10 0 19.9 2.3 29 7l74.4 37.9-13-82.5c-3.2-20.2 3.5-40.7 17.9-55.2l59-59.1-82.5-13.1c-20.2-3.2-37.7-15.9-47-34.1l-38-74.4 0 273.6zM457.4 489c-7.3 5.3-17 6.1-25 2L288.1 417.6 143.8 491c-8 4.1-17.7 3.3-25-2s-11-14.2-9.6-23.2L134.4 305.9 20 191.4c-6.4-6.4-8.6-15.8-5.8-24.4s10.1-14.9 19.1-16.3l159.9-25.4 73.6-144.2c4.1-8 12.4-13.1 21.4-13.1s17.3 5.1 21.4 13.1L383 125.3 542.9 150.7c8.9 1.4 16.3 7.7 19.1 16.3s.5 18-5.8 24.4L441.7 305.9 467 465.8c1.4 8.9-2.3 17.9-9.6 23.2z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faTemperatureArrowDown = {\n  prefix: 'fas',\n  iconName: 'temperature-arrow-down',\n  icon: [512, 512, [\"temperature-down\"], \"e03f\", \"M64.5 96c0-53 43-96 96-96s96 43 96 96l0 164.7c29.5 26.4 48 64.7 48 107.3 0 79.5-64.5 144-144 144s-144-64.5-144-144c0-42.6 18.5-81 48-107.3L64.5 96zm96 336c35.3 0 64-28.7 64-64 0-26.9-16.5-49.9-40-59.3l0-28.7c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 28.7c-23.5 9.5-40 32.5-40 59.3 0 35.3 28.7 64 64 64zM439.1 310.6c-6 6-14.1 9.4-22.6 9.4s-16.6-3.4-22.6-9.4l-64-64c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l9.4 9.4 0-178.7c0-17.7 14.3-32 32-32s32 14.3 32 32l0 178.7 9.4-9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64z\"]\n};\nvar faTemperatureDown = faTemperatureArrowDown;\nvar faMaskVentilator = {\n  prefix: 'fas',\n  iconName: 'mask-ventilator',\n  icon: [640, 512, [], \"e524\", \"M152.2 192c-15.4 38.3-24.2 77.2-24.2 108.8 0 13.3 1.5 26.2 4.4 38.7l-17-3.4c-29.9-6-51.4-32.2-51.4-62.8l0-81.3 88.2 0zm32.9-64L64 128c-35.3 0-64 28.7-64 64l0 81.3c0 61 43.1 113.5 102.9 125.5l66.3 13.3c18.7 22.1 42.9 40 70.8 51.8l0-87.8c-10.1-14.2-16-31.3-16-49.7 0-49.5 43-134.4 96-134.4 52.5 0 96 84.9 96 134.4 0 18.4-5.9 35.4-16 49.6l0 87.7c27.6-11.8 51.7-29.6 70.4-51.6l66.7-13.3c59.8-12 102.9-64.5 102.9-125.5l0-81.3c0-35.3-28.7-64-64-64l-121.5 0c-34.8-54.2-82.5-96-134.5-96-52.6 0-100.2 41.8-134.9 96zm302.5 64l88.4 0 0 81.3c0 30.5-21.5 56.8-51.4 62.8l-17 3.4c2.9-12.4 4.5-25.4 4.5-38.7 0-31.6-8.9-70.5-24.4-108.8zM288 320l0 192 64 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faFileVideo = {\n  prefix: 'fas',\n  iconName: 'file-video',\n  icon: [384, 512, [], \"f1c8\", \"M0 64C0 28.7 28.7 0 64 0L213.5 0c17 0 33.3 6.7 45.3 18.7L365.3 125.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm208-5.5l0 93.5c0 13.3 10.7 24 24 24L325.5 176 208 58.5zM80 304l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-24 35 35c3.2 3.2 7.5 5 12 5 9.4 0 17-7.6 17-17l0-94.1c0-9.4-7.6-17-17-17-4.5 0-8.8 1.8-12 5l-35 35 0-24c0-17.7-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32z\"]\n};\nvar faArrowTrendDown = {\n  prefix: 'fas',\n  iconName: 'arrow-trend-down',\n  icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 82.7-169.4-169.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352 384 352z\"]\n};\nvar faOilCan = {\n  prefix: 'fas',\n  iconName: 'oil-can',\n  icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-176 0c-26.5 0-48 21.5-48 48l0 64.8c0 19 11.2 36.2 28.5 43.9l67.5 30 0 21.3c0 26.5 21.5 48 48 48l259.1 0c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192 397.5 166.8c-8.9-4.4-18.7-6.8-28.6-6.8l-80.9 0 0-32 32 0zM96 208l0 86.1-48-21.3 0-64.8 48 0z\"]\n};\nvar faPeopleCarryBox = {\n  prefix: 'fas',\n  iconName: 'people-carry-box',\n  icon: [576, 512, [\"people-carry\"], \"f4ce\", \"M64-32A56 56 0 1 1 64 80 56 56 0 1 1 64-32zM0 171.1c0-32.6 26.5-59.1 59.1-59.1 23.5 0 45.5 11.3 59.1 30.4l48.7 68.2c5.8 8.2 15.1 13.1 25.1 13.4l0-96c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 96c10-.3 19.3-5.2 25.1-13.4l48.7-68.2c13.6-19.1 35.6-30.4 59.1-30.4 32.6 0 59.1 26.5 59.1 59.1L576 272c0 30.2-14.2 58.7-38.4 76.8l-76.8 57.6c-8.1 6-12.8 15.5-12.8 25.6l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80c0-30.2 14.2-58.7 38.4-76.8l41.6-31.2 0-80.1-2.8 3.9c-18 25.2-47.1 40.2-78.1 40.2L352 288c-.6 0-1.3 0-1.9-.1-.6 0-1.3 .1-1.9 .1l-120.4 0c-.6 0-1.3 0-1.9-.1-.6 0-1.3 .1-1.9 .1l-31.1 0c-31 0-60.1-15-78.1-40.2l-2.8-3.9 0 80.1 41.6 31.2C177.8 373.3 192 401.8 192 432l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80c0-10.1-4.7-19.6-12.8-25.6L38.4 348.8C14.2 330.7 0 302.2 0 272L0 171.1zM0 379.3c3.1 2.7 6.3 5.4 9.6 7.9L64 428 64 512c0 17.7-14.3 32-32 32S0 529.7 0 512L0 379.3zM568 24a56 56 0 1 1 -112 0 56 56 0 1 1 112 0zm8 488c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-84 54.4-40.8c3.3-2.5 6.5-5.1 9.6-7.9L576 512z\"]\n};\nvar faPeopleCarry = faPeopleCarryBox;\nvar faChair = {\n  prefix: 'fas',\n  iconName: 'chair',\n  icon: [448, 512, [129681], \"f6c0\", \"M152 256l0-181.8c-24.5 20.5-40 51.4-40 85.8l0 96 40 0zm48 0l48 0 0-205.4c-7.7-1.7-15.8-2.6-24-2.6s-16.3 .9-24 2.6L200 256zM296 74.2l0 181.8 40 0 0-96c0-34.4-15.5-65.2-40-85.8zM32 256l32 0 0-96C64 71.6 135.6 0 224 0S384 71.6 384 160l0 96 32 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-256 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32z\"]\n};\nvar faWind = {\n  prefix: 'fas',\n  iconName: 'wind',\n  icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32l40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L32 112c-17.7 0-32 14.3-32 32s14.3 32 32 32l328 0c48.6 0 88-39.4 88-88S408.6 0 360 0L320 0c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32l32 0c53 0 96-43 96-96s-43-96-96-96L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32zM128 512l40 0c48.6 0 88-39.4 88-88s-39.4-88-88-88L32 336c-17.7 0-32 14.3-32 32s14.3 32 32 32l136 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faLayerGroup = {\n  prefix: 'fas',\n  iconName: 'layer-group',\n  icon: [512, 512, [], \"f5fd\", \"M232.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 149.8C5.4 145.8 0 137.3 0 128s5.4-17.9 13.9-21.8L232.5 5.2zM48.1 218.4l164.3 75.9c27.7 12.8 59.6 12.8 87.3 0l164.3-75.9 34.1 15.8c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 277.8C5.4 273.8 0 265.3 0 256s5.4-17.9 13.9-21.8l34.1-15.8zM13.9 362.2l34.1-15.8 164.3 75.9c27.7 12.8 59.6 12.8 87.3 0l164.3-75.9 34.1 15.8c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 405.8C5.4 401.8 0 393.3 0 384s5.4-17.9 13.9-21.8z\"]\n};\nvar faHeadSideMask = {\n  prefix: 'fas',\n  iconName: 'head-side-mask',\n  icon: [512, 512, [], \"e063\", \"M445.9 193c-.1-.4-.2-.9-.2-1.3-15.7-108.4-108.9-191.7-221.7-191.7-85 0-159 47.4-196.9 117.2L283.3 288 456 288 442.9 336 336 336c-8.8 0-16 7.2-16 16s7.2 16 16 16l98.2 0-8.7 32-89.5 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80.6 0c-6.7 19.1-24.8 32-45.3 32L288 464c-17.7 0-32-14.3-32-32l0-104.5-247.5-165C3 182.1 0 202.7 0 224 0 278 19.1 327.5 50.9 366.2 58.9 375.9 64 387.8 64 400.4L64 464c0 26.5 21.5 48 48 48l127.3 0 .7 0 131.3 0c44.9 0 83.8-31.1 93.6-74.9l33.9-150.3c3.3-14.4-.3-29.5-9.7-41L445.9 193zM288 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faHands = {\n  prefix: 'fas',\n  iconName: 'hands',\n  icon: [512, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M512 160l-.1 72.6c0 44.8-17.6 87.1-47.9 118.4-.3-77-40.1-148.4-105.4-189.3l-1.9-1.2c2.5-3.7 2.8-8.6 .4-12.7l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S330 5 336.6 16.5l68 117.8 0 0 0 0 43.3 75 .1-49.3c0-17.7 14.4-32 32-32s32 14.4 32 32zM298.4 124.2c-14.1-8.8-29.8-12.7-45.2-12.1L216.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l67.1 116.2-27-16.9zM211.9 88.5l16.4 28.4c-15.1 5.5-28.6 15.6-38.3 29.7l-19.7-34.2c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l12.5 21.7c-2 8.6-2.5 17.5-1.7 26.1l-4.3 0 0 0-34.4 0-13.7-23.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM228.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C384.7 234.7 416 291.2 416 352l0 8c0 83.9-68.1 152-152 152L88 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l92 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L56 440c-13.3 0-24-10.7-24-24s10.7-24 24-24l124 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L24 368c-13.3 0-24-10.7-24-24s10.7-24 24-24l156 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L56 296c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0 0 0 0 0 93.2 0-46.2-28.9c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nvar faSignLanguage = faHands;\nvar faSigning = faHands;\nvar faTablets = {\n  prefix: 'fas',\n  iconName: 'tablets',\n  icon: [512, 512, [], \"f490\", \"M495.3 76.6c-4.6-8.7-16.3-9.7-23.3-2.7L297.9 248c-7 7-6 18.7 2.7 23.3 20.1 10.7 43 16.7 67.4 16.7 79.5 0 144-64.5 144-144 0-24.3-6-47.3-16.7-67.4zM240.7 211.4c4.6 8.7 16.3 9.7 23.3 2.7L438.1 40c7-7 6-18.7-2.7-23.3-20.1-10.7-43-16.7-67.4-16.7-79.5 0-144 64.5-144 144 0 24.3 6 47.3 16.7 67.4zM144 224C79.2 224 24.4 266.8 6.3 325.6 3.4 335.1 11 344 20.9 344l246.2 0c9.9 0 17.5-8.9 14.6-18.4-.9-3-1.9-5.9-3-8.7-37.4-18.1-68-48-87-84.8-14.9-5.2-30.9-8.1-47.6-8.1zM281.7 410.4c2.9-9.5-4.7-18.4-14.6-18.4L20.9 392C11 392 3.4 400.9 6.3 410.4 24.4 469.2 79.2 512 144 512s119.6-42.8 137.7-101.6z\"]\n};\nvar faWeightHanging = {\n  prefix: 'fas',\n  iconName: 'weight-hanging',\n  icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32 0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32l-21.8 0c-28.3 0-53.2 18.5-61.3 45.6L2.4 440.2C.8 445.4 0 450.8 0 456.2 0 487 25 512 55.8 512l400.4 0c30.8 0 55.8-25 55.8-55.8 0-5.4-.8-10.8-2.4-16l-80-266.5c-8.1-27.1-33-45.6-61.3-45.6l-21.8 0z\"]\n};\nvar faDice = {\n  prefix: 'fas',\n  iconName: 'dice',\n  icon: [512, 512, [127922], \"f522\", \"M141.4 2.3C103-8 63.5 14.8 53.3 53.2L2.5 242.7C-7.8 281.1 15 320.6 53.4 330.9l189.5 50.8c38.4 10.3 77.9-12.5 88.2-50.9l50.8-189.5c10.3-38.4-12.5-77.9-50.9-88.2L141.4 2.3zm23 205.7a32 32 0 1 1 55.4-32 32 32 0 1 1 -55.4 32zM79.2 220.3a32 32 0 1 1 32 55.4 32 32 0 1 1 -32-55.4zm185 96.4a32 32 0 1 1 -32-55.4 32 32 0 1 1 32 55.4zm9-208.4a32 32 0 1 1 32 55.4 32 32 0 1 1 -32-55.4zm-121 14.4a32 32 0 1 1 -32-55.4 32 32 0 1 1 32 55.4zM418 192L377.4 343.2c-17.2 64-83 102-147 84.9l-38.3-10.3 0 30.2c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64L418 192z\"]\n};\nvar faShopSlash = {\n  prefix: 'fas',\n  iconName: 'shop-slash',\n  icon: [576, 512, [\"store-alt-slash\"], \"e070\", \"M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-57-57 0-190.3c26.8-1.9 48-24.3 48-51.6 0-8-1.9-16-5.5-23.2L497.7 67.4C486.8 45.7 464.7 32 440.4 32L135.6 32c-10.7 0-21 2.7-30.2 7.6L41-24.9zM321.8 256L448 256 448 382.2 321.8 256zM352 421.8l-64-64 0 10.2c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16l0-112 58.2 0-134.8-134.8-29.9 59.9c-3.6 7.2-5.5 15.1-5.5 23.2 0 27.3 21.2 49.7 48 51.6L64 432c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-10.2z\"]\n};\nvar faStoreAltSlash = faShopSlash;\nvar faSortDown = {\n  prefix: 'fas',\n  iconName: 'sort-down',\n  icon: [384, 512, [\"sort-desc\"], \"f0dd\", \"M32 288c-12.9 0-24.6 7.8-29.6 19.8S.2 333.5 9.4 342.6l160 160c12.5 12.5 32.8 12.5 45.3 0l160-160c9.2-9.2 11.9-22.9 6.9-34.9S364.9 288 352 288L32 288z\"]\n};\nvar faSortDesc = faSortDown;\nvar faPesetaSign = {\n  prefix: 'fas',\n  iconName: 'peseta-sign',\n  icon: [448, 512, [], \"e221\", \"M112 32C94.3 32 80 46.3 80 64l0 104-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 232c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 96 0c80.2 0 146.6-59 158.2-136l25.8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-25.8 0C386.6 91 320.2 32 240 32L112 32zM333 168l-189 0 0-72 96 0c44.7 0 82.3 30.6 93 72zM144 216l189 0c-10.7 41.4-48.2 72-93 72l-96 0 0-72z\"]\n};\nvar faTabletScreenButton = {\n  prefix: 'fas',\n  iconName: 'tablet-screen-button',\n  icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM256 432a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64l-320 0 0 288 320 0 0-288z\"]\n};\nvar faTabletAlt = faTabletScreenButton;\nvar faHandHoldingDollar = {\n  prefix: 'fas',\n  iconName: 'hand-holding-dollar',\n  icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M288-16c-13.3 0-24 10.7-24 24l0 12-1.8 0c-36.6 0-66.2 29.7-66.2 66.2 0 33.4 24.9 61.6 58 65.7l61 7.6c5.1 .6 9 5 9 10.2 0 5.7-4.6 10.2-10.2 10.2L240 180c-15.5 0-28 12.5-28 28s12.5 28 28 28l24 0 0 12c0 13.3 10.7 24 24 24s24-10.7 24-24l0-12 1.8 0c36.6 0 66.2-29.7 66.2-66.2 0-33.4-24.9-61.6-58-65.7l-61-7.6c-5.1-.6-9-5-9-10.2 0-5.7 4.6-10.2 10.2-10.2L328 76c15.5 0 28-12.5 28-28s-12.5-28-28-28l-16 0 0-12c0-13.3-10.7-24-24-24zM109.3 341.5L66.7 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l320.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 280 416c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-152.2 0c-33.9 0-66.5 13.5-90.5 37.5z\"]\n};\nvar faHandHoldingUsd = faHandHoldingDollar;\nvar faShield = {\n  prefix: 'fas',\n  iconName: 'shield',\n  icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0z\"]\n};\nvar faShieldBlank = faShield;\nvar faFaceLaugh = {\n  prefix: 'fas',\n  iconName: 'face-laugh',\n  icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM101.6 314c-3.7-13.7 7.5-26 21.7-26l265.4 0c14.2 0 25.4 12.3 21.7 26-18.5 68-80.6 118-154.4 118S120 382 101.6 314zM144 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faHandsHolding = {\n  prefix: 'fas',\n  iconName: 'hands-holding',\n  icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104L0 325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7l66.7 0c26.5 0 48-21.5 48-48l0-78.9c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0c-7.3-7.3-23.1-23.1-47.2-47.2-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c24.1 24.1 39.9 39.9 47.2 47.2 11 11 9.2 29.2-3.7 37.8-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3L80 104zm480 0l0 160.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1-12.9-8.6-14.7-26.9-3.7-37.8 7.3-7.3 23.1-23.1 47.2-47.2 12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-24.1 24.1-39.9 39.9-47.2 47.2l0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2l0 78.9c0 26.5 21.5 48 48 48l66.7 0c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9L640 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faCartShopping = {\n  prefix: 'fas',\n  iconName: 'cart-shopping',\n  icon: [640, 512, [128722, \"shopping-cart\"], \"f07a\", \"M24-16C10.7-16 0-5.3 0 8S10.7 32 24 32l45.3 0c3.9 0 7.2 2.8 7.9 6.6l52.1 286.3c6.2 34.2 36 59.1 70.8 59.1L456 384c13.3 0 24-10.7 24-24s-10.7-24-24-24l-255.9 0c-11.6 0-21.5-8.3-23.6-19.7l-5.1-28.3 303.6 0c30.8 0 57.2-21.9 62.9-52.2L568.9 69.9C572.6 50.2 557.5 32 537.4 32l-412.7 0-.4-2c-4.8-26.6-28-46-55.1-46L24-16zM208 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm224 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShoppingCart = faCartShopping;\nvar faOctagon = {\n  prefix: 'fas',\n  iconName: 'octagon',\n  icon: [512, 512, [128721], \"f306\", \"M188.6 .1c-17 0-33.3 6.7-45.3 18.7L19.2 143C7.2 155 .5 171.2 .5 188.2l0 135.6c0 17 6.7 33.3 18.7 45.3L143.4 493.2c12 12 28.3 18.7 45.3 18.7l135.6 0c17 0 33.3-6.7 45.3-18.7L493.6 369c12-12 18.7-28.3 18.7-45.3l0-135.6c0-17-6.7-33.3-18.7-45.3L369.5 18.8c-12-12-28.3-18.7-45.3-18.7L188.6 .1z\"]\n};\nvar faHandPointer = {\n  prefix: 'fas',\n  iconName: 'hand-pointer',\n  icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40l0 148.2c8.5-7.6 19.7-12.2 32-12.2 20.6 0 38.2 13 45 31.2 8.8-9.3 21.2-15.2 35-15.2 25.3 0 46 19.5 47.9 44.3 8.5-7.7 19.8-12.3 32.1-12.3 26.5 0 48 21.5 48 48l0 112c0 70.7-57.3 128-128 128l-85.3 0c-5 0-9.9-.3-14.7-1-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7 0-322.7zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96zm48-16c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96z\"]\n};\nvar faRegistered = {\n  prefix: 'fas',\n  iconName: 'registered',\n  icon: [512, 512, [174], \"f25d\", \"M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM200 144l80 0c39.8 0 72 32.2 72 72 0 28.9-17 53.8-41.6 65.3l30.2 50.3c6.8 11.4 3.1 26.1-8.2 32.9s-26.1 3.1-32.9-8.2l-41-68.3-34.4 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-176c0-13.3 10.7-24 24-24zm72 96l8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0 0 48 48 0z\"]\n};\nvar faHouseSignal = {\n  prefix: 'fas',\n  iconName: 'house-signal',\n  icon: [576, 512, [], \"e012\", \"M515.9 240l-19.9 0 0 144c0 35.3-28.7 64-64 64l-137 0c-24-91.7-93.5-165-183-194.3l0-13.7-19.9 0c-15.5 0-28.1-12.6-28.1-28.1 0-7.6 3.1-14.9 8.6-20.2L276.5-4.9C283.9-12 293.7-16 304-16s20.1 4 27.5 11.1L535.4 191.7c5.5 5.3 8.6 12.6 8.6 20.2 0 15.5-12.6 28.1-28.1 28.1zM280 192c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0zM24 288c128.1 0 232 103.9 232 232 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 408c0-13.3 10.7-24 24-24 75.1 0 136 60.9 136 136 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88-13.3 0-24-10.7-24-24z\"]\n};\nvar faBangladeshiTakaSign = {\n  prefix: 'fas',\n  iconName: 'bangladeshi-taka-sign',\n  icon: [384, 512, [], \"e2e6\", \"M36 32.3C18.4 30.1 2.4 42.5 .3 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8l0 31.5-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 176c0 53 43 96 96 96l32 0c106 0 192-86 192-192l0-32c0-53-43-96-96-96l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0c17.7 0 32 14.3 32 32l0 32c0 70.7-57.3 128-128 128l-32 0c-17.7 0-32-14.3-32-32l0-176 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-31.5C128 80.1 92 39.2 43.9 33.2l-7.9-1z\"]\n};\nvar icons = {\n  fa0: fa0,\n  fa1: fa1,\n  fa2: fa2,\n  fa3: fa3,\n  fa4: fa4,\n  fa5: fa5,\n  fa6: fa6,\n  fa7: fa7,\n  fa8: fa8,\n  fa9: fa9,\n  faDollarSign: faDollarSign,\n  faDollar: faDollar,\n  faUsd: faUsd,\n  faDog: faDog,\n  faTruckMoving: faTruckMoving,\n  faRotate: faRotate,\n  faSyncAlt: faSyncAlt,\n  faSquareMinus: faSquareMinus,\n  faMinusSquare: faMinusSquare,\n  faAlignJustify: faAlignJustify,\n  faCalendarCheck: faCalendarCheck,\n  faFaceKiss: faFaceKiss,\n  faKiss: faKiss,\n  faKitchenSet: faKitchenSet,\n  faDna: faDna,\n  faChildReaching: faChildReaching,\n  faPaste: faPaste,\n  faFileClipboard: faFileClipboard,\n  faMeteor: faMeteor,\n  faGears: faGears,\n  faCogs: faCogs,\n  faFileCirclePlus: faFileCirclePlus,\n  faIcicles: faIcicles,\n  faArrowTrendUp: faArrowTrendUp,\n  faHexagonNodesBolt: faHexagonNodesBolt,\n  faQuestion: faQuestion,\n  faHandsBound: faHandsBound,\n  faPersonWalkingLuggage: faPersonWalkingLuggage,\n  faFileArrowDown: faFileArrowDown,\n  faFileDownload: faFileDownload,\n  faPersonBooth: faPersonBooth,\n  faLocust: faLocust,\n  faRightLong: faRightLong,\n  faLongArrowAltRight: faLongArrowAltRight,\n  faTruckDroplet: faTruckDroplet,\n  faHandHoldingMedical: faHandHoldingMedical,\n  faHandPointLeft: faHandPointLeft,\n  faCalculator: faCalculator,\n  faMinus: faMinus,\n  faSubtract: faSubtract,\n  faArrowUpZA: faArrowUpZA,\n  faSortAlphaUpAlt: faSortAlphaUpAlt,\n  faMicrophoneSlash: faMicrophoneSlash,\n  faSquarePen: faSquarePen,\n  faPenSquare: faPenSquare,\n  faPencilSquare: faPencilSquare,\n  faHandFist: faHandFist,\n  faFistRaised: faFistRaised,\n  faCommentSms: faCommentSms,\n  faSms: faSms,\n  faSimCard: faSimCard,\n  faScaleBalanced: faScaleBalanced,\n  faBalanceScale: faBalanceScale,\n  faCar: faCar,\n  faAutomobile: faAutomobile,\n  faCropSimple: faCropSimple,\n  faCropAlt: faCropAlt,\n  faMedal: faMedal,\n  faScroll: faScroll,\n  faFileExcel: faFileExcel,\n  faFilter: faFilter,\n  faDrum: faDrum,\n  faMapPin: faMapPin,\n  faScaleUnbalancedFlip: faScaleUnbalancedFlip,\n  faBalanceScaleRight: faBalanceScaleRight,\n  faArrowsToCircle: faArrowsToCircle,\n  faEnvelope: faEnvelope,\n  faBaby: faBaby,\n  faSquareCaretDown: faSquareCaretDown,\n  faCaretSquareDown: faCaretSquareDown,\n  faTent: faTent,\n  faA: faA,\n  faParachuteBox: faParachuteBox,\n  faCartArrowDown: faCartArrowDown,\n  faBridgeCircleExclamation: faBridgeCircleExclamation,\n  faCloudArrowUp: faCloudArrowUp,\n  faCloudUpload: faCloudUpload,\n  faCloudUploadAlt: faCloudUploadAlt,\n  faAt: faAt,\n  faIndianRupeeSign: faIndianRupeeSign,\n  faIndianRupee: faIndianRupee,\n  faInr: faInr,\n  faTruck: faTruck,\n  faChalkboardUser: faChalkboardUser,\n  faChalkboardTeacher: faChalkboardTeacher,\n  faUserCheck: faUserCheck,\n  faUserNinja: faUserNinja,\n  faPlantWilt: faPlantWilt,\n  faWeightScale: faWeightScale,\n  faWeight: faWeight,\n  faCaretRight: faCaretRight,\n  faFlorinSign: faFlorinSign,\n  faBell: faBell,\n  faLariSign: faLariSign,\n  faMillSign: faMillSign,\n  faPersonSnowboarding: faPersonSnowboarding,\n  faSnowboarding: faSnowboarding,\n  faTty: faTty,\n  faTeletype: faTeletype,\n  faUsersRectangle: faUsersRectangle,\n  faMobile: faMobile,\n  faMobileAndroid: faMobileAndroid,\n  faMobilePhone: faMobilePhone,\n  faArrowsTurnToDots: faArrowsTurnToDots,\n  faExclamation: faExclamation,\n  faChurch: faChurch,\n  faToggleOff: faToggleOff,\n  faShoePrints: faShoePrints,\n  faFileCircleExclamation: faFileCircleExclamation,\n  faWallet: faWallet,\n  faMessage: faMessage,\n  faCommentAlt: faCommentAlt,\n  faTrophy: faTrophy,\n  faFaceDizzy: faFaceDizzy,\n  faDizzy: faDizzy,\n  faBacteria: faBacteria,\n  faEarDeaf: faEarDeaf,\n  faDeaf: faDeaf,\n  faDeafness: faDeafness,\n  faHardOfHearing: faHardOfHearing,\n  faPeopleArrows: faPeopleArrows,\n  faPeopleArrowsLeftRight: faPeopleArrowsLeftRight,\n  faHandsClapping: faHandsClapping,\n  faVirusCovidSlash: faVirusCovidSlash,\n  faCalendarDays: faCalendarDays,\n  faCalendarAlt: faCalendarAlt,\n  faDiamondTurnRight: faDiamondTurnRight,\n  faDirections: faDirections,\n  faHandPointUp: faHandPointUp,\n  faBezierCurve: faBezierCurve,\n  faPersonHalfDress: faPersonHalfDress,\n  faSquarePollHorizontal: faSquarePollHorizontal,\n  faPollH: faPollH,\n  faSchoolCircleXmark: faSchoolCircleXmark,\n  faHandLizard: faHandLizard,\n  faChalkboard: faChalkboard,\n  faBlackboard: faBlackboard,\n  faUpRightFromSquare: faUpRightFromSquare,\n  faExternalLinkAlt: faExternalLinkAlt,\n  faSquareFull: faSquareFull,\n  faClover: faClover,\n  faTeethOpen: faTeethOpen,\n  faBarsStaggered: faBarsStaggered,\n  faReorder: faReorder,\n  faStream: faStream,\n  faWarehouse: faWarehouse,\n  faSwatchbook: faSwatchbook,\n  faCampground: faCampground,\n  faPersonWalkingArrowRight: faPersonWalkingArrowRight,\n  faGlasses: faGlasses,\n  faCirclePause: faCirclePause,\n  faPauseCircle: faPauseCircle,\n  faMemory: faMemory,\n  faGift: faGift,\n  faMoneyBillWheat: faMoneyBillWheat,\n  faDungeon: faDungeon,\n  faSuitcaseMedical: faSuitcaseMedical,\n  faMedkit: faMedkit,\n  faPersonCane: faPersonCane,\n  faGauge: faGauge,\n  faDashboard: faDashboard,\n  faGaugeMed: faGaugeMed,\n  faTachometerAltAverage: faTachometerAltAverage,\n  faEnvelopeOpenText: faEnvelopeOpenText,\n  faToolbox: faToolbox,\n  faPowerOff: faPowerOff,\n  faSignal: faSignal,\n  faSignal5: faSignal5,\n  faSignalPerfect: faSignalPerfect,\n  faArrowsSpin: faArrowsSpin,\n  faJoint: faJoint,\n  faBraille: faBraille,\n  faBasketShopping: faBasketShopping,\n  faShoppingBasket: faShoppingBasket,\n  faBridge: faBridge,\n  faPlaneArrival: faPlaneArrival,\n  faCashRegister: faCashRegister,\n  faRing: faRing,\n  faAquarius: faAquarius,\n  faShareNodes: faShareNodes,\n  faShareAlt: faShareAlt,\n  faPersonCircleExclamation: faPersonCircleExclamation,\n  faBinoculars: faBinoculars,\n  faKipSign: faKipSign,\n  faHardDrive: faHardDrive,\n  faHdd: faHdd,\n  faRankingStar: faRankingStar,\n  faUserTie: faUserTie,\n  faEllipsis: faEllipsis,\n  faEllipsisH: faEllipsisH,\n  faStoreSlash: faStoreSlash,\n  faPercent: faPercent,\n  faPercentage: faPercentage,\n  faFileZipper: faFileZipper,\n  faFileArchive: faFileArchive,\n  faDisplay: faDisplay,\n  faIcons: faIcons,\n  faHeartMusicCameraBolt: faHeartMusicCameraBolt,\n  faRulerVertical: faRulerVertical,\n  faMapLocationDot: faMapLocationDot,\n  faMapMarkedAlt: faMapMarkedAlt,\n  faHeartCrack: faHeartCrack,\n  faHeartBroken: faHeartBroken,\n  faCow: faCow,\n  faRss: faRss,\n  faFeed: faFeed,\n  faMagnifyingGlass: faMagnifyingGlass,\n  faSearch: faSearch,\n  faCloudMoon: faCloudMoon,\n  faBoxesStacked: faBoxesStacked,\n  faBoxes: faBoxes,\n  faBoxesAlt: faBoxesAlt,\n  faCodeBranch: faCodeBranch,\n  faBan: faBan,\n  faCancel: faCancel,\n  faJugDetergent: faJugDetergent,\n  faReply: faReply,\n  faMailReply: faMailReply,\n  faSunPlantWilt: faSunPlantWilt,\n  faBacterium: faBacterium,\n  faRecordVinyl: faRecordVinyl,\n  faFloppyDisk: faFloppyDisk,\n  faSave: faSave,\n  faToiletsPortable: faToiletsPortable,\n  faO: faO,\n  faPalette: faPalette,\n  faUnlock: faUnlock,\n  faEarListen: faEarListen,\n  faAssistiveListeningSystems: faAssistiveListeningSystems,\n  faCodePullRequest: faCodePullRequest,\n  faKey: faKey,\n  faSkull: faSkull,\n  faMarsStrokeUp: faMarsStrokeUp,\n  faMarsStrokeV: faMarsStrokeV,\n  faFireFlameSimple: faFireFlameSimple,\n  faBurn: faBurn,\n  faTree: faTree,\n  faSmog: faSmog,\n  faS: faS,\n  faJedi: faJedi,\n  faPersonHiking: faPersonHiking,\n  faHiking: faHiking,\n  faArrowsUpToLine: faArrowsUpToLine,\n  faMarsDouble: faMarsDouble,\n  faThermometer: faThermometer,\n  faPaintbrush: faPaintbrush,\n  faPaintBrush: faPaintBrush,\n  faNeuter: faNeuter,\n  faSquarePhoneFlip: faSquarePhoneFlip,\n  faPhoneSquareAlt: faPhoneSquareAlt,\n  faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n  faGrinTongueSquint: faGrinTongueSquint,\n  faCommentDollar: faCommentDollar,\n  faHippo: faHippo,\n  faBowlFood: faBowlFood,\n  faSquareVirus: faSquareVirus,\n  faCloudSunRain: faCloudSunRain,\n  faArrowRightLong: faArrowRightLong,\n  faLongArrowRight: faLongArrowRight,\n  faBuildingUn: faBuildingUn,\n  faTemperatureLow: faTemperatureLow,\n  faDoorOpen: faDoorOpen,\n  faAlignLeft: faAlignLeft,\n  faCamera: faCamera,\n  faCameraAlt: faCameraAlt,\n  faUsersRays: faUsersRays,\n  faRainbow: faRainbow,\n  faSitemap: faSitemap,\n  faFaceGrinStars: faFaceGrinStars,\n  faGrinStars: faGrinStars,\n  faSortUp: faSortUp,\n  faSortAsc: faSortAsc,\n  faEye: faEye,\n  faCaretLeft: faCaretLeft,\n  faAppleWhole: faAppleWhole,\n  faAppleAlt: faAppleAlt,\n  faScrollTorah: faScrollTorah,\n  faTorah: faTorah,\n  faHouseLock: faHouseLock,\n  faArrowsLeftRightToLine: faArrowsLeftRightToLine,\n  faTrash: faTrash,\n  faFaceSadTear: faFaceSadTear,\n  faSadTear: faSadTear,\n  faFax: faFax,\n  faPersonCirclePlus: faPersonCirclePlus,\n  faHamsa: faHamsa,\n  faPersonCircleQuestion: faPersonCircleQuestion,\n  faClipboardCheck: faClipboardCheck,\n  faShareFromSquare: faShareFromSquare,\n  faShareSquare: faShareSquare,\n  faReceipt: faReceipt,\n  faEquals: faEquals,\n  faChevronUp: faChevronUp,\n  faVirusSlash: faVirusSlash,\n  faSlash: faSlash,\n  faExpand: faExpand,\n  faNoteSticky: faNoteSticky,\n  faStickyNote: faStickyNote,\n  faTableColumns: faTableColumns,\n  faColumns: faColumns,\n  faPersonShelter: faPersonShelter,\n  faCircleNotch: faCircleNotch,\n  faWater: faWater,\n  faDeleteLeft: faDeleteLeft,\n  faBackspace: faBackspace,\n  faBroomBall: faBroomBall,\n  faQuidditch: faQuidditch,\n  faQuidditchBroomBall: faQuidditchBroomBall,\n  faJ: faJ,\n  faShuttleSpace: faShuttleSpace,\n  faSpaceShuttle: faSpaceShuttle,\n  faYinYang: faYinYang,\n  faStop: faStop,\n  faTrowel: faTrowel,\n  faHandBackFist: faHandBackFist,\n  faHandRock: faHandRock,\n  faTemperatureHigh: faTemperatureHigh,\n  faGreaterThan: faGreaterThan,\n  faCrutch: faCrutch,\n  faSeptagon: faSeptagon,\n  faHeptagon: faHeptagon,\n  faStreetView: faStreetView,\n  faWaveSquare: faWaveSquare,\n  faAngleLeft: faAngleLeft,\n  faScrewdriver: faScrewdriver,\n  faTractor: faTractor,\n  faBridgeCircleXmark: faBridgeCircleXmark,\n  faVials: faVials,\n  faStethoscope: faStethoscope,\n  faPodcast: faPodcast,\n  faArrowUpRightDots: faArrowUpRightDots,\n  faChessQueen: faChessQueen,\n  faAnchorCircleExclamation: faAnchorCircleExclamation,\n  faEllipsisVertical: faEllipsisVertical,\n  faEllipsisV: faEllipsisV,\n  faHeartCircleExclamation: faHeartCircleExclamation,\n  faBuildingCircleExclamation: faBuildingCircleExclamation,\n  faPersonArrowUpFromLine: faPersonArrowUpFromLine,\n  faNotEqual: faNotEqual,\n  faTrainTram: faTrainTram,\n  faPlaneDeparture: faPlaneDeparture,\n  faRightToBracket: faRightToBracket,\n  faSignInAlt: faSignInAlt,\n  faSdCard: faSdCard,\n  faHouseCircleExclamation: faHouseCircleExclamation,\n  faShekelSign: faShekelSign,\n  faIls: faIls,\n  faShekel: faShekel,\n  faSheqel: faSheqel,\n  faSheqelSign: faSheqelSign,\n  faRadio: faRadio,\n  faHandDots: faHandDots,\n  faAllergies: faAllergies,\n  faBookSkull: faBookSkull,\n  faBookDead: faBookDead,\n  faUnlockKeyhole: faUnlockKeyhole,\n  faUnlockAlt: faUnlockAlt,\n  faFileArrowUp: faFileArrowUp,\n  faFileUpload: faFileUpload,\n  faFaceGrinTears: faFaceGrinTears,\n  faGrinTears: faGrinTears,\n  faPenToSquare: faPenToSquare,\n  faEdit: faEdit,\n  faEarthEurope: faEarthEurope,\n  faGlobeEurope: faGlobeEurope,\n  faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n  faGrinBeamSweat: faGrinBeamSweat,\n  faCircleHalfStroke: faCircleHalfStroke,\n  faAdjust: faAdjust,\n  faPersonMilitaryToPerson: faPersonMilitaryToPerson,\n  faTableCellsColumnLock: faTableCellsColumnLock,\n  faTruckFieldUn: faTruckFieldUn,\n  faClock: faClock,\n  faClockFour: faClockFour,\n  faBook: faBook,\n  faFaceLaughWink: faFaceLaughWink,\n  faLaughWink: faLaughWink,\n  faCloudMeatball: faCloudMeatball,\n  faChartArea: faChartArea,\n  faAreaChart: faAreaChart,\n  faRupiahSign: faRupiahSign,\n  faTextWidth: faTextWidth,\n  faSatellite: faSatellite,\n  faMagnifyingGlassMinus: faMagnifyingGlassMinus,\n  faSearchMinus: faSearchMinus,\n  faPeopleGroup: faPeopleGroup,\n  faSquareBinary: faSquareBinary,\n  faMasksTheater: faMasksTheater,\n  faTheaterMasks: faTheaterMasks,\n  faCartPlus: faCartPlus,\n  faHandsAslInterpreting: faHandsAslInterpreting,\n  faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n  faAslInterpreting: faAslInterpreting,\n  faHandsAmericanSignLanguageInterpreting: faHandsAmericanSignLanguageInterpreting,\n  faTableCellsRowUnlock: faTableCellsRowUnlock,\n  faRocket: faRocket,\n  faShrimp: faShrimp,\n  faTengeSign: faTengeSign,\n  faTenge: faTenge,\n  faHouseChimneyMedical: faHouseChimneyMedical,\n  faClinicMedical: faClinicMedical,\n  faUsersSlash: faUsersSlash,\n  faPaperPlane: faPaperPlane,\n  faBookAtlas: faBookAtlas,\n  faAtlas: faAtlas,\n  faTable: faTable,\n  faHeart: faHeart,\n  faCircleChevronUp: faCircleChevronUp,\n  faChevronCircleUp: faChevronCircleUp,\n  faBatteryHalf: faBatteryHalf,\n  faBattery3: faBattery3,\n  faFontAwesome: faFontAwesome,\n  faFontAwesomeFlag: faFontAwesomeFlag,\n  faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n  faHandcuffs: faHandcuffs,\n  faHatCowboySide: faHatCowboySide,\n  faIndustry: faIndustry,\n  faLinesLeaning: faLinesLeaning,\n  faPassport: faPassport,\n  faInfinity: faInfinity,\n  faClone: faClone,\n  faForward: faForward,\n  faM: faM,\n  faRoadSpikes: faRoadSpikes,\n  faMountain: faMountain,\n  faChess: faChess,\n  faTemperatureThreeQuarters: faTemperatureThreeQuarters,\n  faTemperature3: faTemperature3,\n  faThermometer3: faThermometer3,\n  faThermometerThreeQuarters: faThermometerThreeQuarters,\n  faB: faB,\n  faShieldVirus: faShieldVirus,\n  faLitecoinSign: faLitecoinSign,\n  faDiceD6: faDiceD6,\n  faGripLinesVertical: faGripLinesVertical,\n  faGolfBallTee: faGolfBallTee,\n  faGolfBall: faGolfBall,\n  faHexagon: faHexagon,\n  faFolderOpen: faFolderOpen,\n  faKaaba: faKaaba,\n  faHandHolding: faHandHolding,\n  faSingleQuoteRight: faSingleQuoteRight,\n  faBottleDroplet: faBottleDroplet,\n  faWindowMinimize: faWindowMinimize,\n  faChevronRight: faChevronRight,\n  faEgg: faEgg,\n  faLandmarkDome: faLandmarkDome,\n  faLandmarkAlt: faLandmarkAlt,\n  faWorm: faWorm,\n  faUserInjured: faUserInjured,\n  faStrikethrough: faStrikethrough,\n  faBlog: faBlog,\n  faStopwatch20: faStopwatch20,\n  faTruckPickup: faTruckPickup,\n  faSeedling: faSeedling,\n  faSprout: faSprout,\n  faTransgender: faTransgender,\n  faTransgenderAlt: faTransgenderAlt,\n  faStarHalf: faStarHalf,\n  faPhotoFilm: faPhotoFilm,\n  faPhotoVideo: faPhotoVideo,\n  faPictureInPicture: faPictureInPicture,\n  faPumpMedical: faPumpMedical,\n  faFire: faFire,\n  faMagnifyingGlassPlus: faMagnifyingGlassPlus,\n  faSearchPlus: faSearchPlus,\n  faFlask: faFlask,\n  faAlignRight: faAlignRight,\n  faCableCar: faCableCar,\n  faTram: faTram,\n  faKitMedical: faKitMedical,\n  faFirstAid: faFirstAid,\n  faGripLines: faGripLines,\n  faBurger: faBurger,\n  faHamburger: faHamburger,\n  faSnowman: faSnowman,\n  faHotel: faHotel,\n  faPrint: faPrint,\n  faVolleyball: faVolleyball,\n  faVolleyballBall: faVolleyballBall,\n  faTrafficLight: faTrafficLight,\n  faPlaneCircleCheck: faPlaneCircleCheck,\n  faUsers: faUsers,\n  faCertificate: faCertificate,\n  faAlarmClock: faAlarmClock,\n  faHelicopterSymbol: faHelicopterSymbol,\n  faHouseChimneyCrack: faHouseChimneyCrack,\n  faHouseDamage: faHouseDamage,\n  faPersonMilitaryPointing: faPersonMilitaryPointing,\n  faDatabase: faDatabase,\n  faNewspaper: faNewspaper,\n  faCloudRain: faCloudRain,\n  faMaximize: faMaximize,\n  faExpandArrowsAlt: faExpandArrowsAlt,\n  faLocationArrow: faLocationArrow,\n  faCity: faCity,\n  faXRay: faXRay,\n  faUmbrellaBeach: faUmbrellaBeach,\n  faArrowRightToBracket: faArrowRightToBracket,\n  faSignIn: faSignIn,\n  faHeadset: faHeadset,\n  faSplotch: faSplotch,\n  faUpLong: faUpLong,\n  faLongArrowAltUp: faLongArrowAltUp,\n  faHexagonNodes: faHexagonNodes,\n  faHospital: faHospital,\n  faHospitalAlt: faHospitalAlt,\n  faHospitalWide: faHospitalWide,\n  faPersonHarassing: faPersonHarassing,\n  faMoneyBillTrendUp: faMoneyBillTrendUp,\n  faPenRuler: faPenRuler,\n  faPencilRuler: faPencilRuler,\n  faRepeat: faRepeat,\n  faBone: faBone,\n  faFireFlameCurved: faFireFlameCurved,\n  faFireAlt: faFireAlt,\n  faBusSimple: faBusSimple,\n  faBusAlt: faBusAlt,\n  faVenusMars: faVenusMars,\n  faBlender: faBlender,\n  faU: faU,\n  faShare: faShare,\n  faMailForward: faMailForward,\n  faPhoneFlip: faPhoneFlip,\n  faPhoneAlt: faPhoneAlt,\n  faToiletPortable: faToiletPortable,\n  faPersonPregnant: faPersonPregnant,\n  faLessThan: faLessThan,\n  faSuperscript: faSuperscript,\n  faCircleStop: faCircleStop,\n  faStopCircle: faStopCircle,\n  faArrowsUpDown: faArrowsUpDown,\n  faArrowsV: faArrowsV,\n  faPooStorm: faPooStorm,\n  faPooBolt: faPooBolt,\n  faVideoSlash: faVideoSlash,\n  faSquareXmark: faSquareXmark,\n  faTimesSquare: faTimesSquare,\n  faXmarkSquare: faXmarkSquare,\n  faHandHoldingDroplet: faHandHoldingDroplet,\n  faHandHoldingWater: faHandHoldingWater,\n  faWonSign: faWonSign,\n  faKrw: faKrw,\n  faWon: faWon,\n  faObjectUngroup: faObjectUngroup,\n  faComment: faComment,\n  faHillAvalanche: faHillAvalanche,\n  faArrowsToEye: faArrowsToEye,\n  faSnowplow: faSnowplow,\n  faChartGantt: faChartGantt,\n  faVideo: faVideo,\n  faVideoCamera: faVideoCamera,\n  faChessPawn: faChessPawn,\n  faSynagogue: faSynagogue,\n  faBuildingCircleCheck: faBuildingCircleCheck,\n  faCalendarPlus: faCalendarPlus,\n  faWheelchairMove: faWheelchairMove,\n  faWheelchairAlt: faWheelchairAlt,\n  faUserShield: faUserShield,\n  faBold: faBold,\n  faHeartPulse: faHeartPulse,\n  faHeartbeat: faHeartbeat,\n  faSquareRootVariable: faSquareRootVariable,\n  faSquareRootAlt: faSquareRootAlt,\n  faHandsBubbles: faHandsBubbles,\n  faHandsWash: faHandsWash,\n  faMarker: faMarker,\n  faClipboard: faClipboard,\n  faPlaceOfWorship: faPlaceOfWorship,\n  faCannabis: faCannabis,\n  faPeopleRoof: faPeopleRoof,\n  faDisease: faDisease,\n  faBookBible: faBookBible,\n  faBible: faBible,\n  faChessBoard: faChessBoard,\n  faMars: faMars,\n  faLaptop: faLaptop,\n  faUserXmark: faUserXmark,\n  faUserTimes: faUserTimes,\n  faFlagUsa: faFlagUsa,\n  faHandMiddleFinger: faHandMiddleFinger,\n  faMortarPestle: faMortarPestle,\n  faHeadSideCough: faHeadSideCough,\n  faPlaneLock: faPlaneLock,\n  faBatteryThreeQuarters: faBatteryThreeQuarters,\n  faBattery4: faBattery4,\n  faFrancSign: faFrancSign,\n  faFilterCircleDollar: faFilterCircleDollar,\n  faFunnelDollar: faFunnelDollar,\n  faCheese: faCheese,\n  faCircleH: faCircleH,\n  faHospitalSymbol: faHospitalSymbol,\n  faSchool: faSchool,\n  faDiceFive: faDiceFive,\n  faTornado: faTornado,\n  faJetFighter: faJetFighter,\n  faFighterJet: faFighterJet,\n  faThumbsDown: faThumbsDown,\n  faBroom: faBroom,\n  faFileImport: faFileImport,\n  faArrowRightToFile: faArrowRightToFile,\n  faUtensils: faUtensils,\n  faCutlery: faCutlery,\n  faIdBadge: faIdBadge,\n  faSpider: faSpider,\n  faMobileRetro: faMobileRetro,\n  faSignsPost: faSignsPost,\n  faMapSigns: faMapSigns,\n  faGroupArrowsRotate: faGroupArrowsRotate,\n  faArrowsSplitUpAndLeft: faArrowsSplitUpAndLeft,\n  faFillDrip: faFillDrip,\n  faShieldHeart: faShieldHeart,\n  faPersonSkiingNordic: faPersonSkiingNordic,\n  faSkiingNordic: faSkiingNordic,\n  faSquareCheck: faSquareCheck,\n  faCheckSquare: faCheckSquare,\n  faBath: faBath,\n  faBathtub: faBathtub,\n  faChessBishop: faChessBishop,\n  faPrescriptionBottleMedical: faPrescriptionBottleMedical,\n  faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n  faDrawPolygon: faDrawPolygon,\n  faVectorPolygon: faVectorPolygon,\n  faICursor: faICursor,\n  faHeartCirclePlus: faHeartCirclePlus,\n  faShieldDog: faShieldDog,\n  faGreaterThanEqual: faGreaterThanEqual,\n  faEnvelopeOpen: faEnvelopeOpen,\n  faMound: faMound,\n  faVoicemail: faVoicemail,\n  faVest: faVest,\n  faAudioDescription: faAudioDescription,\n  faW: faW,\n  faEyeDropper: faEyeDropper,\n  faEyeDropperEmpty: faEyeDropperEmpty,\n  faEyedropper: faEyedropper,\n  faCircleXmark: faCircleXmark,\n  faTimesCircle: faTimesCircle,\n  faXmarkCircle: faXmarkCircle,\n  faTrailer: faTrailer,\n  faTurkishLiraSign: faTurkishLiraSign,\n  faTry: faTry,\n  faTurkishLira: faTurkishLira,\n  faVolcano: faVolcano,\n  faWandSparkles: faWandSparkles,\n  faMicrophone: faMicrophone,\n  faCrown: faCrown,\n  faTentArrowTurnLeft: faTentArrowTurnLeft,\n  faTruckFast: faTruckFast,\n  faShippingFast: faShippingFast,\n  faUserPen: faUserPen,\n  faUserEdit: faUserEdit,\n  faUserClock: faUserClock,\n  faShower: faShower,\n  faSquareCaretUp: faSquareCaretUp,\n  faCaretSquareUp: faCaretSquareUp,\n  faMapLocation: faMapLocation,\n  faMapMarked: faMapMarked,\n  faPenFancy: faPenFancy,\n  faEuroSign: faEuroSign,\n  faEur: faEur,\n  faEuro: faEuro,\n  faHouseCircleXmark: faHouseCircleXmark,\n  faLiraSign: faLiraSign,\n  faYenSign: faYenSign,\n  faCny: faCny,\n  faJpy: faJpy,\n  faRmb: faRmb,\n  faYen: faYen,\n  faBoxOpen: faBoxOpen,\n  faTruckField: faTruckField,\n  faLocationPinLock: faLocationPinLock,\n  faPersonPraying: faPersonPraying,\n  faPray: faPray,\n  faClipboardList: faClipboardList,\n  faSackDollar: faSackDollar,\n  faMountainSun: faMountainSun,\n  faArrowUpWideShort: faArrowUpWideShort,\n  faSortAmountUp: faSortAmountUp,\n  faUsersLine: faUsersLine,\n  faStarOfDavid: faStarOfDavid,\n  faNotesMedical: faNotesMedical,\n  faAustralSign: faAustralSign,\n  faClipboardUser: faClipboardUser,\n  faFileImage: faFileImage,\n  faSquareCaretRight: faSquareCaretRight,\n  faCaretSquareRight: faCaretSquareRight,\n  faVial: faVial,\n  faHelicopter: faHelicopter,\n  faMitten: faMitten,\n  faGasPump: faGasPump,\n  faEnvelopeCircleCheck: faEnvelopeCircleCheck,\n  faPersonSkating: faPersonSkating,\n  faSkating: faSkating,\n  faSun: faSun,\n  faBaseball: faBaseball,\n  faBaseballBall: faBaseballBall,\n  faImage: faImage,\n  faNotdef: faNotdef,\n  faBasketball: faBasketball,\n  faBasketballBall: faBasketballBall,\n  faPencil: faPencil,\n  faPencilAlt: faPencilAlt,\n  faPersonWalkingArrowLoopLeft: faPersonWalkingArrowLoopLeft,\n  faDiceSix: faDiceSix,\n  faAnglesDown: faAnglesDown,\n  faAngleDoubleDown: faAngleDoubleDown,\n  faSyringe: faSyringe,\n  faWheatAwn: faWheatAwn,\n  faWheatAlt: faWheatAlt,\n  faPlaneUp: faPlaneUp,\n  faAlignCenter: faAlignCenter,\n  faHockeyPuck: faHockeyPuck,\n  faCircleArrowLeft: faCircleArrowLeft,\n  faArrowCircleLeft: faArrowCircleLeft,\n  faPlugCircleBolt: faPlugCircleBolt,\n  faRestroom: faRestroom,\n  faAnchorLock: faAnchorLock,\n  faTimeline: faTimeline,\n  faLightbulb: faLightbulb,\n  faCircleArrowRight: faCircleArrowRight,\n  faArrowCircleRight: faArrowCircleRight,\n  faMarsAndVenus: faMarsAndVenus,\n  faNetworkWired: faNetworkWired,\n  faBuildingShield: faBuildingShield,\n  faCode: faCode,\n  faFeatherPointed: faFeatherPointed,\n  faFeatherAlt: faFeatherAlt,\n  faFileCircleQuestion: faFileCircleQuestion,\n  faSignature: faSignature,\n  faEarthAmericas: faEarthAmericas,\n  faEarth: faEarth,\n  faEarthAmerica: faEarthAmerica,\n  faGlobeAmericas: faGlobeAmericas,\n  faCarrot: faCarrot,\n  faTemperatureFull: faTemperatureFull,\n  faTemperature4: faTemperature4,\n  faThermometer4: faThermometer4,\n  faThermometerFull: faThermometerFull,\n  faTableCellsRowLock: faTableCellsRowLock,\n  faBoltLightning: faBoltLightning,\n  faCloudShowersWater: faCloudShowersWater,\n  faArrowUpLong: faArrowUpLong,\n  faLongArrowUp: faLongArrowUp,\n  faAddressCard: faAddressCard,\n  faContactCard: faContactCard,\n  faVcard: faVcard,\n  faAngleRight: faAngleRight,\n  faFaceMeh: faFaceMeh,\n  faMeh: faMeh,\n  faArrowUpFromGroundWater: faArrowUpFromGroundWater,\n  faMap: faMap,\n  faUserPlus: faUserPlus,\n  faVenus: faVenus,\n  faDiagramSuccessor: faDiagramSuccessor,\n  faHeadSideCoughSlash: faHeadSideCoughSlash,\n  faDiagramProject: faDiagramProject,\n  faProjectDiagram: faProjectDiagram,\n  faTerminal: faTerminal,\n  faHouseFire: faHouseFire,\n  faMask: faMask,\n  faHurricane: faHurricane,\n  faEarthAfrica: faEarthAfrica,\n  faGlobeAfrica: faGlobeAfrica,\n  faThumbtack: faThumbtack,\n  faThumbTack: faThumbTack,\n  faHandPointDown: faHandPointDown,\n  faFaceMehBlank: faFaceMehBlank,\n  faMehBlank: faMehBlank,\n  faTemperatureEmpty: faTemperatureEmpty,\n  faTemperature0: faTemperature0,\n  faThermometer0: faThermometer0,\n  faThermometerEmpty: faThermometerEmpty,\n  faBorderNone: faBorderNone,\n  faHighlighter: faHighlighter,\n  faMoneyBillWave: faMoneyBillWave,\n  faToiletPaperSlash: faToiletPaperSlash,\n  faFileShield: faFileShield,\n  faTextHeight: faTextHeight,\n  faFaceGrinTongue: faFaceGrinTongue,\n  faGrinTongue: faGrinTongue,\n  faFileSignature: faFileSignature,\n  faBuildingWheat: faBuildingWheat,\n  faPlugCircleMinus: faPlugCircleMinus,\n  faFutbol: faFutbol,\n  faFutbolBall: faFutbolBall,\n  faSoccerBall: faSoccerBall,\n  faCirclePlus: faCirclePlus,\n  faPlusCircle: faPlusCircle,\n  faBrazilianRealSign: faBrazilianRealSign,\n  faStarAndCrescent: faStarAndCrescent,\n  faFaceSurprise: faFaceSurprise,\n  faSurprise: faSurprise,\n  faHospitalUser: faHospitalUser,\n  faArrowDownUpLock: faArrowDownUpLock,\n  faFolder: faFolder,\n  faFolderBlank: faFolderBlank,\n  faHollyBerry: faHollyBerry,\n  faVenusDouble: faVenusDouble,\n  faClipboardQuestion: faClipboardQuestion,\n  faHotdog: faHotdog,\n  faArrowUpFromBracket: faArrowUpFromBracket,\n  faMicroscope: faMicroscope,\n  faCloud: faCloud,\n  faBaseballBatBall: faBaseballBatBall,\n  faCarRear: faCarRear,\n  faCarAlt: faCarAlt,\n  faThumbtackSlash: faThumbtackSlash,\n  faThumbTackSlash: faThumbTackSlash,\n  faPlusMinus: faPlusMinus,\n  faHouseCircleCheck: faHouseCircleCheck,\n  faCalendarDay: faCalendarDay,\n  faLibra: faLibra,\n  faCircle: faCircle,\n  faMobileVibrate: faMobileVibrate,\n  faFaceGrinSquint: faFaceGrinSquint,\n  faGrinSquint: faGrinSquint,\n  faUsersBetweenLines: faUsersBetweenLines,\n  faHouseMedicalCircleXmark: faHouseMedicalCircleXmark,\n  faTableList: faTableList,\n  faThList: faThList,\n  faFlaskVial: faFlaskVial,\n  faCircleExclamation: faCircleExclamation,\n  faExclamationCircle: faExclamationCircle,\n  faTaxi: faTaxi,\n  faCab: faCab,\n  faTextSlash: faTextSlash,\n  faRemoveFormat: faRemoveFormat,\n  faPeoplePulling: faPeoplePulling,\n  faBackward: faBackward,\n  faCarBurst: faCarBurst,\n  faCarCrash: faCarCrash,\n  faLink: faLink,\n  faChain: faChain,\n  faBackwardStep: faBackwardStep,\n  faStepBackward: faStepBackward,\n  faX: faX,\n  faCircleUser: faCircleUser,\n  faUserCircle: faUserCircle,\n  faRectangleList: faRectangleList,\n  faListAlt: faListAlt,\n  faHand: faHand,\n  faHandPaper: faHandPaper,\n  faCancer: faCancer,\n  faVanShuttle: faVanShuttle,\n  faShuttleVan: faShuttleVan,\n  faStairs: faStairs,\n  faHorseHead: faHorseHead,\n  faVault: faVault,\n  faClosedCaptioningSlash: faClosedCaptioningSlash,\n  faDrumSteelpan: faDrumSteelpan,\n  faThumbsUp: faThumbsUp,\n  faStamp: faStamp,\n  faMenorah: faMenorah,\n  faChildren: faChildren,\n  faChartLine: faChartLine,\n  faLineChart: faLineChart,\n  faSquareEnvelope: faSquareEnvelope,\n  faEnvelopeSquare: faEnvelopeSquare,\n  faBanSmoking: faBanSmoking,\n  faSmokingBan: faSmokingBan,\n  faTruckFront: faTruckFront,\n  faBuilding: faBuilding,\n  faBullseye: faBullseye,\n  faArrowLeftLong: faArrowLeftLong,\n  faLongArrowLeft: faLongArrowLeft,\n  faChessRook: faChessRook,\n  faBlenderPhone: faBlenderPhone,\n  faArrowTurnUp: faArrowTurnUp,\n  faLevelUp: faLevelUp,\n  faBicycle: faBicycle,\n  faCircleArrowDown: faCircleArrowDown,\n  faArrowCircleDown: faArrowCircleDown,\n  faGear: faGear,\n  faCog: faCog,\n  faMarsAndVenusBurst: faMarsAndVenusBurst,\n  faOtter: faOtter,\n  faCircleChevronLeft: faCircleChevronLeft,\n  faChevronCircleLeft: faChevronCircleLeft,\n  faCircleQuestion: faCircleQuestion,\n  faQuestionCircle: faQuestionCircle,\n  faWalkieTalkie: faWalkieTalkie,\n  faUserGroup: faUserGroup,\n  faUserFriends: faUserFriends,\n  faHouseChimney: faHouseChimney,\n  faHomeLg: faHomeLg,\n  faRightFromBracket: faRightFromBracket,\n  faSignOutAlt: faSignOutAlt,\n  faFile: faFile,\n  faPlaneSlash: faPlaneSlash,\n  faCloudShowersHeavy: faCloudShowersHeavy,\n  faPersonFalling: faPersonFalling,\n  faTurnDown: faTurnDown,\n  faLevelDownAlt: faLevelDownAlt,\n  faUpRightAndDownLeftFromCenter: faUpRightAndDownLeftFromCenter,\n  faExpandAlt: faExpandAlt,\n  faUserTag: faUserTag,\n  faHandSparkles: faHandSparkles,\n  faArrowsToDot: faArrowsToDot,\n  faFaceSadCry: faFaceSadCry,\n  faSadCry: faSadCry,\n  faDongSign: faDongSign,\n  faPeopleLine: faPeopleLine,\n  faSquareRss: faSquareRss,\n  faRssSquare: faRssSquare,\n  faCalendarMinus: faCalendarMinus,\n  faChartDiagram: faChartDiagram,\n  faFaceTired: faFaceTired,\n  faTired: faTired,\n  faHandPointRight: faHandPointRight,\n  faArrowUp: faArrowUp,\n  faCubesStacked: faCubesStacked,\n  faChildCombatant: faChildCombatant,\n  faChildRifle: faChildRifle,\n  faVestPatches: faVestPatches,\n  faMartiniGlassEmpty: faMartiniGlassEmpty,\n  faGlassMartini: faGlassMartini,\n  faMagnet: faMagnet,\n  faRoadBarrier: faRoadBarrier,\n  faCompassDrafting: faCompassDrafting,\n  faDraftingCompass: faDraftingCompass,\n  faSquarePersonConfined: faSquarePersonConfined,\n  faPlateWheat: faPlateWheat,\n  faSignHanging: faSignHanging,\n  faSign: faSign,\n  faCarBattery: faCarBattery,\n  faBatteryCar: faBatteryCar,\n  faShirt: faShirt,\n  faTShirt: faTShirt,\n  faTshirt: faTshirt,\n  faParagraph: faParagraph,\n  faEnvelopesBulk: faEnvelopesBulk,\n  faMailBulk: faMailBulk,\n  faGuitar: faGuitar,\n  faSuitcase: faSuitcase,\n  faCircleUp: faCircleUp,\n  faArrowAltCircleUp: faArrowAltCircleUp,\n  faF: faF,\n  faXmarksLines: faXmarksLines,\n  faEarthOceania: faEarthOceania,\n  faGlobeOceania: faGlobeOceania,\n  faCommentSlash: faCommentSlash,\n  faPlay: faPlay,\n  faVialCircleCheck: faVialCircleCheck,\n  faBridgeCircleCheck: faBridgeCircleCheck,\n  faCediSign: faCediSign,\n  faPuzzlePiece: faPuzzlePiece,\n  faHelmetUn: faHelmetUn,\n  faGlassWater: faGlassWater,\n  faHeartCircleBolt: faHeartCircleBolt,\n  faPumpSoap: faPumpSoap,\n  faHandScissors: faHandScissors,\n  faDolly: faDolly,\n  faDollyBox: faDollyBox,\n  faPaperclip: faPaperclip,\n  faDemocrat: faDemocrat,\n  faSquareArrowUpRight: faSquareArrowUpRight,\n  faExternalLinkSquare: faExternalLinkSquare,\n  faFerry: faFerry,\n  faMosquito: faMosquito,\n  faBuildingCircleArrowRight: faBuildingCircleArrowRight,\n  faLeftRight: faLeftRight,\n  faArrowsAltH: faArrowsAltH,\n  faVirus: faVirus,\n  faGem: faGem,\n  faToilet: faToilet,\n  faSingleQuoteLeft: faSingleQuoteLeft,\n  faMoneyBills: faMoneyBills,\n  faTabletButton: faTabletButton,\n  faRectangleXmark: faRectangleXmark,\n  faRectangleTimes: faRectangleTimes,\n  faTimesRectangle: faTimesRectangle,\n  faWindowClose: faWindowClose,\n  faWrench: faWrench,\n  faTrashCan: faTrashCan,\n  faTrashAlt: faTrashAlt,\n  faTableCells: faTableCells,\n  faTh: faTh,\n  faRibbon: faRibbon,\n  faLandmarkFlag: faLandmarkFlag,\n  faUpDownLeftRight: faUpDownLeftRight,\n  faArrowsAlt: faArrowsAlt,\n  faCarSide: faCarSide,\n  faTrashArrowUp: faTrashArrowUp,\n  faTrashRestore: faTrashRestore,\n  faLifeRing: faLifeRing,\n  faCopyright: faCopyright,\n  faFilePrescription: faFilePrescription,\n  faEraser: faEraser,\n  faHourglassStart: faHourglassStart,\n  faHourglass1: faHourglass1,\n  faCircleLeft: faCircleLeft,\n  faArrowAltCircleLeft: faArrowAltCircleLeft,\n  faCruzeiroSign: faCruzeiroSign,\n  faSmoking: faSmoking,\n  faSquarePollVertical: faSquarePollVertical,\n  faPoll: faPoll,\n  faPersonCircleMinus: faPersonCircleMinus,\n  faBiohazard: faBiohazard,\n  faBellConcierge: faBellConcierge,\n  faConciergeBell: faConciergeBell,\n  faRulerHorizontal: faRulerHorizontal,\n  faHorse: faHorse,\n  faCalendar: faCalendar,\n  faHandsHoldingChild: faHandsHoldingChild,\n  faItalic: faItalic,\n  faKhanda: faKhanda,\n  faFaceFrownOpen: faFaceFrownOpen,\n  faFrownOpen: faFrownOpen,\n  faCheck: faCheck,\n  faFingerprint: faFingerprint,\n  faChargingStation: faChargingStation,\n  faUserLock: faUserLock,\n  faMobileScreenButton: faMobileScreenButton,\n  faMobileAlt: faMobileAlt,\n  faAnchorCircleCheck: faAnchorCircleCheck,\n  faPersonWalkingWithCane: faPersonWalkingWithCane,\n  faBlind: faBlind,\n  faFileWaveform: faFileWaveform,\n  faFileMedicalAlt: faFileMedicalAlt,\n  faHouseCrack: faHouseCrack,\n  faHatWizard: faHatWizard,\n  faUserDoctor: faUserDoctor,\n  faUserMd: faUserMd,\n  faChartBar: faChartBar,\n  faBarChart: faBarChart,\n  faSprayCanSparkles: faSprayCanSparkles,\n  faAirFreshener: faAirFreshener,\n  faBahtSign: faBahtSign,\n  faTemperatureArrowUp: faTemperatureArrowUp,\n  faTemperatureUp: faTemperatureUp,\n  faWebAwesome: faWebAwesome,\n  faNonBinary: faNonBinary,\n  faN: faN,\n  faArrowsUpDownLeftRight: faArrowsUpDownLeftRight,\n  faArrows: faArrows,\n  faHouse: faHouse,\n  faHome: faHome,\n  faHomeAlt: faHomeAlt,\n  faHomeLgAlt: faHomeLgAlt,\n  faSpinner: faSpinner,\n  faGavel: faGavel,\n  faLegal: faLegal,\n  faTicketSimple: faTicketSimple,\n  faTicketAlt: faTicketAlt,\n  faDove: faDove,\n  faTarpDroplet: faTarpDroplet,\n  faTreeCity: faTreeCity,\n  faTurnUp: faTurnUp,\n  faLevelUpAlt: faLevelUpAlt,\n  faTemperatureQuarter: faTemperatureQuarter,\n  faTemperature1: faTemperature1,\n  faThermometer1: faThermometer1,\n  faThermometerQuarter: faThermometerQuarter,\n  faSliders: faSliders,\n  faSlidersH: faSlidersH,\n  faMosque: faMosque,\n  faH: faH,\n  faInfo: faInfo,\n  faPersonWalking: faPersonWalking,\n  faWalking: faWalking,\n  faArrowTurnDown: faArrowTurnDown,\n  faLevelDown: faLevelDown,\n  faRoad: faRoad,\n  faSpiral: faSpiral,\n  faFaceFrown: faFaceFrown,\n  faFrown: faFrown,\n  faWineGlassEmpty: faWineGlassEmpty,\n  faWineGlassAlt: faWineGlassAlt,\n  faClapperboard: faClapperboard,\n  faForwardStep: faForwardStep,\n  faStepForward: faStepForward,\n  faSquareUpRight: faSquareUpRight,\n  faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n  faBookJournalWhills: faBookJournalWhills,\n  faJournalWhills: faJournalWhills,\n  faChampagneGlasses: faChampagneGlasses,\n  faGlassCheers: faGlassCheers,\n  faDumpster: faDumpster,\n  faHeartCircleXmark: faHeartCircleXmark,\n  faComputer: faComputer,\n  faWandMagic: faWandMagic,\n  faMagic: faMagic,\n  faBrain: faBrain,\n  faBriefcaseMedical: faBriefcaseMedical,\n  faHouseMedicalCircleExclamation: faHouseMedicalCircleExclamation,\n  faCodeCommit: faCodeCommit,\n  faPersonBreastfeeding: faPersonBreastfeeding,\n  faPersonRays: faPersonRays,\n  faManatSign: faManatSign,\n  faSort: faSort,\n  faUnsorted: faUnsorted,\n  faCircleRadiation: faCircleRadiation,\n  faRadiationAlt: faRadiationAlt,\n  faLaptopCode: faLaptopCode,\n  faSink: faSink,\n  faArrowUpFromWaterPump: faArrowUpFromWaterPump,\n  faMicrophoneLinesSlash: faMicrophoneLinesSlash,\n  faMicrophoneAltSlash: faMicrophoneAltSlash,\n  faServer: faServer,\n  faUser: faUser,\n  faUserAlt: faUserAlt,\n  faUserLarge: faUserLarge,\n  faSnowflake: faSnowflake,\n  faTaurus: faTaurus,\n  faSkullCrossbones: faSkullCrossbones,\n  faPesoSign: faPesoSign,\n  faWineGlass: faWineGlass,\n  faTemperatureHalf: faTemperatureHalf,\n  faTemperature2: faTemperature2,\n  faThermometer2: faThermometer2,\n  faThermometerHalf: faThermometerHalf,\n  faTicket: faTicket,\n  faWheatAwnCircleExclamation: faWheatAwnCircleExclamation,\n  faArrowsTurnRight: faArrowsTurnRight,\n  faCandyCane: faCandyCane,\n  faWheelchair: faWheelchair,\n  faSpellCheck: faSpellCheck,\n  faVolumeOff: faVolumeOff,\n  faLungs: faLungs,\n  faBookmark: faBookmark,\n  faBarcode: faBarcode,\n  faListOl: faListOl,\n  faList12: faList12,\n  faListNumeric: faListNumeric,\n  faFileCircleXmark: faFileCircleXmark,\n  faCube: faCube,\n  faTape: faTape,\n  faBomb: faBomb,\n  faScaleUnbalanced: faScaleUnbalanced,\n  faBalanceScaleLeft: faBalanceScaleLeft,\n  faSquareCaretLeft: faSquareCaretLeft,\n  faCaretSquareLeft: faCaretSquareLeft,\n  faRuler: faRuler,\n  faI: faI,\n  faVolumeXmark: faVolumeXmark,\n  faVolumeMute: faVolumeMute,\n  faVolumeTimes: faVolumeTimes,\n  faArchway: faArchway,\n  faPersonDigging: faPersonDigging,\n  faDigging: faDigging,\n  faGaugeHigh: faGaugeHigh,\n  faTachometerAlt: faTachometerAlt,\n  faTachometerAltFast: faTachometerAltFast,\n  faGenderless: faGenderless,\n  faCloudSun: faCloudSun,\n  faArrowRight: faArrowRight,\n  faHandshake: faHandshake,\n  faHandshakeAlt: faHandshakeAlt,\n  faHandshakeSimple: faHandshakeSimple,\n  faPersonSkiing: faPersonSkiing,\n  faSkiing: faSkiing,\n  faBridgeWater: faBridgeWater,\n  faBuildingNgo: faBuildingNgo,\n  faIgloo: faIgloo,\n  faCircleDollarToSlot: faCircleDollarToSlot,\n  faDonate: faDonate,\n  faY: faY,\n  faFaceSmileWink: faFaceSmileWink,\n  faSmileWink: faSmileWink,\n  faDiceFour: faDiceFour,\n  faFaceGrinSquintTears: faFaceGrinSquintTears,\n  faGrinSquintTears: faGrinSquintTears,\n  faFileAudio: faFileAudio,\n  faArrowsDownToLine: faArrowsDownToLine,\n  faG: faG,\n  faVihara: faVihara,\n  faFlagCheckered: faFlagCheckered,\n  faGaugeSimple: faGaugeSimple,\n  faGaugeSimpleMed: faGaugeSimpleMed,\n  faTachometerAverage: faTachometerAverage,\n  faRightLeft: faRightLeft,\n  faExchangeAlt: faExchangeAlt,\n  faPills: faPills,\n  faExplosion: faExplosion,\n  faArrowsDownToPeople: faArrowsDownToPeople,\n  faUsersViewfinder: faUsersViewfinder,\n  faCarOn: faCarOn,\n  faSleigh: faSleigh,\n  faDumbbell: faDumbbell,\n  faBabyCarriage: faBabyCarriage,\n  faCarriageBaby: faCarriageBaby,\n  faKiwiBird: faKiwiBird,\n  faCalendarXmark: faCalendarXmark,\n  faCalendarTimes: faCalendarTimes,\n  faCircleDown: faCircleDown,\n  faArrowAltCircleDown: faArrowAltCircleDown,\n  faFileMedical: faFileMedical,\n  faXmark: faXmark,\n  faClose: faClose,\n  faMultiply: faMultiply,\n  faRemove: faRemove,\n  faTimes: faTimes,\n  faShapes: faShapes,\n  faTriangleCircleSquare: faTriangleCircleSquare,\n  faDiceOne: faDiceOne,\n  faLockOpen: faLockOpen,\n  faPepperHot: faPepperHot,\n  faDropletSlash: faDropletSlash,\n  faTintSlash: faTintSlash,\n  faDroplet: faDroplet,\n  faTint: faTint,\n  faFileLines: faFileLines,\n  faFileAlt: faFileAlt,\n  faFileText: faFileText,\n  faCommentsDollar: faCommentsDollar,\n  faMagnifyingGlassLocation: faMagnifyingGlassLocation,\n  faSearchLocation: faSearchLocation,\n  faFileInvoice: faFileInvoice,\n  faPentagon: faPentagon,\n  faRepublican: faRepublican,\n  faShop: faShop,\n  faStoreAlt: faStoreAlt,\n  faFilm: faFilm,\n  faFilmAlt: faFilmAlt,\n  faFilmSimple: faFilmSimple,\n  faBuildingCircleXmark: faBuildingCircleXmark,\n  faComments: faComments,\n  faTags: faTags,\n  faGun: faGun,\n  faCircleCheck: faCircleCheck,\n  faCheckCircle: faCheckCircle,\n  faScorpio: faScorpio,\n  faIdCardClip: faIdCardClip,\n  faIdCardAlt: faIdCardAlt,\n  faMoon: faMoon,\n  faOilWell: faOilWell,\n  faTachographDigital: faTachographDigital,\n  faDigitalTachograph: faDigitalTachograph,\n  faTablet: faTablet,\n  faTabletAndroid: faTabletAndroid,\n  faRubleSign: faRubleSign,\n  faRouble: faRouble,\n  faRub: faRub,\n  faRuble: faRuble,\n  faClosedCaptioning: faClosedCaptioning,\n  faPen: faPen,\n  faPlane: faPlane,\n  faImages: faImages,\n  faMobileScreen: faMobileScreen,\n  faMobileAndroidAlt: faMobileAndroidAlt,\n  faGuaraniSign: faGuaraniSign,\n  faBagShopping: faBagShopping,\n  faShoppingBag: faShoppingBag,\n  faCircleRight: faCircleRight,\n  faArrowAltCircleRight: faArrowAltCircleRight,\n  faPhoneVolume: faPhoneVolume,\n  faVolumeControlPhone: faVolumeControlPhone,\n  faCubes: faCubes,\n  faPhone: faPhone,\n  faToriiGate: faToriiGate,\n  faBacon: faBacon,\n  faPersonFallingBurst: faPersonFallingBurst,\n  faQuoteRight: faQuoteRight,\n  faQuoteRightAlt: faQuoteRightAlt,\n  faHouseMedicalFlag: faHouseMedicalFlag,\n  faPrescription: faPrescription,\n  faDiceThree: faDiceThree,\n  faBuildingLock: faBuildingLock,\n  faIdCard: faIdCard,\n  faDriversLicense: faDriversLicense,\n  faCirclePlay: faCirclePlay,\n  faPlayCircle: faPlayCircle,\n  faFaceLaughBeam: faFaceLaughBeam,\n  faLaughBeam: faLaughBeam,\n  faLeaf: faLeaf,\n  faHouseChimneyUser: faHouseChimneyUser,\n  faRotateRight: faRotateRight,\n  faRedoAlt: faRedoAlt,\n  faRotateForward: faRotateForward,\n  faTooth: faTooth,\n  faHouseChimneyWindow: faHouseChimneyWindow,\n  faMotorcycle: faMotorcycle,\n  faBackwardFast: faBackwardFast,\n  faFastBackward: faFastBackward,\n  faAddressBook: faAddressBook,\n  faContactBook: faContactBook,\n  faSailboat: faSailboat,\n  faBookBookmark: faBookBookmark,\n  faMagnifyingGlassArrowRight: faMagnifyingGlassArrowRight,\n  faMicrophoneLines: faMicrophoneLines,\n  faMicrophoneAlt: faMicrophoneAlt,\n  faReplyAll: faReplyAll,\n  faMailReplyAll: faMailReplyAll,\n  faUniversalAccess: faUniversalAccess,\n  faToiletPaper: faToiletPaper,\n  faToiletPaperAlt: faToiletPaperAlt,\n  faToiletPaperBlank: faToiletPaperBlank,\n  faVrCardboard: faVrCardboard,\n  faPizzaSlice: faPizzaSlice,\n  faSprayCan: faSprayCan,\n  faVolumeLow: faVolumeLow,\n  faVolumeDown: faVolumeDown,\n  faCross: faCross,\n  faPerson: faPerson,\n  faMale: faMale,\n  faHourglass: faHourglass,\n  faHourglassEmpty: faHourglassEmpty,\n  faFish: faFish,\n  faDrumstickBite: faDrumstickBite,\n  faChartSimple: faChartSimple,\n  faAtom: faAtom,\n  faP: faP,\n  faJetFighterUp: faJetFighterUp,\n  faPlugCircleXmark: faPlugCircleXmark,\n  faSheetPlastic: faSheetPlastic,\n  faV: faV,\n  faList: faList,\n  faListSquares: faListSquares,\n  faPisces: faPisces,\n  faSolarPanel: faSolarPanel,\n  faLandMineOn: faLandMineOn,\n  faHeadphones: faHeadphones,\n  faHeadphonesAlt: faHeadphonesAlt,\n  faHeadphonesSimple: faHeadphonesSimple,\n  faBus: faBus,\n  faFilePowerpoint: faFilePowerpoint,\n  faQuoteLeft: faQuoteLeft,\n  faQuoteLeftAlt: faQuoteLeftAlt,\n  faChevronDown: faChevronDown,\n  faEarthAsia: faEarthAsia,\n  faGlobeAsia: faGlobeAsia,\n  faCentSign: faCentSign,\n  faShieldCat: faShieldCat,\n  faSchoolCircleCheck: faSchoolCircleCheck,\n  faMartiniGlass: faMartiniGlass,\n  faGlassMartiniAlt: faGlassMartiniAlt,\n  faPlug: faPlug,\n  faPanorama: faPanorama,\n  faClockRotateLeft: faClockRotateLeft,\n  faHistory: faHistory,\n  faJarWheat: faJarWheat,\n  faCloudArrowDown: faCloudArrowDown,\n  faCloudDownload: faCloudDownload,\n  faCloudDownloadAlt: faCloudDownloadAlt,\n  faTruckRampBox: faTruckRampBox,\n  faTruckLoading: faTruckLoading,\n  faAngleDown: faAngleDown,\n  faPlugCircleCheck: faPlugCircleCheck,\n  faWindowMaximize: faWindowMaximize,\n  faHandsHoldingCircle: faHandsHoldingCircle,\n  faLocationPin: faLocationPin,\n  faMapMarker: faMapMarker,\n  faBowlingBall: faBowlingBall,\n  faCartFlatbed: faCartFlatbed,\n  faDollyFlatbed: faDollyFlatbed,\n  faHouseUser: faHouseUser,\n  faHomeUser: faHomeUser,\n  faGhost: faGhost,\n  faCommentNodes: faCommentNodes,\n  faPersonArrowDownToLine: faPersonArrowDownToLine,\n  faPlugCirclePlus: faPlugCirclePlus,\n  faPersonSwimming: faPersonSwimming,\n  faSwimmer: faSwimmer,\n  faCommentDots: faCommentDots,\n  faCommenting: faCommenting,\n  faChartPie: faChartPie,\n  faPieChart: faPieChart,\n  faFrog: faFrog,\n  faWineBottle: faWineBottle,\n  faInbox: faInbox,\n  faSquareH: faSquareH,\n  faHSquare: faHSquare,\n  faHouseMedical: faHouseMedical,\n  faCircleChevronRight: faCircleChevronRight,\n  faChevronCircleRight: faChevronCircleRight,\n  faFileCsv: faFileCsv,\n  faHatCowboy: faHatCowboy,\n  faFaceGrinTongueWink: faFaceGrinTongueWink,\n  faGrinTongueWink: faGrinTongueWink,\n  faL: faL,\n  faArrowDownShortWide: faArrowDownShortWide,\n  faSortAmountDesc: faSortAmountDesc,\n  faSortAmountDownAlt: faSortAmountDownAlt,\n  faHourglassHalf: faHourglassHalf,\n  faHourglass2: faHourglass2,\n  faSpoon: faSpoon,\n  faUtensilSpoon: faUtensilSpoon,\n  faCreditCard: faCreditCard,\n  faCreditCardAlt: faCreditCardAlt,\n  faFileInvoiceDollar: faFileInvoiceDollar,\n  faSpaghettiMonsterFlying: faSpaghettiMonsterFlying,\n  faPastafarianism: faPastafarianism,\n  faMartiniGlassCitrus: faMartiniGlassCitrus,\n  faCocktail: faCocktail,\n  faBullhorn: faBullhorn,\n  faBoxTissue: faBoxTissue,\n  faMattressPillow: faMattressPillow,\n  faChevronLeft: faChevronLeft,\n  faCloudMoonRain: faCloudMoonRain,\n  faArrowDown19: faArrowDown19,\n  faSortNumericAsc: faSortNumericAsc,\n  faSortNumericDown: faSortNumericDown,\n  faHandSpock: faHandSpock,\n  faWandMagicSparkles: faWandMagicSparkles,\n  faMagicWandSparkles: faMagicWandSparkles,\n  faCommentMedical: faCommentMedical,\n  faBellSlash: faBellSlash,\n  faHandshakeSlash: faHandshakeSlash,\n  faHandshakeAltSlash: faHandshakeAltSlash,\n  faHandshakeSimpleSlash: faHandshakeSimpleSlash,\n  faBottleWater: faBottleWater,\n  faDiceD20: faDiceD20,\n  faArrowDownZA: faArrowDownZA,\n  faSortAlphaDesc: faSortAlphaDesc,\n  faSortAlphaDownAlt: faSortAlphaDownAlt,\n  faBrush: faBrush,\n  faPersonWalkingDashedLineArrowRight: faPersonWalkingDashedLineArrowRight,\n  faArrowUpShortWide: faArrowUpShortWide,\n  faSortAmountUpAlt: faSortAmountUpAlt,\n  faGripVertical: faGripVertical,\n  faGridVertical: faGridVertical,\n  faCarTunnel: faCarTunnel,\n  faChartColumn: faChartColumn,\n  faCapricorn: faCapricorn,\n  faTruckArrowRight: faTruckArrowRight,\n  faTv: faTv,\n  faTelevision: faTelevision,\n  faTvAlt: faTvAlt,\n  faSection: faSection,\n  faPeace: faPeace,\n  faStar: faStar,\n  faFlag: faFlag,\n  faTriangleExclamation: faTriangleExclamation,\n  faExclamationTriangle: faExclamationTriangle,\n  faWarning: faWarning,\n  faSchoolCircleExclamation: faSchoolCircleExclamation,\n  faGraduationCap: faGraduationCap,\n  faMortarBoard: faMortarBoard,\n  faStore: faStore,\n  faUserAstronaut: faUserAstronaut,\n  faBuildingFlag: faBuildingFlag,\n  faMugSaucer: faMugSaucer,\n  faCoffee: faCoffee,\n  faLemon: faLemon,\n  faCaravan: faCaravan,\n  faQ: faQ,\n  faLock: faLock,\n  faPaintRoller: faPaintRoller,\n  faVolumeHigh: faVolumeHigh,\n  faVolumeUp: faVolumeUp,\n  faFolderPlus: faFolderPlus,\n  faMercury: faMercury,\n  faAnchor: faAnchor,\n  faSquareParking: faSquareParking,\n  faParking: faParking,\n  faHanukiah: faHanukiah,\n  faRotateLeft: faRotateLeft,\n  faRotateBack: faRotateBack,\n  faRotateBackward: faRotateBackward,\n  faUndoAlt: faUndoAlt,\n  faHeading: faHeading,\n  faHeader: faHeader,\n  faCrosshairs: faCrosshairs,\n  faCircleNodes: faCircleNodes,\n  faWindowRestore: faWindowRestore,\n  faR: faR,\n  faFilterCircleXmark: faFilterCircleXmark,\n  faGopuram: faGopuram,\n  faHeartCircleMinus: faHeartCircleMinus,\n  faStarOfLife: faStarOfLife,\n  faBusinessTime: faBusinessTime,\n  faBriefcaseClock: faBriefcaseClock,\n  faFireExtinguisher: faFireExtinguisher,\n  faArrowDownLong: faArrowDownLong,\n  faLongArrowDown: faLongArrowDown,\n  faUserMinus: faUserMinus,\n  faMoneyCheck: faMoneyCheck,\n  faHouseLaptop: faHouseLaptop,\n  faLaptopHouse: faLaptopHouse,\n  faDownload: faDownload,\n  faSagittarius: faSagittarius,\n  faCouch: faCouch,\n  faRoadLock: faRoadLock,\n  faScissors: faScissors,\n  faCut: faCut,\n  faBug: faBug,\n  faArrowRightFromBracket: faArrowRightFromBracket,\n  faSignOut: faSignOut,\n  faHandHoldingHand: faHandHoldingHand,\n  faStroopwafel: faStroopwafel,\n  faChild: faChild,\n  faIceCream: faIceCream,\n  faComputerMouse: faComputerMouse,\n  faMouse: faMouse,\n  faFaucet: faFaucet,\n  faAward: faAward,\n  faPersonDrowning: faPersonDrowning,\n  faCameraRotate: faCameraRotate,\n  faFaceGrinHearts: faFaceGrinHearts,\n  faGrinHearts: faGrinHearts,\n  faFileFragment: faFileFragment,\n  faPersonMilitaryRifle: faPersonMilitaryRifle,\n  faToggleOn: faToggleOn,\n  faLungsVirus: faLungsVirus,\n  faTableTennisPaddleBall: faTableTennisPaddleBall,\n  faPingPongPaddleBall: faPingPongPaddleBall,\n  faTableTennis: faTableTennis,\n  faBoxesPacking: faBoxesPacking,\n  faPersonChalkboard: faPersonChalkboard,\n  faDiceTwo: faDiceTwo,\n  faArrowRightArrowLeft: faArrowRightArrowLeft,\n  faExchange: faExchange,\n  faFootball: faFootball,\n  faFootballBall: faFootballBall,\n  faTruckMonster: faTruckMonster,\n  faAsterisk: faAsterisk,\n  faBatteryFull: faBatteryFull,\n  faBattery: faBattery,\n  faBattery5: faBattery5,\n  faChildDress: faChildDress,\n  faFaceKissBeam: faFaceKissBeam,\n  faKissBeam: faKissBeam,\n  faTrashCanArrowUp: faTrashCanArrowUp,\n  faTrashRestoreAlt: faTrashRestoreAlt,\n  faFont: faFont,\n  faBoreHole: faBoreHole,\n  faVirusCovid: faVirusCovid,\n  faFilePdf: faFilePdf,\n  faLanguage: faLanguage,\n  faShieldHalved: faShieldHalved,\n  faShieldAlt: faShieldAlt,\n  faCaretUp: faCaretUp,\n  faFilePen: faFilePen,\n  faFileEdit: faFileEdit,\n  faPersonBiking: faPersonBiking,\n  faBiking: faBiking,\n  faBookOpenReader: faBookOpenReader,\n  faBookReader: faBookReader,\n  faGlassWaterDroplet: faGlassWaterDroplet,\n  faTowerBroadcast: faTowerBroadcast,\n  faBroadcastTower: faBroadcastTower,\n  faMinimize: faMinimize,\n  faCompressArrowsAlt: faCompressArrowsAlt,\n  faArrowRightToCity: faArrowRightToCity,\n  faLaptopMedical: faLaptopMedical,\n  faBreadSlice: faBreadSlice,\n  faGlobe: faGlobe,\n  faFolderMinus: faFolderMinus,\n  faMaskFace: faMaskFace,\n  faBong: faBong,\n  faRoadBridge: faRoadBridge,\n  faArrowUp91: faArrowUp91,\n  faSortNumericUpAlt: faSortNumericUpAlt,\n  faMountainCity: faMountainCity,\n  faArrowDown91: faArrowDown91,\n  faSortNumericDesc: faSortNumericDesc,\n  faSortNumericDownAlt: faSortNumericDownAlt,\n  faFaceGrinWide: faFaceGrinWide,\n  faGrinAlt: faGrinAlt,\n  faPoop: faPoop,\n  faDharmachakra: faDharmachakra,\n  faBatteryQuarter: faBatteryQuarter,\n  faBattery2: faBattery2,\n  faAnkh: faAnkh,\n  faDiamond: faDiamond,\n  faSubscript: faSubscript,\n  faRupeeSign: faRupeeSign,\n  faRupee: faRupee,\n  faPersonRifle: faPersonRifle,\n  faD: faD,\n  faSquareNfi: faSquareNfi,\n  faTeeth: faTeeth,\n  faMagnifyingGlassDollar: faMagnifyingGlassDollar,\n  faSearchDollar: faSearchDollar,\n  faDumpsterFire: faDumpsterFire,\n  faUpload: faUpload,\n  faUserSlash: faUserSlash,\n  faUserAltSlash: faUserAltSlash,\n  faUserLargeSlash: faUserLargeSlash,\n  faArrowLeft: faArrowLeft,\n  faVialVirus: faVialVirus,\n  faCheckDouble: faCheckDouble,\n  faPaw: faPaw,\n  faHelmetSafety: faHelmetSafety,\n  faHardHat: faHardHat,\n  faHatHard: faHatHard,\n  faE: faE,\n  faFaceLaughSquint: faFaceLaughSquint,\n  faLaughSquint: faLaughSquint,\n  faDownLeftAndUpRightToCenter: faDownLeftAndUpRightToCenter,\n  faCompressAlt: faCompressAlt,\n  faGifts: faGifts,\n  faBed: faBed,\n  faMoneyBillTransfer: faMoneyBillTransfer,\n  faPersonRunning: faPersonRunning,\n  faRunning: faRunning,\n  faCircleChevronDown: faCircleChevronDown,\n  faChevronCircleDown: faChevronCircleDown,\n  faUserNurse: faUserNurse,\n  faFaceKissWinkHeart: faFaceKissWinkHeart,\n  faKissWinkHeart: faKissWinkHeart,\n  faFill: faFill,\n  faMoneyBill1Wave: faMoneyBill1Wave,\n  faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n  faLandmark: faLandmark,\n  faMusic: faMusic,\n  faBookMedical: faBookMedical,\n  faShuffle: faShuffle,\n  faRandom: faRandom,\n  faUnderline: faUnderline,\n  faBuildingUser: faBuildingUser,\n  faRobot: faRobot,\n  faPlus: faPlus,\n  faAdd: faAdd,\n  faCopy: faCopy,\n  faChessKing: faChessKing,\n  faHouseFloodWater: faHouseFloodWater,\n  faBitcoinSign: faBitcoinSign,\n  faBox: faBox,\n  faSquarePlus: faSquarePlus,\n  faPlusSquare: faPlusSquare,\n  faArrowsLeftRight: faArrowsLeftRight,\n  faArrowsH: faArrowsH,\n  faFan: faFan,\n  faCrow: faCrow,\n  faFileCircleCheck: faFileCircleCheck,\n  faLinkSlash: faLinkSlash,\n  faChainBroken: faChainBroken,\n  faChainSlash: faChainSlash,\n  faUnlink: faUnlink,\n  faArrowRotateRight: faArrowRotateRight,\n  faArrowRightRotate: faArrowRightRotate,\n  faArrowRotateForward: faArrowRotateForward,\n  faRedo: faRedo,\n  faPenClip: faPenClip,\n  faPenAlt: faPenAlt,\n  faDoorClosed: faDoorClosed,\n  faArrowDownWideShort: faArrowDownWideShort,\n  faSortAmountAsc: faSortAmountAsc,\n  faSortAmountDown: faSortAmountDown,\n  faCaretDown: faCaretDown,\n  faK: faK,\n  faCheckToSlot: faCheckToSlot,\n  faVoteYea: faVoteYea,\n  faFishFins: faFishFins,\n  faCompress: faCompress,\n  faArrowUpAZ: faArrowUpAZ,\n  faSortAlphaUp: faSortAlphaUp,\n  faUserGraduate: faUserGraduate,\n  faFileCode: faFileCode,\n  faSoap: faSoap,\n  faRecycle: faRecycle,\n  faFaceGrinWink: faFaceGrinWink,\n  faGrinWink: faGrinWink,\n  faWaterLadder: faWaterLadder,\n  faLadderWater: faLadderWater,\n  faSwimmingPool: faSwimmingPool,\n  faGemini: faGemini,\n  faTowerCell: faTowerCell,\n  faColonSign: faColonSign,\n  faLaptopFile: faLaptopFile,\n  faBahai: faBahai,\n  faHaykal: faHaykal,\n  faMoneyBill1: faMoneyBill1,\n  faMoneyBillAlt: faMoneyBillAlt,\n  faCloudBolt: faCloudBolt,\n  faThunderstorm: faThunderstorm,\n  faEthernet: faEthernet,\n  faHryvniaSign: faHryvniaSign,\n  faHryvnia: faHryvnia,\n  faEyeSlash: faEyeSlash,\n  faCartFlatbedSuitcase: faCartFlatbedSuitcase,\n  faLuggageCart: faLuggageCart,\n  faRadiation: faRadiation,\n  faFileWord: faFileWord,\n  faBedPulse: faBedPulse,\n  faProcedures: faProcedures,\n  faTents: faTents,\n  faMugHot: faMugHot,\n  faBolt: faBolt,\n  faZap: faZap,\n  faJar: faJar,\n  faTruckPlane: faTruckPlane,\n  faHandHoldingHeart: faHandHoldingHeart,\n  faArrowRotateLeft: faArrowRotateLeft,\n  faArrowLeftRotate: faArrowLeftRotate,\n  faArrowRotateBack: faArrowRotateBack,\n  faArrowRotateBackward: faArrowRotateBackward,\n  faUndo: faUndo,\n  faFaceAngry: faFaceAngry,\n  faAngry: faAngry,\n  faBurst: faBurst,\n  faZ: faZ,\n  faBandage: faBandage,\n  faBandAid: faBandAid,\n  faPlaneCircleExclamation: faPlaneCircleExclamation,\n  faBusSide: faBusSide,\n  faBugs: faBugs,\n  faBeerMugEmpty: faBeerMugEmpty,\n  faBeer: faBeer,\n  faPersonCircleCheck: faPersonCircleCheck,\n  faStapler: faStapler,\n  faHouseMedicalCircleCheck: faHouseMedicalCircleCheck,\n  faNairaSign: faNairaSign,\n  faWifi: faWifi,\n  faWifi3: faWifi3,\n  faWifiStrong: faWifiStrong,\n  faMoneyCheckDollar: faMoneyCheckDollar,\n  faMoneyCheckAlt: faMoneyCheckAlt,\n  faEyeLowVision: faEyeLowVision,\n  faLowVision: faLowVision,\n  faCircleArrowUp: faCircleArrowUp,\n  faArrowCircleUp: faArrowCircleUp,\n  faCameraRetro: faCameraRetro,\n  faCapsules: faCapsules,\n  faPoo: faPoo,\n  faVolume: faVolume,\n  faVolumeMedium: faVolumeMedium,\n  faElevator: faElevator,\n  faTag: faTag,\n  faFileCircleMinus: faFileCircleMinus,\n  faDownLong: faDownLong,\n  faLongArrowAltDown: faLongArrowAltDown,\n  faCompactDisc: faCompactDisc,\n  faSuitcaseRolling: faSuitcaseRolling,\n  faBookQuran: faBookQuran,\n  faQuran: faQuran,\n  faPhoneSlash: faPhoneSlash,\n  faRoadCircleCheck: faRoadCircleCheck,\n  faShopLock: faShopLock,\n  faImagePortrait: faImagePortrait,\n  faPortrait: faPortrait,\n  faBridgeLock: faBridgeLock,\n  faHammer: faHammer,\n  faArrowUp19: faArrowUp19,\n  faSortNumericUp: faSortNumericUp,\n  faChessKnight: faChessKnight,\n  faHouseFloodWaterCircleArrowRight: faHouseFloodWaterCircleArrowRight,\n  faArrowUpRightFromSquare: faArrowUpRightFromSquare,\n  faExternalLink: faExternalLink,\n  faArrowDownUpAcrossLine: faArrowDownUpAcrossLine,\n  faFaceGrinBeam: faFaceGrinBeam,\n  faGrinBeam: faGrinBeam,\n  faRectangleAd: faRectangleAd,\n  faAd: faAd,\n  faBookTanakh: faBookTanakh,\n  faTanakh: faTanakh,\n  faHotTubPerson: faHotTubPerson,\n  faHotTub: faHotTub,\n  faFileHalfDashed: faFileHalfDashed,\n  faOutdent: faOutdent,\n  faDedent: faDedent,\n  faHandPeace: faHandPeace,\n  faHeadSideVirus: faHeadSideVirus,\n  faCompass: faCompass,\n  faPenNib: faPenNib,\n  faTentArrowsDown: faTentArrowsDown,\n  faForwardFast: faForwardFast,\n  faFastForward: faFastForward,\n  faCrop: faCrop,\n  faWhiskeyGlass: faWhiskeyGlass,\n  faGlassWhiskey: faGlassWhiskey,\n  faSquare: faSquare,\n  faFaceGrin: faFaceGrin,\n  faGrin: faGrin,\n  faFileContract: faFileContract,\n  faAngleUp: faAngleUp,\n  faFaceSmile: faFaceSmile,\n  faSmile: faSmile,\n  faPersonDressBurst: faPersonDressBurst,\n  faDivide: faDivide,\n  faCodeFork: faCodeFork,\n  faHouseFlag: faHouseFlag,\n  faBuildingColumns: faBuildingColumns,\n  faBank: faBank,\n  faInstitution: faInstitution,\n  faMuseum: faMuseum,\n  faUniversity: faUniversity,\n  faRug: faRug,\n  faCodeMerge: faCodeMerge,\n  faHouseTsunami: faHouseTsunami,\n  faMagnifyingGlassChart: faMagnifyingGlassChart,\n  faUmbrella: faUmbrella,\n  faHillRockslide: faHillRockslide,\n  faUserSecret: faUserSecret,\n  faPager: faPager,\n  faBriefcase: faBriefcase,\n  faTrowelBricks: faTrowelBricks,\n  faSocks: faSocks,\n  faT: faT,\n  faMicrochip: faMicrochip,\n  faTruckMedical: faTruckMedical,\n  faAmbulance: faAmbulance,\n  faOm: faOm,\n  faMosquitoNet: faMosquitoNet,\n  faPrescriptionBottle: faPrescriptionBottle,\n  faUsersGear: faUsersGear,\n  faUsersCog: faUsersCog,\n  faRoadCircleExclamation: faRoadCircleExclamation,\n  faPause: faPause,\n  faStaffSnake: faStaffSnake,\n  faRodAsclepius: faRodAsclepius,\n  faRodSnake: faRodSnake,\n  faStaffAesculapius: faStaffAesculapius,\n  faPiggyBank: faPiggyBank,\n  faMonument: faMonument,\n  faAnglesRight: faAnglesRight,\n  faAngleDoubleRight: faAngleDoubleRight,\n  faDesktop: faDesktop,\n  faDesktopAlt: faDesktopAlt,\n  faPlaneCircleXmark: faPlaneCircleXmark,\n  faRetweet: faRetweet,\n  faUserGear: faUserGear,\n  faUserCog: faUserCog,\n  faBorderAll: faBorderAll,\n  faCoins: faCoins,\n  faMarsStroke: faMarsStroke,\n  faHandshakeAngle: faHandshakeAngle,\n  faHandsHelping: faHandsHelping,\n  faArrowDown: faArrowDown,\n  faLocationDot: faLocationDot,\n  faMapMarkerAlt: faMapMarkerAlt,\n  faPlugCircleExclamation: faPlugCircleExclamation,\n  faCookieBite: faCookieBite,\n  faScrewdriverWrench: faScrewdriverWrench,\n  faTools: faTools,\n  faIndent: faIndent,\n  faBars: faBars,\n  faNavicon: faNavicon,\n  faHandsPraying: faHandsPraying,\n  faPrayingHands: faPrayingHands,\n  faViruses: faViruses,\n  faSchoolFlag: faSchoolFlag,\n  faTrademark: faTrademark,\n  faFireBurner: faFireBurner,\n  faFaceSmileBeam: faFaceSmileBeam,\n  faSmileBeam: faSmileBeam,\n  faTentArrowLeftRight: faTentArrowLeftRight,\n  faRoute: faRoute,\n  faAnglesUp: faAnglesUp,\n  faAngleDoubleUp: faAngleDoubleUp,\n  faBucket: faBucket,\n  faLessThanEqual: faLessThanEqual,\n  faFolderClosed: faFolderClosed,\n  faPersonThroughWindow: faPersonThroughWindow,\n  faSchoolLock: faSchoolLock,\n  faPersonBurst: faPersonBurst,\n  faLeftLong: faLeftLong,\n  faLongArrowAltLeft: faLongArrowAltLeft,\n  faLocationCrosshairs: faLocationCrosshairs,\n  faLocation: faLocation,\n  faPersonDotsFromLine: faPersonDotsFromLine,\n  faDiagnoses: faDiagnoses,\n  faGaugeSimpleHigh: faGaugeSimpleHigh,\n  faTachometer: faTachometer,\n  faTachometerFast: faTachometerFast,\n  faAnglesLeft: faAnglesLeft,\n  faAngleDoubleLeft: faAngleDoubleLeft,\n  faUpDown: faUpDown,\n  faArrowsAltV: faArrowsAltV,\n  faBatteryEmpty: faBatteryEmpty,\n  faBattery0: faBattery0,\n  faKeyboard: faKeyboard,\n  faCookie: faCookie,\n  faStopwatch: faStopwatch,\n  faEject: faEject,\n  faSatelliteDish: faSatelliteDish,\n  faFaceRollingEyes: faFaceRollingEyes,\n  faMehRollingEyes: faMehRollingEyes,\n  faListCheck: faListCheck,\n  faTasks: faTasks,\n  faSackXmark: faSackXmark,\n  faHashtag: faHashtag,\n  faTrain: faTrain,\n  faGamepad: faGamepad,\n  faFileExport: faFileExport,\n  faArrowRightFromFile: faArrowRightFromFile,\n  faFaceGrimace: faFaceGrimace,\n  faGrimace: faGrimace,\n  faTrainSubway: faTrainSubway,\n  faSubway: faSubway,\n  faCircleDot: faCircleDot,\n  faDotCircle: faDotCircle,\n  faObjectGroup: faObjectGroup,\n  faShip: faShip,\n  faC: faC,\n  faSquarePhone: faSquarePhone,\n  faPhoneSquare: faPhoneSquare,\n  faRulerCombined: faRulerCombined,\n  faArrowsRotate: faArrowsRotate,\n  faRefresh: faRefresh,\n  faSync: faSync,\n  faPersonDress: faPersonDress,\n  faFemale: faFemale,\n  faBookOpen: faBookOpen,\n  faFolderTree: faFolderTree,\n  faVirgo: faVirgo,\n  faBoxArchive: faBoxArchive,\n  faArchive: faArchive,\n  faTentArrowDownToLine: faTentArrowDownToLine,\n  faQrcode: faQrcode,\n  faDragon: faDragon,\n  faHourglassEnd: faHourglassEnd,\n  faHourglass3: faHourglass3,\n  faGrip: faGrip,\n  faGridHorizontal: faGridHorizontal,\n  faGripHorizontal: faGripHorizontal,\n  faBorderTopLeft: faBorderTopLeft,\n  faBorderStyle: faBorderStyle,\n  faListUl: faListUl,\n  faListDots: faListDots,\n  faPeopleRobbery: faPeopleRobbery,\n  faMobileButton: faMobileButton,\n  faArrowDownAZ: faArrowDownAZ,\n  faSortAlphaAsc: faSortAlphaAsc,\n  faSortAlphaDown: faSortAlphaDown,\n  faMoneyBill: faMoneyBill,\n  faCircleMinus: faCircleMinus,\n  faMinusCircle: faMinusCircle,\n  faArrowPointer: faArrowPointer,\n  faMousePointer: faMousePointer,\n  faSquareShareNodes: faSquareShareNodes,\n  faShareAltSquare: faShareAltSquare,\n  faTableCellsLarge: faTableCellsLarge,\n  faThLarge: faThLarge,\n  faCat: faCat,\n  faCalendarWeek: faCalendarWeek,\n  faCodeCompare: faCodeCompare,\n  faLeo: faLeo,\n  faRoadCircleXmark: faRoadCircleXmark,\n  faPallet: faPallet,\n  faCakeCandles: faCakeCandles,\n  faBirthdayCake: faBirthdayCake,\n  faCake: faCake,\n  faBugSlash: faBugSlash,\n  faTarp: faTarp,\n  faDiagramPredecessor: faDiagramPredecessor,\n  faFaceFlushed: faFaceFlushed,\n  faFlushed: faFlushed,\n  faDiagramNext: faDiagramNext,\n  faAnchorCircleXmark: faAnchorCircleXmark,\n  faPersonCircleXmark: faPersonCircleXmark,\n  faSpa: faSpa,\n  faAries: faAries,\n  faBarsProgress: faBarsProgress,\n  faTasksAlt: faTasksAlt,\n  faHeartCircleCheck: faHeartCircleCheck,\n  faMarsStrokeRight: faMarsStrokeRight,\n  faMarsStrokeH: faMarsStrokeH,\n  faTowerObservation: faTowerObservation,\n  faSterlingSign: faSterlingSign,\n  faGbp: faGbp,\n  faPoundSign: faPoundSign,\n  faFaucetDrip: faFaucetDrip,\n  faCircleInfo: faCircleInfo,\n  faInfoCircle: faInfoCircle,\n  faFeather: faFeather,\n  faBowlRice: faBowlRice,\n  faStarHalfStroke: faStarHalfStroke,\n  faStarHalfAlt: faStarHalfAlt,\n  faTemperatureArrowDown: faTemperatureArrowDown,\n  faTemperatureDown: faTemperatureDown,\n  faMaskVentilator: faMaskVentilator,\n  faFileVideo: faFileVideo,\n  faArrowTrendDown: faArrowTrendDown,\n  faOilCan: faOilCan,\n  faPeopleCarryBox: faPeopleCarryBox,\n  faPeopleCarry: faPeopleCarry,\n  faChair: faChair,\n  faWind: faWind,\n  faLayerGroup: faLayerGroup,\n  faHeadSideMask: faHeadSideMask,\n  faHands: faHands,\n  faSignLanguage: faSignLanguage,\n  faSigning: faSigning,\n  faTablets: faTablets,\n  faWeightHanging: faWeightHanging,\n  faDice: faDice,\n  faShopSlash: faShopSlash,\n  faStoreAltSlash: faStoreAltSlash,\n  faSortDown: faSortDown,\n  faSortDesc: faSortDesc,\n  faPesetaSign: faPesetaSign,\n  faTabletScreenButton: faTabletScreenButton,\n  faTabletAlt: faTabletAlt,\n  faHandHoldingDollar: faHandHoldingDollar,\n  faHandHoldingUsd: faHandHoldingUsd,\n  faShield: faShield,\n  faShieldBlank: faShieldBlank,\n  faFaceLaugh: faFaceLaugh,\n  faLaugh: faLaugh,\n  faHandsHolding: faHandsHolding,\n  faCartShopping: faCartShopping,\n  faShoppingCart: faShoppingCart,\n  faOctagon: faOctagon,\n  faHandPointer: faHandPointer,\n  faRegistered: faRegistered,\n  faHouseSignal: faHouseSignal,\n  faBangladeshiTakaSign: faBangladeshiTakaSign\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faDollarSign, faDollar, faUsd, faDog, faTruckMoving, faRotate, faSyncAlt, faSquareMinus, faMinusSquare, faAlignJustify, faCalendarCheck, faFaceKiss, faKiss, faKitchenSet, faDna, faChildReaching, faPaste, faFileClipboard, faMeteor, faGears, faCogs, faFileCirclePlus, faIcicles, faArrowTrendUp, faHexagonNodesBolt, faQuestion, faHandsBound, faPersonWalkingLuggage, faFileArrowDown, faFileDownload, faPersonBooth, faLocust, faRightLong, faLongArrowAltRight, faTruckDroplet, faHandHoldingMedical, faHandPointLeft, faCalculator, faMinus, faSubtract, faArrowUpZA, faSortAlphaUpAlt, faMicrophoneSlash, faSquarePen, faPenSquare, faPencilSquare, faHandFist, faFistRaised, faCommentSms, faSms, faSimCard, faScaleBalanced, faBalanceScale, faCar, faAutomobile, faCropSimple, faCropAlt, faMedal, faScroll, faFileExcel, faFilter, faDrum, faMapPin, faScaleUnbalancedFlip, faBalanceScaleRight, faArrowsToCircle, faEnvelope, faBaby, faSquareCaretDown, faCaretSquareDown, faTent, faA, faParachuteBox, faCartArrowDown, faBridgeCircleExclamation, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faAt, faIndianRupeeSign, faIndianRupee, faInr, faTruck, faChalkboardUser, faChalkboardTeacher, faUserCheck, faUserNinja, faPlantWilt, faWeightScale, faWeight, faCaretRight, faFlorinSign, faBell, faLariSign, faMillSign, faPersonSnowboarding, faSnowboarding, faTty, faTeletype, faUsersRectangle, faMobile, faMobileAndroid, faMobilePhone, faArrowsTurnToDots, faExclamation, faChurch, faToggleOff, faShoePrints, faFileCircleExclamation, faWallet, faMessage, faCommentAlt, faTrophy, faFaceDizzy, faDizzy, faBacteria, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faPeopleArrows, faPeopleArrowsLeftRight, faHandsClapping, faVirusCovidSlash, faCalendarDays, faCalendarAlt, faDiamondTurnRight, faDirections, faHandPointUp, faBezierCurve, faPersonHalfDress, faSquarePollHorizontal, faPollH, faSchoolCircleXmark, faHandLizard, faChalkboard, faBlackboard, faUpRightFromSquare, faExternalLinkAlt, faSquareFull, faClover, faTeethOpen, faBarsStaggered, faReorder, faStream, faWarehouse, faSwatchbook, faCampground, faPersonWalkingArrowRight, faGlasses, faCirclePause, faPauseCircle, faMemory, faGift, faMoneyBillWheat, faDungeon, faSuitcaseMedical, faMedkit, faPersonCane, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faEnvelopeOpenText, faToolbox, faPowerOff, faSignal, faSignal5, faSignalPerfect, faArrowsSpin, faJoint, faBraille, faBasketShopping, faShoppingBasket, faBridge, faPlaneArrival, faCashRegister, faRing, faAquarius, faShareNodes, faShareAlt, faPersonCircleExclamation, faBinoculars, faKipSign, faHardDrive, faHdd, faRankingStar, faUserTie, faEllipsis, faEllipsisH, faStoreSlash, faPercent, faPercentage, faFileZipper, faFileArchive, faDisplay, faIcons, faHeartMusicCameraBolt, faRulerVertical, faMapLocationDot, faMapMarkedAlt, faHeartCrack, faHeartBroken, faCow, faRss, faFeed, faMagnifyingGlass, faSearch, faCloudMoon, faBoxesStacked, faBoxes, faBoxesAlt, faCodeBranch, faBan, faCancel, faJugDetergent, faReply, faMailReply, faSunPlantWilt, faBacterium, faRecordVinyl, faFloppyDisk, faSave, faToiletsPortable, faO, faPalette, faUnlock, faEarListen, faAssistiveListeningSystems, faCodePullRequest, faKey, faSkull, faMarsStrokeUp, faMarsStrokeV, faFireFlameSimple, faBurn, faTree, faSmog, faS, faJedi, faPersonHiking, faHiking, faArrowsUpToLine, faMarsDouble, faThermometer, faPaintbrush, faPaintBrush, faNeuter, faSquarePhoneFlip, faPhoneSquareAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faCommentDollar, faHippo, faBowlFood, faSquareVirus, faCloudSunRain, faArrowRightLong, faLongArrowRight, faBuildingUn, faTemperatureLow, faDoorOpen, faAlignLeft, faCamera, faCameraAlt, faUsersRays, faRainbow, faSitemap, faFaceGrinStars, faGrinStars, faSortUp, faSortAsc, faEye, faCaretLeft, faAppleWhole, faAppleAlt, faScrollTorah, faTorah, faHouseLock, faArrowsLeftRightToLine, faTrash, faFaceSadTear, faSadTear, faFax, faPersonCirclePlus, faHamsa, faPersonCircleQuestion, faClipboardCheck, faShareFromSquare, faShareSquare, faReceipt, faEquals, faChevronUp, faVirusSlash, faSlash, faExpand, faNoteSticky, faStickyNote, faTableColumns, faColumns, faPersonShelter, faCircleNotch, faWater, faDeleteLeft, faBackspace, faBroomBall, faQuidditch, faQuidditchBroomBall, faJ, faShuttleSpace, faSpaceShuttle, faYinYang, faStop, faTrowel, faHandBackFist, faHandRock, faTemperatureHigh, faGreaterThan, faCrutch, faSeptagon, faHeptagon, faStreetView, faWaveSquare, faAngleLeft, faScrewdriver, faTractor, faBridgeCircleXmark, faVials, faStethoscope, faPodcast, faArrowUpRightDots, faChessQueen, faAnchorCircleExclamation, faEllipsisVertical, faEllipsisV, faHeartCircleExclamation, faBuildingCircleExclamation, faPersonArrowUpFromLine, faNotEqual, faTrainTram, faPlaneDeparture, faRightToBracket, faSignInAlt, faSdCard, faHouseCircleExclamation, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faRadio, faHandDots, faAllergies, faBookSkull, faBookDead, faUnlockKeyhole, faUnlockAlt, faFileArrowUp, faFileUpload, faFaceGrinTears, faGrinTears, faPenToSquare, faEdit, faEarthEurope, faGlobeEurope, faFaceGrinBeamSweat, faGrinBeamSweat, faCircleHalfStroke, faAdjust, faPersonMilitaryToPerson, faTableCellsColumnLock, faTruckFieldUn, faClock, faClockFour, faBook, faFaceLaughWink, faLaughWink, faCloudMeatball, faChartArea, faAreaChart, faRupiahSign, faTextWidth, faSatellite, faMagnifyingGlassMinus, faSearchMinus, faPeopleGroup, faSquareBinary, faMasksTheater, faTheaterMasks, faCartPlus, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faTableCellsRowUnlock, faRocket, faShrimp, faTengeSign, faTenge, faHouseChimneyMedical, faClinicMedical, faUsersSlash, faPaperPlane, faBookAtlas, faAtlas, faTable, faHeart, faCircleChevronUp, faChevronCircleUp, faBatteryHalf, faBattery3, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faHandcuffs, faHatCowboySide, faIndustry, faLinesLeaning, faPassport, faInfinity, faClone, faForward, faM, faRoadSpikes, faMountain, faChess, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faB, faShieldVirus, faLitecoinSign, faDiceD6, faGripLinesVertical, faGolfBallTee, faGolfBall, faHexagon, faFolderOpen, faKaaba, faHandHolding, faSingleQuoteRight, faBottleDroplet, faWindowMinimize, faChevronRight, faEgg, faLandmarkDome, faLandmarkAlt, faWorm, faUserInjured, faStrikethrough, faBlog, faStopwatch20, faTruckPickup, faSeedling, faSprout, faTransgender, faTransgenderAlt, faStarHalf, faPhotoFilm, faPhotoVideo, faPictureInPicture, faPumpMedical, faFire, faMagnifyingGlassPlus, faSearchPlus, faFlask, faAlignRight, faCableCar, faTram, faKitMedical, faFirstAid, faGripLines, faBurger, faHamburger, faSnowman, faHotel, faPrint, faVolleyball, faVolleyballBall, faTrafficLight, faPlaneCircleCheck, faUsers, faCertificate, faAlarmClock, faHelicopterSymbol, faHouseChimneyCrack, faHouseDamage, faPersonMilitaryPointing, faDatabase, faNewspaper, faCloudRain, faMaximize, faExpandArrowsAlt, faLocationArrow, faCity, faXRay, faUmbrellaBeach, faArrowRightToBracket, faSignIn, faHeadset, faSplotch, faUpLong, faLongArrowAltUp, faHexagonNodes, faHospital, faHospitalAlt, faHospitalWide, faPersonHarassing, faMoneyBillTrendUp, faPenRuler, faPencilRuler, faRepeat, faBone, faFireFlameCurved, faFireAlt, faBusSimple, faBusAlt, faVenusMars, faBlender, faU, faShare, faMailForward, faPhoneFlip, faPhoneAlt, faToiletPortable, faPersonPregnant, faLessThan, faSuperscript, faCircleStop, faStopCircle, faArrowsUpDown, faArrowsV, faPooStorm, faPooBolt, faVideoSlash, faSquareXmark, faTimesSquare, faXmarkSquare, faHandHoldingDroplet, faHandHoldingWater, faWonSign, faKrw, faWon, faObjectUngroup, faComment, faHillAvalanche, faArrowsToEye, faSnowplow, faChartGantt, faVideo, faVideoCamera, faChessPawn, faSynagogue, faBuildingCircleCheck, faCalendarPlus, faWheelchairMove, faWheelchairAlt, faUserShield, faBold, faHeartPulse, faHeartbeat, faSquareRootVariable, faSquareRootAlt, faHandsBubbles, faHandsWash, faMarker, faClipboard, faPlaceOfWorship, faCannabis, faPeopleRoof, faDisease, faBookBible, faBible, faChessBoard, faMars, faLaptop, faUserXmark, faUserTimes, faFlagUsa, faHandMiddleFinger, faMortarPestle, faHeadSideCough, faPlaneLock, faBatteryThreeQuarters, faBattery4, faFrancSign, faFilterCircleDollar, faFunnelDollar, faCheese, faCircleH, faHospitalSymbol, faSchool, faDiceFive, faTornado, faJetFighter, faFighterJet, faThumbsDown, faBroom, faFileImport, faArrowRightToFile, faUtensils, faCutlery, faIdBadge, faSpider, faMobileRetro, faSignsPost, faMapSigns, faGroupArrowsRotate, faArrowsSplitUpAndLeft, faFillDrip, faShieldHeart, faPersonSkiingNordic, faSkiingNordic, faSquareCheck, faCheckSquare, faBath, faBathtub, faChessBishop, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faDrawPolygon, faVectorPolygon, faICursor, faHeartCirclePlus, faShieldDog, faGreaterThanEqual, faEnvelopeOpen, faMound, faVoicemail, faVest, faAudioDescription, faW, faEyeDropper, faEyeDropperEmpty, faEyedropper, faCircleXmark, faTimesCircle, faXmarkCircle, faTrailer, faTurkishLiraSign, faTry, faTurkishLira, faVolcano, faWandSparkles, faMicrophone, faCrown, faTentArrowTurnLeft, faTruckFast, faShippingFast, faUserPen, faUserEdit, faUserClock, faShower, faSquareCaretUp, faCaretSquareUp, faMapLocation, faMapMarked, faPenFancy, faEuroSign, faEur, faEuro, faHouseCircleXmark, faLiraSign, faYenSign, faCny, faJpy, faRmb, faYen, faBoxOpen, faTruckField, faLocationPinLock, faPersonPraying, faPray, faClipboardList, faSackDollar, faMountainSun, faArrowUpWideShort, faSortAmountUp, faUsersLine, faStarOfDavid, faNotesMedical, faAustralSign, faClipboardUser, faFileImage, faSquareCaretRight, faCaretSquareRight, faVial, faHelicopter, faMitten, faGasPump, faEnvelopeCircleCheck, faPersonSkating, faSkating, faSun, faBaseball, faBaseballBall, faImage, faNotdef, faBasketball, faBasketballBall, faPencil, faPencilAlt, faPersonWalkingArrowLoopLeft, faDiceSix, faAnglesDown, faAngleDoubleDown, faSyringe, faWheatAwn, faWheatAlt, faPlaneUp, faAlignCenter, faHockeyPuck, faCircleArrowLeft, faArrowCircleLeft, faPlugCircleBolt, faRestroom, faAnchorLock, faTimeline, faLightbulb, faCircleArrowRight, faArrowCircleRight, faMarsAndVenus, faNetworkWired, faBuildingShield, faCode, faFeatherPointed, faFeatherAlt, faFileCircleQuestion, faSignature, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faCarrot, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faTableCellsRowLock, faBoltLightning, faCloudShowersWater, faArrowUpLong, faLongArrowUp, faAddressCard, faContactCard, faVcard, faAngleRight, faFaceMeh, faMeh, faArrowUpFromGroundWater, faMap, faUserPlus, faVenus, faDiagramSuccessor, faHeadSideCoughSlash, faDiagramProject, faProjectDiagram, faTerminal, faHouseFire, faMask, faHurricane, faEarthAfrica, faGlobeAfrica, faThumbtack, faThumbTack, faHandPointDown, faFaceMehBlank, faMehBlank, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBorderNone, faHighlighter, faMoneyBillWave, faToiletPaperSlash, faFileShield, faTextHeight, faFaceGrinTongue, faGrinTongue, faFileSignature, faBuildingWheat, faPlugCircleMinus, faFutbol, faFutbolBall, faSoccerBall, faCirclePlus, faPlusCircle, faBrazilianRealSign, faStarAndCrescent, faFaceSurprise, faSurprise, faHospitalUser, faArrowDownUpLock, faFolder, faFolderBlank, faHollyBerry, faVenusDouble, faClipboardQuestion, faHotdog, faArrowUpFromBracket, faMicroscope, faCloud, faBaseballBatBall, faCarRear, faCarAlt, faThumbtackSlash, faThumbTackSlash, faPlusMinus, faHouseCircleCheck, faCalendarDay, faLibra, faCircle, faMobileVibrate, faFaceGrinSquint, faGrinSquint, faUsersBetweenLines, faHouseMedicalCircleXmark, faTableList, faThList, faFlaskVial, faCircleExclamation, faExclamationCircle, faTaxi, faCab, faTextSlash, faRemoveFormat, faPeoplePulling, faBackward, faCarBurst, faCarCrash, faLink, faChain, faBackwardStep, faStepBackward, faX, faCircleUser, faUserCircle, faRectangleList, faListAlt, faHand, faHandPaper, faCancer, faVanShuttle, faShuttleVan, faStairs, faHorseHead, faVault, faClosedCaptioningSlash, faDrumSteelpan, faThumbsUp, faStamp, faMenorah, faChildren, faChartLine, faLineChart, faSquareEnvelope, faEnvelopeSquare, faBanSmoking, faSmokingBan, faTruckFront, faBuilding, faBullseye, faArrowLeftLong, faLongArrowLeft, faChessRook, faBlenderPhone, faArrowTurnUp, faLevelUp, faBicycle, faCircleArrowDown, faArrowCircleDown, faGear, faCog, faMarsAndVenusBurst, faOtter, faCircleChevronLeft, faChevronCircleLeft, faCircleQuestion, faQuestionCircle, faWalkieTalkie, faUserGroup, faUserFriends, faHouseChimney, faHomeLg, faRightFromBracket, faSignOutAlt, faFile, faPlaneSlash, faCloudShowersHeavy, faPersonFalling, faTurnDown, faLevelDownAlt, faUpRightAndDownLeftFromCenter, faExpandAlt, faUserTag, faHandSparkles, faArrowsToDot, faFaceSadCry, faSadCry, faDongSign, faPeopleLine, faSquareRss, faRssSquare, faCalendarMinus, faChartDiagram, faFaceTired, faTired, faHandPointRight, faArrowUp, faCubesStacked, faChildCombatant, faChildRifle, faVestPatches, faMartiniGlassEmpty, faGlassMartini, faMagnet, faRoadBarrier, faCompassDrafting, faDraftingCompass, faSquarePersonConfined, faPlateWheat, faSignHanging, faSign, faCarBattery, faBatteryCar, faShirt, faTShirt, faTshirt, faParagraph, faEnvelopesBulk, faMailBulk, faGuitar, faSuitcase, faCircleUp, faArrowAltCircleUp, faF, faXmarksLines, faEarthOceania, faGlobeOceania, faCommentSlash, faPlay, faVialCircleCheck, faBridgeCircleCheck, faCediSign, faPuzzlePiece, faHelmetUn, faGlassWater, faHeartCircleBolt, faPumpSoap, faHandScissors, faDolly, faDollyBox, faPaperclip, faDemocrat, faSquareArrowUpRight, faExternalLinkSquare, faFerry, faMosquito, faBuildingCircleArrowRight, faLeftRight, faArrowsAltH, faVirus, faGem, faToilet, faSingleQuoteLeft, faMoneyBills, faTabletButton, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faWrench, faTrashCan, faTrashAlt, faTableCells, faTh, faRibbon, faLandmarkFlag, faUpDownLeftRight, faArrowsAlt, faCarSide, faTrashArrowUp, faTrashRestore, faLifeRing, faCopyright, faFilePrescription, faEraser, faHourglassStart, faHourglass1, faCircleLeft, faArrowAltCircleLeft, faCruzeiroSign, faSmoking, faSquarePollVertical, faPoll, faPersonCircleMinus, faBiohazard, faBellConcierge, faConciergeBell, faRulerHorizontal, faHorse, faCalendar, faHandsHoldingChild, faItalic, faKhanda, faFaceFrownOpen, faFrownOpen, faCheck, faFingerprint, faChargingStation, faUserLock, faMobileScreenButton, faMobileAlt, faAnchorCircleCheck, faPersonWalkingWithCane, faBlind, faFileWaveform, faFileMedicalAlt, faHouseCrack, faHatWizard, faUserDoctor, faUserMd, faChartBar, faBarChart, faSprayCanSparkles, faAirFreshener, faBahtSign, faTemperatureArrowUp, faTemperatureUp, faWebAwesome, faNonBinary, faN, faArrowsUpDownLeftRight, faArrows, faHouse, faHome, faHomeAlt, faHomeLgAlt, faSpinner, faGavel, faLegal, faTicketSimple, faTicketAlt, faDove, faTarpDroplet, faTreeCity, faTurnUp, faLevelUpAlt, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faSliders, faSlidersH, faMosque, faH, faInfo, faPersonWalking, faWalking, faArrowTurnDown, faLevelDown, faRoad, faSpiral, faFaceFrown, faFrown, faWineGlassEmpty, faWineGlassAlt, faClapperboard, faForwardStep, faStepForward, faSquareUpRight, faExternalLinkSquareAlt, faBookJournalWhills, faJournalWhills, faChampagneGlasses, faGlassCheers, faDumpster, faHeartCircleXmark, faComputer, faWandMagic, faMagic, faBrain, faBriefcaseMedical, faHouseMedicalCircleExclamation, faCodeCommit, faPersonBreastfeeding, faPersonRays, faManatSign, faSort, faUnsorted, faCircleRadiation, faRadiationAlt, faLaptopCode, faSink, faArrowUpFromWaterPump, faMicrophoneLinesSlash, faMicrophoneAltSlash, faServer, faUser, faUserAlt, faUserLarge, faSnowflake, faTaurus, faSkullCrossbones, faPesoSign, faWineGlass, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faTicket, faWheatAwnCircleExclamation, faArrowsTurnRight, faCandyCane, faWheelchair, faSpellCheck, faVolumeOff, faLungs, faBookmark, faBarcode, faListOl, faList12, faListNumeric, faFileCircleXmark, faCube, faTape, faBomb, faScaleUnbalanced, faBalanceScaleLeft, faSquareCaretLeft, faCaretSquareLeft, faRuler, faI, faVolumeXmark, faVolumeMute, faVolumeTimes, faArchway, faPersonDigging, faDigging, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faGenderless, faCloudSun, faArrowRight, faHandshake, faHandshakeAlt, faHandshakeSimple, faPersonSkiing, faSkiing, faBridgeWater, faBuildingNgo, faIgloo, faCircleDollarToSlot, faDonate, faY, faFaceSmileWink, faSmileWink, faDiceFour, faFaceGrinSquintTears, faGrinSquintTears, faFileAudio, faArrowsDownToLine, faG, faVihara, faFlagCheckered, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faRightLeft, faExchangeAlt, faPills, faExplosion, faArrowsDownToPeople, faUsersViewfinder, faCarOn, faSleigh, faDumbbell, faBabyCarriage, faCarriageBaby, faKiwiBird, faCalendarXmark, faCalendarTimes, faCircleDown, faArrowAltCircleDown, faFileMedical, faXmark, faClose, faMultiply, faRemove, faTimes, faShapes, faTriangleCircleSquare, faDiceOne, faLockOpen, faPepperHot, faDropletSlash, faTintSlash, faDroplet, faTint, faFileLines, faFileAlt, faFileText, faCommentsDollar, faMagnifyingGlassLocation, faSearchLocation, faFileInvoice, faPentagon, faRepublican, faShop, faStoreAlt, faFilm, faFilmAlt, faFilmSimple, faBuildingCircleXmark, faComments, faTags, faGun, faCircleCheck, faCheckCircle, faScorpio, faIdCardClip, faIdCardAlt, faMoon, faOilWell, faTachographDigital, faDigitalTachograph, faTablet, faTabletAndroid, faRubleSign, faRouble, faRub, faRuble, faClosedCaptioning, faPen, faPlane, faImages, faMobileScreen, faMobileAndroidAlt, faGuaraniSign, faBagShopping, faShoppingBag, faCircleRight, faArrowAltCircleRight, faPhoneVolume, faVolumeControlPhone, faCubes, faPhone, faToriiGate, faBacon, faPersonFallingBurst, faQuoteRight, faQuoteRightAlt, faHouseMedicalFlag, faPrescription, faDiceThree, faBuildingLock, faIdCard, faDriversLicense, faCirclePlay, faPlayCircle, faFaceLaughBeam, faLaughBeam, faLeaf, faHouseChimneyUser, faRotateRight, faRedoAlt, faRotateForward, faTooth, faHouseChimneyWindow, faMotorcycle, faBackwardFast, faFastBackward, faAddressBook, faContactBook, faSailboat, faBookBookmark, faMagnifyingGlassArrowRight, faMicrophoneLines, faMicrophoneAlt, faReplyAll, faMailReplyAll, faUniversalAccess, faToiletPaper, faToiletPaperAlt, faToiletPaperBlank, faVrCardboard, faPizzaSlice, faSprayCan, faVolumeLow, faVolumeDown, faCross, faPerson, faMale, faHourglass, faHourglassEmpty, faFish, faDrumstickBite, faChartSimple, faAtom, faP, faJetFighterUp, faPlugCircleXmark, faSheetPlastic, faV, faList, faListSquares, faPisces, faSolarPanel, faLandMineOn, faHeadphones, faHeadphonesAlt, faHeadphonesSimple, faBus, faFilePowerpoint, faQuoteLeft, faQuoteLeftAlt, faChevronDown, faEarthAsia, faGlobeAsia, faCentSign, faShieldCat, faSchoolCircleCheck, faMartiniGlass, faGlassMartiniAlt, faPlug, faPanorama, faClockRotateLeft, faHistory, faJarWheat, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faTruckRampBox, faTruckLoading, faAngleDown, faPlugCircleCheck, faWindowMaximize, faHandsHoldingCircle, faLocationPin, faMapMarker, faBowlingBall, faCartFlatbed, faDollyFlatbed, faHouseUser, faHomeUser, faGhost, faCommentNodes, faPersonArrowDownToLine, faPlugCirclePlus, faPersonSwimming, faSwimmer, faCommentDots, faCommenting, faChartPie, faPieChart, faFrog, faWineBottle, faInbox, faSquareH, faHSquare, faHouseMedical, faCircleChevronRight, faChevronCircleRight, faFileCsv, faHatCowboy, faFaceGrinTongueWink, faGrinTongueWink, faL, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faHourglassHalf, faHourglass2, faSpoon, faUtensilSpoon, faCreditCard, faCreditCardAlt, faFileInvoiceDollar, faSpaghettiMonsterFlying, faPastafarianism, faMartiniGlassCitrus, faCocktail, faBullhorn, faBoxTissue, faMattressPillow, faChevronLeft, faCloudMoonRain, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandSpock, faWandMagicSparkles, faMagicWandSparkles, faCommentMedical, faBellSlash, faHandshakeSlash, faHandshakeAltSlash, faHandshakeSimpleSlash, faBottleWater, faDiceD20, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faBrush, faPersonWalkingDashedLineArrowRight, faArrowUpShortWide, faSortAmountUpAlt, faGripVertical, faGridVertical, faCarTunnel, faChartColumn, faCapricorn, faTruckArrowRight, faTv, faTelevision, faTvAlt, faSection, faPeace, faStar, faFlag, faTriangleExclamation, faExclamationTriangle, faWarning, faSchoolCircleExclamation, faGraduationCap, faMortarBoard, faStore, faUserAstronaut, faBuildingFlag, faMugSaucer, faCoffee, faLemon, faCaravan, faQ, faLock, faPaintRoller, faVolumeHigh, faVolumeUp, faFolderPlus, faMercury, faAnchor, faSquareParking, faParking, faHanukiah, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faHeading, faHeader, faCrosshairs, faCircleNodes, faWindowRestore, faR, faFilterCircleXmark, faGopuram, faHeartCircleMinus, faStarOfLife, faBusinessTime, faBriefcaseClock, faFireExtinguisher, faArrowDownLong, faLongArrowDown, faUserMinus, faMoneyCheck, faHouseLaptop, faLaptopHouse, faDownload, faSagittarius, faCouch, faRoadLock, faScissors, faCut, faBug, faArrowRightFromBracket, faSignOut, faHandHoldingHand, faStroopwafel, faChild, faIceCream, faComputerMouse, faMouse, faFaucet, faAward, faPersonDrowning, faCameraRotate, faFaceGrinHearts, faGrinHearts, faFileFragment, faPersonMilitaryRifle, faToggleOn, faLungsVirus, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faBoxesPacking, faPersonChalkboard, faDiceTwo, faArrowRightArrowLeft, faExchange, faFootball, faFootballBall, faTruckMonster, faAsterisk, faBatteryFull, faBattery, faBattery5, faChildDress, faFaceKissBeam, faKissBeam, faTrashCanArrowUp, faTrashRestoreAlt, faFont, faBoreHole, faVirusCovid, faFilePdf, faLanguage, faShieldHalved, faShieldAlt, faCaretUp, faFilePen, faFileEdit, faPersonBiking, faBiking, faBookOpenReader, faBookReader, faGlassWaterDroplet, faTowerBroadcast, faBroadcastTower, faMinimize, faCompressArrowsAlt, faArrowRightToCity, faLaptopMedical, faBreadSlice, faGlobe, faFolderMinus, faMaskFace, faBong, faRoadBridge, faArrowUp91, faSortNumericUpAlt, faMountainCity, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinWide, faGrinAlt, faPoop, faDharmachakra, faBatteryQuarter, faBattery2, faAnkh, faDiamond, faSubscript, faRupeeSign, faRupee, faPersonRifle, faD, faSquareNfi, faTeeth, faMagnifyingGlassDollar, faSearchDollar, faDumpsterFire, faUpload, faUserSlash, faUserAltSlash, faUserLargeSlash, faArrowLeft, faVialVirus, faCheckDouble, faPaw, faHelmetSafety, faHardHat, faHatHard, faE, faFaceLaughSquint, faLaughSquint, faDownLeftAndUpRightToCenter, faCompressAlt, faGifts, faBed, faMoneyBillTransfer, faPersonRunning, faRunning, faCircleChevronDown, faChevronCircleDown, faUserNurse, faFaceKissWinkHeart, faKissWinkHeart, faFill, faMoneyBill1Wave, faMoneyBillWaveAlt, faLandmark, faMusic, faBookMedical, faShuffle, faRandom, faUnderline, faBuildingUser, faRobot, faPlus, faAdd, faCopy, faChessKing, faHouseFloodWater, faBitcoinSign, faBox, faSquarePlus, faPlusSquare, faArrowsLeftRight, faArrowsH, faFan, faCrow, faFileCircleCheck, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faPenClip, faPenAlt, faDoorClosed, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCaretDown, faK, faCheckToSlot, faVoteYea, faFishFins, faCompress, faArrowUpAZ, faSortAlphaUp, faUserGraduate, faFileCode, faSoap, faRecycle, faFaceGrinWink, faGrinWink, faWaterLadder, faLadderWater, faSwimmingPool, faGemini, faTowerCell, faColonSign, faLaptopFile, faBahai, faHaykal, faMoneyBill1, faMoneyBillAlt, faCloudBolt, faThunderstorm, faEthernet, faHryvniaSign, faHryvnia, faEyeSlash, faCartFlatbedSuitcase, faLuggageCart, faRadiation, faFileWord, faBedPulse, faProcedures, faTents, faMugHot, faBolt, faZap, faJar, faTruckPlane, faHandHoldingHeart, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faFaceAngry, faAngry, faBurst, faZ, faBandage, faBandAid, faPlaneCircleExclamation, faBusSide, faBugs, faBeerMugEmpty, faBeer, faPersonCircleCheck, faStapler, faHouseMedicalCircleCheck, faNairaSign, faWifi, faWifi3, faWifiStrong, faMoneyCheckDollar, faMoneyCheckAlt, faEyeLowVision, faLowVision, faCircleArrowUp, faArrowCircleUp, faCameraRetro, faCapsules, faPoo, faVolume, faVolumeMedium, faElevator, faTag, faFileCircleMinus, faDownLong, faLongArrowAltDown, faCompactDisc, faSuitcaseRolling, faBookQuran, faQuran, faPhoneSlash, faRoadCircleCheck, faShopLock, faImagePortrait, faPortrait, faBridgeLock, faHammer, faArrowUp19, faSortNumericUp, faChessKnight, faHouseFloodWaterCircleArrowRight, faArrowUpRightFromSquare, faExternalLink, faArrowDownUpAcrossLine, faFaceGrinBeam, faGrinBeam, faRectangleAd, faAd, faBookTanakh, faTanakh, faHotTubPerson, faHotTub, faFileHalfDashed, faOutdent, faDedent, faHandPeace, faHeadSideVirus, faCompass, faPenNib, faTentArrowsDown, faForwardFast, faFastForward, faCrop, faWhiskeyGlass, faGlassWhiskey, faSquare, faFaceGrin, faGrin, faFileContract, faAngleUp, faFaceSmile, faSmile, faPersonDressBurst, faDivide, faCodeFork, faHouseFlag, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faRug, faCodeMerge, faHouseTsunami, faMagnifyingGlassChart, faUmbrella, faHillRockslide, faUserSecret, faPager, faBriefcase, faTrowelBricks, faSocks, faT, faMicrochip, faTruckMedical, faAmbulance, faOm, faMosquitoNet, faPrescriptionBottle, faUsersGear, faUsersCog, faRoadCircleExclamation, faPause, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faPiggyBank, faMonument, faAnglesRight, faAngleDoubleRight, faDesktop, faDesktopAlt, faPlaneCircleXmark, faRetweet, faUserGear, faUserCog, faBorderAll, faCoins, faMarsStroke, faHandshakeAngle, faHandsHelping, faArrowDown, faLocationDot, faMapMarkerAlt, faPlugCircleExclamation, faCookieBite, faScrewdriverWrench, faTools, faIndent, faBars, faNavicon, faHandsPraying, faPrayingHands, faViruses, faSchoolFlag, faTrademark, faFireBurner, faFaceSmileBeam, faSmileBeam, faTentArrowLeftRight, faRoute, faAnglesUp, faAngleDoubleUp, faBucket, faLessThanEqual, faFolderClosed, faPersonThroughWindow, faSchoolLock, faPersonBurst, faLeftLong, faLongArrowAltLeft, faLocationCrosshairs, faLocation, faPersonDotsFromLine, faDiagnoses, faGaugeSimpleHigh, faTachometer, faTachometerFast, faAnglesLeft, faAngleDoubleLeft, faUpDown, faArrowsAltV, faBatteryEmpty, faBattery0, faKeyboard, faCookie, faStopwatch, faEject, faSatelliteDish, faFaceRollingEyes, faMehRollingEyes, faListCheck, faTasks, faSackXmark, faHashtag, faTrain, faGamepad, faFileExport, faArrowRightFromFile, faFaceGrimace, faGrimace, faTrainSubway, faSubway, faCircleDot, faDotCircle, faObjectGroup, faShip, faC, faSquarePhone, faPhoneSquare, faRulerCombined, faArrowsRotate, faRefresh, faSync, faPersonDress, faFemale, faBookOpen, faFolderTree, faVirgo, faBoxArchive, faArchive, faTentArrowDownToLine, faQrcode, faDragon, faHourglassEnd, faHourglass3, faGrip, faGridHorizontal, faGripHorizontal, faBorderTopLeft, faBorderStyle, faListUl, faListDots, faPeopleRobbery, faMobileButton, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBill, faCircleMinus, faMinusCircle, faArrowPointer, faMousePointer, faSquareShareNodes, faShareAltSquare, faTableCellsLarge, faThLarge, faCat, faCalendarWeek, faCodeCompare, faLeo, faRoadCircleXmark, faPallet, faCakeCandles, faBirthdayCake, faCake, faBugSlash, faTarp, faDiagramPredecessor, faFaceFlushed, faFlushed, faDiagramNext, faAnchorCircleXmark, faPersonCircleXmark, faSpa, faAries, faBarsProgress, faTasksAlt, faHeartCircleCheck, faMarsStrokeRight, faMarsStrokeH, faTowerObservation, faSterlingSign, faGbp, faPoundSign, faFaucetDrip, faCircleInfo, faInfoCircle, faFeather, faBowlRice, faStarHalfStroke, faStarHalfAlt, faTemperatureArrowDown, faTemperatureDown, faMaskVentilator, faFileVideo, faArrowTrendDown, faOilCan, faPeopleCarryBox, faPeopleCarry, faChair, faWind, faLayerGroup, faHeadSideMask, faHands, faSignLanguage, faSigning, faTablets, faWeightHanging, faDice, faShopSlash, faStoreAltSlash, faSortDown, faSortDesc, faPesetaSign, faTabletScreenButton, faTabletAlt, faHandHoldingDollar, faHandHoldingUsd, faShield, faShieldBlank, faFaceLaugh, faLaugh, faHandsHolding, faCartShopping, faShoppingCart, faOctagon, faHandPointer, faRegistered, faHouseSignal, faBangladeshiTakaSign };\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Runtime implementation for the `Record.bind` platform function — reading an\n * `e3.record`'s current state and applying its typed mutations from East UI.\n *\n * Hybrid of the two existing patterns: the READ side (`read`/`status`) is\n * served from the shared dataset cache (a record IS a dataset at\n * `.records.<name>`, preloaded + polled by the manifest like any dataset), so\n * there is no parallel fetcher; the WRITE side (`mutate.<name>`) is a\n * Func-style launch/latest-wins channel. On a committed mutation the runtime\n * fires one `cache.refresh(ws)` so the record's bytes are re-fetched and\n * `read()` re-renders, and drops the history cache so the next `history()`\n * refetches.\n *\n * All handles bound to the same record in the same workspace share one mutation\n * channel (mutations serialize server-side under compare-and-swap). Mutation\n * signatures are validated against the deployed record's describe output.\n *\n * @packageDocumentation\n */\n\nimport {\n    variant,\n    some,\n    none,\n    encodeBeast2For,\n    decodeBeast2For,\n    equalFor,\n    toEastTypeValue,\n    type EastType,\n    type EastTypeValue,\n    type ValueTypeOf,\n} from \"@elaraai/east\";\nimport { type PlatformFunction, EastTypeType } from \"@elaraai/east/internal\";\nimport { recordBindPlatformFn, type RecordErrorType } from \"@elaraai/e3-ui/internal\";\nimport {\n    workspaceRecordDescribe,\n    workspaceRecordMutate,\n    workspaceRecordHistory,\n    type RecordSignature,\n    type MutationResult,\n    type RecordHistoryResult,\n    type RecordCommitInfo,\n} from \"@elaraai/e3-api-client\";\nimport {\n    registerReactiveTracker,\n    registerPlatformImplementation,\n} from \"@elaraai/east-ui-components/platform\";\nimport { TrackedChannelStore } from \"./tracked-channel.js\";\nimport { trackDatasetPath } from \"./bind-runtime.js\";\nimport { datasetCacheKey, type ReactiveDatasetCacheInterface } from \"./dataset-store.js\";\nimport type { TreePath } from \"@elaraai/e3-types\";\n\n// =============================================================================\n// API seam — the narrow surface the runtime talks through for the WRITE side.\n// (The read side goes through the dataset cache, not this.) Tests stub it; the\n// showcase harness swaps in an in-memory implementation.\n// =============================================================================\n\n/** Request shape for {@link RecordApi.mutate} — beast2-encoded positional\n *  args (the extra reducer parameters, after the implicit state). */\nexport interface RecordMutateArgs {\n    args: Uint8Array[];\n}\n\n/**\n * Adapter for the workspace record endpoints. The default wraps\n * `@elaraai/e3-api-client`'s `workspaceRecordDescribe` /\n * `workspaceRecordMutate` / `workspaceRecordHistory`. `read()` does NOT go\n * through here — it reads the record's dataset bytes from the shared cache.\n */\nexport interface RecordApi {\n    /** Describe a record's mutations (name + extra arg types), for validation. */\n    describe(workspace: string, record: string): Promise<RecordSignature>;\n    /** Apply a mutation synchronously, returning its terminal MutationResult. */\n    mutate(workspace: string, record: string, mutation: string, req: RecordMutateArgs): Promise<MutationResult>;\n    /** Read a record's commit chain (newest first). */\n    history(workspace: string, record: string, limit: number | undefined, from?: string): Promise<RecordHistoryResult>;\n}\n\n/**\n * Build the default {@link RecordApi} that talks to a real e3 server via\n * `@elaraai/e3-api-client`.\n */\nexport function createDefaultRecordApi(\n    apiUrl: string,\n    repo: string,\n    getToken: () => string | null,\n): RecordApi {\n    const opts = (): { token: string | null } => ({ token: getToken() });\n    return {\n        async describe(workspace, record) {\n            return workspaceRecordDescribe(apiUrl, repo, workspace, record, opts());\n        },\n        async mutate(workspace, record, mutation, req) {\n            return workspaceRecordMutate(apiUrl, repo, workspace, record, mutation, {\n                args: req.args,\n                actor: none,\n                limits: none,\n            }, opts());\n        },\n        async history(workspace, record, limit, from) {\n            return workspaceRecordHistory(apiUrl, repo, workspace, record, limit, opts(), from);\n        },\n    };\n}\n\n// =============================================================================\n// Value-level helpers\n// =============================================================================\n\ntype RecordError = ValueTypeOf<RecordErrorType>;\ntype RecordMutateTag = \"idle\" | \"running\" | \"committed\" | \"failed\" | \"cancelled\";\ntype CommitInfo = RecordCommitInfo;\n\nconst eastTypeEqual = equalFor(EastTypeType) as (a: EastTypeValue, b: EastTypeValue) => boolean;\n\n/** A handle's signature, recovered from the instantiated handle type. */\ninterface RecordHandleSignature {\n    readonly stateType: EastTypeValue;\n    readonly mutations: ReadonlyMap<string, EastTypeValue[]>;\n}\n\n/** Reserved (non-mutation) field names inside the handle's `mutate` struct. */\nconst RESERVED_MUTATE_FIELDS = new Set([\"pending\", \"status\", \"error\", \"cancel\"]);\n\n/**\n * Introspect the instantiated handle struct type `H`: the state type comes\n * from the `read` field's FunctionType output, and the mutation names + arg\n * types come from the `mutate` sub-struct's non-reserved FunctionType fields.\n * The handle's shape IS the signature — there are no duplicate signature\n * arguments to drift out of sync.\n */\nexport function signatureOfRecordHandleType(handleType: EastTypeValue): RecordHandleSignature {\n    if (handleType.type !== \"Struct\") {\n        throw new Error(`Record.bind: handle type must be a Struct; got ${handleType.type}`);\n    }\n    const fields = handleType.value as { name: string; type: EastTypeValue }[];\n    const read = fields.find(f => f.name === \"read\")?.type;\n    const mutate = fields.find(f => f.name === \"mutate\")?.type;\n    if (read?.type !== \"Function\") {\n        throw new Error(\"Record.bind: handle type is missing its read closure\");\n    }\n    if (mutate?.type !== \"Struct\") {\n        throw new Error(\"Record.bind: handle type is missing its mutate struct\");\n    }\n    const stateType = (read.value as { output: EastTypeValue }).output;\n    const mutations = new Map<string, EastTypeValue[]>();\n    for (const field of mutate.value as { name: string; type: EastTypeValue }[]) {\n        if (RESERVED_MUTATE_FIELDS.has(field.name)) continue;\n        if (field.type.type !== \"Function\") {\n            throw new Error(`Record.bind: mutate field \"${field.name}\" must be a closure`);\n        }\n        mutations.set(field.name, (field.type.value as { inputs: EastTypeValue[] }).inputs);\n    }\n    return { stateType, mutations };\n}\n\n/** Map a MutationResult's non-committed outcome onto a RecordError value. */\nfunction errorOfMutationResult(result: MutationResult): RecordError {\n    const outcome = result.outcome;\n    switch (outcome.type) {\n        case \"invalid\":\n            return { kind: variant(\"invalid\", { message: outcome.value.message }), message: outcome.value.message, stderr: \"\" };\n        case \"failed\":\n            return {\n                kind: variant(\"failed\", { exitCode: outcome.value.exitCode }),\n                message: `reducer exited with code ${outcome.value.exitCode}`,\n                stderr: outcome.value.stderr,\n            };\n        case \"too_large\":\n            return {\n                kind: variant(\"too_large\", { bytes: outcome.value.bytes, limit: outcome.value.limit }),\n                message: `new state too large (${outcome.value.bytes} bytes, limit ${outcome.value.limit})`,\n                stderr: outcome.value.stderr,\n            };\n        case \"timed_out\":\n            return {\n                kind: variant(\"timed_out\", { ms: outcome.value.ms }),\n                message: `mutation timed out after ${outcome.value.ms}ms (server deadline)`,\n                stderr: outcome.value.stderr,\n            };\n        case \"conflict\":\n            return {\n                kind: variant(\"conflict\", { attempts: outcome.value.attempts }),\n                message: `compare-and-swap conflicted after ${outcome.value.attempts} attempts; try again`,\n                stderr: \"\",\n            };\n        default:\n            return transportError(`unexpected outcome \"${(outcome as { type: string }).type}\"`);\n    }\n}\n\nfunction transportError(message: string): RecordError {\n    return { kind: variant(\"transport\", { message }), message, stderr: \"\" };\n}\n\n/** The dataset path a record's current value lives at. */\nfunction recordPath(name: string): TreePath {\n    return [variant(\"field\", \"records\"), variant(\"field\", name)];\n}\n\n/** Tracked mutation-channel key (one per record). */\nexport function recordChannelKey(workspace: string, name: string): string {\n    return `record:${workspace}:${name}`;\n}\n\n// =============================================================================\n// Runtime\n// =============================================================================\n\n/** One tracked mutation channel per `(workspace, record)`. */\ninterface RecordEntry {\n    status: RecordMutateTag;\n    /** Monotonic; a settling mutation whose seq is no longer current is\n     *  discarded (latest-wins, and `cancel` orphans by bumping it). */\n    launchSeq: number;\n    /** Detail of the last `failed` mutation. */\n    error?: RecordError;\n    /** The settle promise of the in-flight mutation, if one is running. `start()`\n     *  awaits it so a commit lands before the dataflow run reads the record. */\n    inflight?: Promise<void>;\n}\n\n/**\n * Encapsulates all `Record.bind` runtime state. The module-level\n * {@link defaultRecordRuntime} instance backs the registered platform; tests\n * construct their own for isolation.\n */\nexport class RecordRuntime extends TrackedChannelStore<RecordEntry> {\n    private api: RecordApi | null = null;\n    private cache: ReactiveDatasetCacheInterface | null = null;\n    private workspace: string | null = null;\n\n    // Describe signatures, fetched once per (workspace, record), failures evicted.\n    private readonly signatureCache = new Map<string, Promise<RecordSignature>>();\n    // History per channel, fetched once + refreshed on commit.\n    private readonly histories = new Map<string, CommitInfo[]>();\n    private readonly historyInFlight = new Set<string>();\n    // Channels whose last history fetch failed. Guards `history()` from\n    // re-issuing the request on every render (a failing endpoint would\n    // otherwise spin); cleared on the next commit / on clear() so a later\n    // mutation retries.\n    private readonly historyFailed = new Set<string>();\n\n    protected createEntry(): RecordEntry {\n        return { status: \"idle\", launchSeq: 0 };\n    }\n\n    // ----- wiring ----------------------------------------------------------\n\n    /** Install the API adapter + dataset cache + workspace — called by the\n     *  React provider (or a test/showcase harness) before any handle is used. */\n    initialize(api: RecordApi, cache: ReactiveDatasetCacheInterface, workspace: string): void {\n        this.api = api;\n        this.cache = cache;\n        this.workspace = workspace;\n    }\n\n    /** Tear down the adapter and all record state. */\n    clear(): void {\n        this.api = null;\n        this.cache = null;\n        this.workspace = null;\n        this.clearChannels();\n        this.signatureCache.clear();\n        this.histories.clear();\n        this.historyInFlight.clear();\n        this.historyFailed.clear();\n    }\n\n    private resolveWorkspace(): string {\n        if (!this.workspace) {\n            throw new Error(\"Record.bind: no workspace configured — mount a provider (or call initializeRecordApi) first\");\n        }\n        return this.workspace;\n    }\n\n    /** The deployed describe signature for a record (fetched once, evicted on failure). */\n    private signature(workspace: string, record: string): Promise<RecordSignature> {\n        const sigKey = `${workspace}:${record}`;\n        let promise = this.signatureCache.get(sigKey);\n        if (!promise) {\n            const api = this.api;\n            if (!api) return Promise.reject(new Error(\"Record.bind: no RecordApi installed\"));\n            promise = api.describe(workspace, record).catch(err => {\n                this.signatureCache.delete(sigKey);\n                throw err;\n            });\n            this.signatureCache.set(sigKey, promise);\n        }\n        return promise;\n    }\n\n    /** Validate a mutation's declared arg types against the deployed signature. */\n    private async validate(workspace: string, record: string, mutation: string, argTypes: EastTypeValue[]): Promise<RecordError | null> {\n        let sig: RecordSignature;\n        try {\n            sig = await this.signature(workspace, record);\n        } catch (err) {\n            return transportError(`failed to describe record \"${record}\": ${err instanceof Error ? err.message : String(err)}`);\n        }\n        const deployed = sig.mutations.find(m => m.name === mutation);\n        if (!deployed) {\n            const message = `no mutation \"${mutation}\" on record \"${record}\" in the deployed package`;\n            return { kind: variant(\"invalid\", { message }), message, stderr: \"\" };\n        }\n        const argsMatch = deployed.argTypes.length === argTypes.length\n            && deployed.argTypes.every((t, i) => eastTypeEqual(t as EastTypeValue, argTypes[i]!));\n        if (!argsMatch) {\n            const message = `signature mismatch for mutation \"${mutation}\": bound (${argTypes.length} args) disagrees with the deployed package`;\n            return { kind: variant(\"invalid\", { message }), message, stderr: \"\" };\n        }\n        return null;\n    }\n\n    /** Fetch a record's history once per channel (deduped); notify on settle. */\n    private fetchHistory(workspace: string, record: string, key: string): void {\n        if (this.historyInFlight.has(key)) return;\n        this.historyInFlight.add(key);\n        void (async () => {\n            const api = this.api;\n            try {\n                if (!api) throw new Error(\"no RecordApi installed\");\n                const result = await api.history(workspace, record, undefined);\n                this.histories.set(key, result.commits);\n                this.historyFailed.delete(key);\n            } catch {\n                // Mark failed so `history()` stops re-issuing on every render;\n                // a later commit / clear() drops this and retries.\n                this.historyFailed.add(key);\n            } finally {\n                this.historyInFlight.delete(key);\n                this.notify(key);\n            }\n        })();\n    }\n\n    // ----- closure semantics -------------------------------------------------\n\n    private launchMutation(workspace: string, record: string, mutation: string, argTypes: EastTypeValue[], args: unknown[]): void {\n        const key = recordChannelKey(workspace, record);\n        const { entry, settle } = this.beginLaunch(key, e => { delete e.error; });\n\n        const run = (async () => {\n            const invalid = await this.validate(workspace, record, mutation, argTypes);\n            if (invalid) {\n                settle(e => { e.status = \"failed\"; e.error = invalid; });\n                return;\n            }\n            const api = this.api;\n            if (!api) {\n                settle(e => { e.status = \"failed\"; e.error = transportError(\"no RecordApi installed\"); });\n                return;\n            }\n            let result: MutationResult;\n            try {\n                const encoded = args.map((arg, i) => encodeBeast2For(argTypes[i]!)(arg));\n                result = await api.mutate(workspace, record, mutation, { args: encoded });\n            } catch (err) {\n                settle(e => { e.status = \"failed\"; e.error = transportError(err instanceof Error ? err.message : String(err)); });\n                return;\n            }\n            if (result.outcome.type === \"committed\") {\n                settle(e => { e.status = \"committed\"; delete e.error; });\n                // The record ref's commit hash moved — force one workspace poll so\n                // the dataset cache refetches the record's bytes and read() re-renders.\n                // Reuses the standing poller the manifest installed; no new poller.\n                void this.cache?.refresh(workspace);\n                // History grew — drop the cache (and any failed-fetch flag) so\n                // the next history() refetches.\n                this.histories.delete(key);\n                this.historyFailed.delete(key);\n                this.notify(key);\n            } else {\n                settle(e => { e.status = \"failed\"; e.error = errorOfMutationResult(result); });\n            }\n        })();\n        entry.inflight = run;\n        void run.finally(() => {\n            const current = this.entries.get(key);\n            if (current && current.inflight === run) delete current.inflight;\n        });\n    }\n\n    /** Build the handle value for one `Record.bind` platform evaluation. */\n    buildHandle(handleType: EastTypeValue, name: string): Record<string, unknown> {\n        const sig = signatureOfRecordHandleType(handleType);\n        const decodeState = decodeBeast2For(sig.stateType);\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        const runtime = this;\n        const path = recordPath(name);\n\n        const requireCache = (): ReactiveDatasetCacheInterface => {\n            if (!runtime.cache) {\n                throw new Error(\"Record.bind: no dataset cache configured — mount a provider first\");\n            }\n            return runtime.cache;\n        };\n\n        const mutate: Record<string, unknown> = {\n            pending: () => {\n                const ws = runtime.resolveWorkspace();\n                const key = recordChannelKey(ws, name);\n                runtime.track(key);\n                return runtime.entry(key).status === \"running\";\n            },\n            status: () => {\n                const ws = runtime.resolveWorkspace();\n                const key = recordChannelKey(ws, name);\n                runtime.track(key);\n                return variant(runtime.entry(key).status, null);\n            },\n            error: () => {\n                const ws = runtime.resolveWorkspace();\n                const key = recordChannelKey(ws, name);\n                runtime.track(key);\n                const entry = runtime.entry(key);\n                return entry.status === \"failed\" && entry.error !== undefined\n                    ? some(entry.error)\n                    : none;\n            },\n            cancel: () => {\n                const ws = runtime.resolveWorkspace();\n                // Drop the error + in-flight handle on cancel so a later start()\n                // doesn't wait on the mutation the user just cancelled.\n                runtime.cancelChannel(recordChannelKey(ws, name), e => {\n                    delete e.error;\n                    delete e.inflight;\n                });\n                return null;\n            },\n        };\n        for (const [mutationName, argTypes] of sig.mutations) {\n            mutate[mutationName] = (...args: unknown[]) => {\n                runtime.launchMutation(runtime.resolveWorkspace(), name, mutationName, argTypes, args);\n                return null;\n            };\n        }\n\n        return {\n            read: () => {\n                const ws = runtime.resolveWorkspace();\n                trackDatasetPath(ws, path);\n                const bytes = requireCache().read(ws, path);\n                if (bytes === undefined) {\n                    throw new Error(`Record.bind: record state not loaded: ${datasetCacheKey(ws, path)} (it should be preloaded via the UI task manifest)`);\n                }\n                return decodeState(bytes);\n            },\n            status: () => {\n                const ws = runtime.resolveWorkspace();\n                trackDatasetPath(ws, path);\n                return requireCache().getStatus(ws, path);\n            },\n            history: () => {\n                const ws = runtime.resolveWorkspace();\n                const key = recordChannelKey(ws, name);\n                runtime.track(key);\n                const cached = runtime.histories.get(key);\n                if (cached === undefined) {\n                    // Don't re-issue while a prior fetch is known to have failed\n                    // (a commit / clear() clears the flag and retries).\n                    if (!runtime.historyFailed.has(key)) runtime.fetchHistory(ws, name, key);\n                    return none;\n                }\n                return some(cached);\n            },\n            mutate,\n            start: () => {\n                const ws = runtime.resolveWorkspace();\n                const cache = requireCache();\n                const inflight = runtime.entry(recordChannelKey(ws, name)).inflight;\n                // Drain any in-flight mutation first so the run reads the committed\n                // state, then launch. Launch failures surface via dataflow status.\n                void Promise.resolve(inflight)\n                    .catch(() => undefined)\n                    .then(() => cache.launchDataflow(ws))\n                    .catch(() => undefined);\n                return null;\n            },\n            binding: { name, mutations: [...sig.mutations.keys()] },\n        };\n    }\n\n    // ----- platform building -------------------------------------------------\n\n    /** Build a `Record.bind` PlatformFunction bound to this runtime. Pass\n     *  `allowed=null` for an unscoped impl; pass a Set of record names for\n     *  manifest scoping. */\n    buildPlatform(allowed: ReadonlySet<string> | null): PlatformFunction {\n        return recordBindPlatformFn.implement((handleType: EastTypeValue) =>\n            (nameArg: unknown) => {\n                const name = nameArg as string;\n                if (allowed && !allowed.has(name)) {\n                    throw new Error(\n                        `Record.bind: record \"${name}\" is not in this UI task's manifest — ` +\n                        `bind it in the task body so derivation records it`,\n                    );\n                }\n                return this.buildHandle(handleType, name);\n            },\n        );\n    }\n}\n\n// =============================================================================\n// Default process-global runtime + free-function exports.\n// =============================================================================\n\n/** Process-global runtime backing the `RecordPlatform` export. */\nexport const defaultRecordRuntime = new RecordRuntime();\n\n/** Install the record API adapter + dataset cache + workspace — called by the\n *  React provider on mount (or by a test/showcase harness). */\nexport function initializeRecordApi(api: RecordApi, cache: ReactiveDatasetCacheInterface, workspace: string): void {\n    defaultRecordRuntime.initialize(api, cache, workspace);\n}\n\n/** Tear down the record API adapter and all record state. */\nexport function clearRecordApi(): void {\n    defaultRecordRuntime.clear();\n}\n\n/** Global, manifest-unscoped `Record.bind` impl. Registered on module load. */\nexport const RecordPlatform: PlatformFunction[] = [defaultRecordRuntime.buildPlatform(null)];\n\n/** Build a manifest-scoped `Record.bind` implementation. */\nexport function createScopedRecordPlatform(records: readonly string[]): PlatformFunction[] {\n    return [defaultRecordRuntime.buildPlatform(new Set(records))];\n}\n\n// =============================================================================\n// In-memory RecordApi — offline harnesses (showcase, snapshots, tests) register\n// deterministic implementations; `mutate` writes the new state straight into\n// the dataset cache (so `read()` re-renders offline without a poller) and\n// appends a synthetic commit.\n// =============================================================================\n\n/** One offline record implementation for {@link createInMemoryRecordApi}. */\nexport interface InMemoryRecordDef {\n    /** Record name (what `Record.bind` is bound to). */\n    name: string;\n    /** The record's state type. */\n    stateType: EastType | EastTypeValue;\n    /** Initial state value (seeds the dataset cache). */\n    initial: unknown;\n    /** Mutations — each a reducer over the decoded state + decoded args. */\n    mutations: {\n        name: string;\n        argTypes: (EastType | EastTypeValue)[];\n        reduce: (state: unknown, ...args: unknown[]) => unknown;\n    }[];\n}\n\n/**\n * Build an offline {@link RecordApi} from local implementations — the\n * showcase/snapshot harnesses' stand-in for a deployed record. Seeds each\n * record's current value into the dataset cache so `read()` works offline.\n */\nexport function createInMemoryRecordApi(\n    cache: ReactiveDatasetCacheInterface,\n    workspace: string,\n    defs: InMemoryRecordDef[],\n): RecordApi {\n    interface Compiled {\n        stateType: EastTypeValue;\n        mutations: Map<string, { argTypes: EastTypeValue[]; reduce: (state: unknown, ...args: unknown[]) => unknown }>;\n        commits: CommitInfo[];\n        seq: number;\n    }\n    const compiled = new Map<string, Compiled>();\n    for (const def of defs) {\n        const stateType = toEastTypeValue(def.stateType as EastType);\n        const mutations = new Map<string, { argTypes: EastTypeValue[]; reduce: (state: unknown, ...args: unknown[]) => unknown }>();\n        for (const m of def.mutations) {\n            mutations.set(m.name, { argTypes: m.argTypes.map(t => toEastTypeValue(t as EastType)), reduce: m.reduce });\n        }\n        const genesis: CommitInfo = {\n            hash: `${def.name}-0`.padEnd(64, \"0\"),\n            parent: none,\n            state: `${def.name}-state-0`.padEnd(64, \"0\"),\n            mutation: \"$init\",\n            actor: \"memory\",\n            at: new Date(0),\n        };\n        compiled.set(def.name, { stateType, mutations, commits: [genesis], seq: 0 });\n        // Seed the record's current value into the dataset cache.\n        void cache.write(workspace, recordPath(def.name), encodeBeast2For(stateType)(def.initial));\n    }\n\n    return {\n        async describe(_ws, record) {\n            const c = compiled.get(record);\n            if (!c) throw new Error(`no in-memory record \"${record}\"`);\n            return {\n                name: record,\n                mutations: [...c.mutations].map(([name, m]) => ({ name, argTypes: m.argTypes })),\n            } as unknown as RecordSignature;\n        },\n        async mutate(ws, record, mutation, req) {\n            const c = compiled.get(record);\n            if (!c) throw new Error(`no in-memory record \"${record}\"`);\n            const m = c.mutations.get(mutation);\n            if (!m) return { outcome: variant(\"invalid\", { message: `no mutation \"${mutation}\"` }) } as MutationResult;\n            const current = cache.read(ws, recordPath(record));\n            const state = current !== undefined ? decodeBeast2For(c.stateType)(current) : undefined;\n            const args = req.args.map((bytes, i) => decodeBeast2For(m.argTypes[i]!)(bytes));\n            const next = m.reduce(state, ...args);\n            await cache.write(ws, recordPath(record), encodeBeast2For(c.stateType)(next));\n            c.seq += 1;\n            const hash = `${record}-${c.seq}`.padEnd(64, \"0\");\n            c.commits.unshift({\n                hash,\n                parent: some(c.commits[0]!.hash),\n                state: `${record}-state-${c.seq}`.padEnd(64, \"0\"),\n                mutation,\n                actor: \"memory\",\n                at: new Date(0),\n            });\n            return { outcome: variant(\"committed\", { commitHash: hash, stateHash: `${record}-state-${c.seq}`.padEnd(64, \"0\") }) } as MutationResult;\n        },\n        async history(_ws, record, limit) {\n            const c = compiled.get(record);\n            if (!c) throw new Error(`no in-memory record \"${record}\"`);\n            const commits = limit !== undefined ? c.commits.slice(0, limit) : c.commits;\n            return { commits } as RecordHistoryResult;\n        },\n    };\n}\n\n// =============================================================================\n// Module-load registrations — wire the default runtime into east-ui hooks.\n// Tests with their own `RecordRuntime` don't use these.\n// =============================================================================\n\nregisterReactiveTracker({\n    id: \"record-bind\",\n    enableTracking: () => defaultRecordRuntime.enableTracking(),\n    disableTracking: () => defaultRecordRuntime.disableTracking(),\n    getStore: () => ({\n        subscribe: (key, cb) => defaultRecordRuntime.subscribe(key, cb),\n        getKeyVersion: (key) => defaultRecordRuntime.getKeyVersion(key),\n    }),\n});\n\nregisterPlatformImplementation(RecordPlatform);\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `<E3Provider>` — top-level React provider for e3 server identity and\n * auth.\n *\n * @remarks\n * Server identity (`apiUrl`, `repo`, `workspace`, `token`) is shared\n * across every e3-talking surface in this package — the dataset cache,\n * task-detail queries, status polls, list endpoints, etc. It therefore\n * lives in a single context here, not threaded through individual\n * stores or read out of the dataset cache as a side effect of\n * construction.\n *\n * `<E3Provider>` also owns the `<QueryClientProvider>` wrap so the\n * package's TanStack-Query-backed hooks (`useTaskDetails`,\n * `useDatasetValue`, etc.) work without callers having to mount\n * TanStack themselves.\n *\n * Mount once near the React root. Inner providers (notably\n * `<ReactiveDatasetProvider>`) read this context to construct their\n * adapters; consumers like `<UITaskPreview>` read it directly to wire\n * their own queries.\n *\n * @packageDocumentation\n */\n\nimport { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\n/**\n * Server identity + auth for an e3 React tree.\n *\n * @property apiUrl - Base URL of the e3 API server.\n * @property repo - Repository name. Defaults to `\"default\"` when omitted.\n * @property workspace - Active workspace. Optional at the provider\n *  level — components that strictly require one (e.g. `<UITaskPreview>`,\n *  `Data.bind`) surface their own error if it's missing.\n * @property token - Optional bearer token for authenticated requests.\n *  May be `null` for \"anonymous.\" Rotates freely — every call re-reads.\n */\nexport interface E3Config {\n    apiUrl: string;\n    repo?: string;\n    workspace?: string;\n    token?: string | null;\n}\n\nconst E3ConfigContext = createContext<E3Config | null>(null);\n\n/**\n * Props for {@link E3Provider}.\n *\n * @property children - Subtree that should see this config.\n * @property config - The {@link E3Config} to expose.\n * @property queryClient - Optional external `QueryClient`. One is\n *  created if omitted; pass an external instance to share a TanStack\n *  cache with the rest of your application.\n */\nexport interface E3ProviderProps {\n    children: ReactNode;\n    config: E3Config;\n    queryClient?: QueryClient;\n}\n\n/**\n * Provide e3 server identity + auth + a TanStack-Query client to a\n * React subtree.\n *\n * @example\n * ```tsx\n * <E3Provider config={{ apiUrl: \"http://localhost:3000\", workspace: \"prod\", token }}>\n *     <ReactiveDatasetProvider>\n *         <App />\n *     </ReactiveDatasetProvider>\n * </E3Provider>\n * ```\n */\nexport function E3Provider({ children, config, queryClient: externalClient }: E3ProviderProps) {\n    const client = useMemo(\n        () => externalClient ?? new QueryClient({\n            defaultOptions: { queries: { retry: 2, staleTime: 30000 } },\n        }),\n        [externalClient],\n    );\n    return (\n        <E3ConfigContext.Provider value={config}>\n            <QueryClientProvider client={client}>\n                {children}\n            </QueryClientProvider>\n        </E3ConfigContext.Provider>\n    );\n}\n\n/**\n * Read the active {@link E3Config}. Throws if no `<E3Provider>` is\n * mounted — every component that talks to e3 needs one.\n */\nexport function useE3Config(): E3Config {\n    const cfg = useContext(E3ConfigContext);\n    if (!cfg) {\n        throw new Error(\n            \"useE3Config must be used within an <E3Provider>. \" +\n            \"Mount one near your React root with apiUrl / workspace / token.\",\n        );\n    }\n    return cfg;\n}\n\n/**\n * Read the active {@link E3Config}, or `null` if no provider is\n * mounted. Use this when a component should degrade gracefully\n * (e.g. an empty state) rather than throwing.\n */\nexport function useE3ConfigOptional(): E3Config | null {\n    return useContext(E3ConfigContext);\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * React hooks and provider for ReactiveDataset platform functions.\n *\n * @packageDocumentation\n */\n\nimport {\n    createContext,\n    useContext,\n    useEffect,\n    useMemo,\n    useCallback,\n    useState,\n    useRef,\n    useSyncExternalStore,\n    type ReactNode,\n} from \"react\";\nimport type { TreePath } from \"@elaraai/e3-types\";\nimport {\n    ReactiveDatasetCache,\n    type ReactiveDatasetCacheInterface,\n    createDefaultDatasetApi,\n    datasetCacheKey,\n} from \"./dataset-store.js\";\nimport {\n    initializeReactiveDatasetCache,\n    clearReactiveDatasetCache,\n    clearBindingRegistry,\n} from \"./bind-runtime.js\";\nimport {\n    createDefaultFunctionApi,\n    initializeFunctionApi,\n    clearFunctionApi,\n} from \"./func-runtime.js\";\nimport {\n    createDefaultRecordApi,\n    initializeRecordApi,\n    clearRecordApi,\n} from \"./record-runtime.js\";\nimport { useE3Config } from \"./e3-config.js\";\n\n// =============================================================================\n// Context\n// =============================================================================\n\nconst ReactiveDatasetCacheContext = createContext<ReactiveDatasetCacheInterface | null>(null);\n\n/**\n * Props for {@link ReactiveDatasetProvider}.\n *\n * @property children - Subtree that should see the dataset cache.\n */\nexport interface ReactiveDatasetProviderProps {\n    children: ReactNode;\n}\n\n/**\n * Provide a {@link ReactiveDatasetCache} to the component tree.\n *\n * @remarks\n * Reads server identity from the surrounding `<E3Provider>` to build a\n * default {@link DatasetApi} adapter, then constructs a workspace-scoped\n * cache. Configures the cache's scheduler to use `queueMicrotask` so\n * cache notifications never fire during a React render pass.\n *\n * Must be mounted inside an `<E3Provider>` (which also owns the\n * `<QueryClientProvider>` wrap that this package's TanStack hooks\n * depend on). Throws otherwise.\n *\n * @example\n * ```tsx\n * <E3Provider config={{ apiUrl: \"http://localhost:3000\", workspace: \"prod\", token }}>\n *     <ReactiveDatasetProvider>\n *         <MyComponent />\n *     </ReactiveDatasetProvider>\n * </E3Provider>\n * ```\n */\nexport function ReactiveDatasetProvider({\n    children,\n}: ReactiveDatasetProviderProps) {\n    const e3 = useE3Config();\n\n    // Build the network adapter from E3 context. `getToken` is a getter\n    // (not a snapshot) so token rotation in the surrounding context\n    // propagates without rebuilding the cache.\n    const tokenRef = useRef<string | null>(e3.token ?? null);\n    tokenRef.current = e3.token ?? null;\n    const api = useMemo(\n        () => createDefaultDatasetApi(e3.apiUrl, e3.repo ?? \"default\", () => tokenRef.current),\n        [e3.apiUrl, e3.repo],\n    );\n\n    const cache = useMemo(() => {\n        const cfg: { workspace?: string } = {};\n        if (e3.workspace !== undefined) cfg.workspace = e3.workspace;\n        return new ReactiveDatasetCache(cfg, api);\n    }, [api, e3.workspace]);\n\n    // Render-time wiring: install the singleton cache + scheduler BEFORE\n    // children render so the East-side `Data.bind` impl finds the cache\n    // on its first read. The Data-tracker + platform implementation are\n    // registered once at module-load time inside bind-runtime.ts; there\n    // is nothing per-cache to register here.\n    useMemo(() => {\n        initializeReactiveDatasetCache(cache);\n        cache.setScheduler((notify) => queueMicrotask(notify));\n    }, [cache]);\n\n    // Same wiring for `Func.bind` — the function runtime shares the\n    // workspace scope and server identity with the dataset cache.\n    useMemo(() => {\n        if (e3.workspace !== undefined) {\n            initializeFunctionApi(\n                createDefaultFunctionApi(e3.apiUrl, e3.repo ?? \"default\", () => tokenRef.current),\n                e3.workspace,\n            );\n        }\n    }, [e3.apiUrl, e3.repo, e3.workspace]);\n\n    // Same wiring for `Record.bind` — the record runtime reads current values\n    // through the SAME dataset cache (a record is a dataset), and writes via the\n    // record endpoints.\n    useMemo(() => {\n        if (e3.workspace !== undefined) {\n            initializeRecordApi(\n                createDefaultRecordApi(e3.apiUrl, e3.repo ?? \"default\", () => tokenRef.current),\n                cache,\n                e3.workspace,\n            );\n        }\n    }, [e3.apiUrl, e3.repo, e3.workspace, cache]);\n\n    // Cleanup on cache change or unmount.\n    useEffect(() => {\n        return () => {\n            const ws = cache.getConfig().workspace;\n            // Order matters: drop the queued writes BEFORE destroying\n            // the cache. Otherwise a write that's already been dequeued\n            // and is mid-await would fire `cache.write` against a\n            // destroyed instance, leaking a network call against a\n            // workspace the user has navigated away from.\n            clearReactiveDatasetCache();\n            clearFunctionApi();\n            clearRecordApi();\n            cache.destroy();\n            // Drop binding-registry entries for this workspace so a long\n            // session navigating across workspaces doesn't leak metadata\n            // for paths it no longer consults.\n            if (ws) clearBindingRegistry(ws);\n            else clearBindingRegistry();\n        };\n    }, [cache]);\n\n    // Expose cache for debugging\n    useEffect(() => {\n        if (typeof window !== \"undefined\") {\n            (window as unknown as Record<string, unknown>).__EAST_REACTIVE_DATASET_CACHE__ = cache;\n        }\n        return () => {\n            if (typeof window !== \"undefined\") {\n                delete (window as unknown as Record<string, unknown>).__EAST_REACTIVE_DATASET_CACHE__;\n            }\n        };\n    }, [cache]);\n\n    return (\n        <ReactiveDatasetCacheContext.Provider value={cache}>\n            {children}\n        </ReactiveDatasetCacheContext.Provider>\n    );\n}\n\n// =============================================================================\n// Hooks\n// =============================================================================\n\n/**\n * Hook to access the ReactiveDatasetCache from context.\n *\n * @returns The ReactiveDatasetCache instance\n * @throws Error if used outside of a ReactiveDatasetProvider\n */\nexport function useReactiveDatasetCache(): ReactiveDatasetCacheInterface {\n    const cache = useContext(ReactiveDatasetCacheContext);\n    if (!cache) {\n        throw new Error(\"useReactiveDatasetCache must be used within a ReactiveDatasetProvider\");\n    }\n    return cache;\n}\n\n/**\n * Like {@link useReactiveDatasetCache} but returns `null` instead of throwing\n * when used outside a `<ReactiveDatasetProvider>`. Use this when a component\n * has a graceful fallback (e.g. accepts an explicit config prop too).\n */\nexport function useReactiveDatasetCacheOptional(): ReactiveDatasetCacheInterface | null {\n    return useContext(ReactiveDatasetCacheContext);\n}\n\n/**\n * Hook to subscribe to reactive dataset cache changes using React 18's useSyncExternalStore.\n *\n * @returns The current snapshot version\n */\nexport function useReactiveDatasetCacheSubscription(): number {\n    const cache = useReactiveDatasetCache();\n    const subscribe = useCallback((cb: () => void) => cache.subscribe(cb), [cache]);\n    const getSnapshot = useCallback(() => cache.getSnapshot(), [cache]);\n\n    return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/**\n * Hook to subscribe to a specific reactive dataset key.\n *\n * @param workspace - The workspace name\n * @param path - The dataset path\n * @returns The cached value, or undefined if not loaded\n */\nexport function useReactiveDatasetKey(workspace: string, path: TreePath): Uint8Array | undefined {\n    const cache = useReactiveDatasetCache();\n    const key = datasetCacheKey(workspace, path);\n\n    const subscribe = useCallback(\n        (cb: () => void) => cache.subscribe(key, cb),\n        [cache, key]\n    );\n    const getSnapshot = useCallback(\n        () => cache.read(workspace, path),\n        [cache, workspace, path]\n    );\n\n    return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/**\n * Reactive dataset to preload.\n */\nexport interface ReactiveDatasetToPreload {\n    workspace: string;\n    path: TreePath;\n}\n\n/**\n * Result of usePreloadReactiveDatasets hook.\n */\nexport interface PreloadReactiveDatasetsResult {\n    /** True while preloading */\n    loading: boolean;\n    /** Error if preloading failed */\n    error: Error | null;\n    /** Reload all datasets */\n    reload: () => void;\n}\n\n/**\n * Hook to preload reactive datasets before rendering.\n *\n * @param datasets - Array of datasets to preload\n * @returns Loading state and error\n *\n * @example\n * ```tsx\n * import { variant } from \"@elaraai/east\";\n *\n * function MyComponent() {\n *     const { loading, error } = usePreloadReactiveDatasets([\n *         { workspace: \"production\", path: [variant(\"field\", \"inputs\"), variant(\"field\", \"config\")] },\n *         { workspace: \"production\", path: [variant(\"field\", \"data\")] },\n *     ]);\n *\n *     if (loading) return <Spinner />;\n *     if (error) return <ErrorMessage error={error} />;\n *\n *     return <EastComponent render={myApp} />;\n * }\n * ```\n */\nexport function usePreloadReactiveDatasets(datasets: ReactiveDatasetToPreload[]): PreloadReactiveDatasetsResult {\n    const cache = useReactiveDatasetCacheOptional();\n    const [loading, setLoading] = useState(!!cache && datasets.length > 0);\n    const [error, setError] = useState<Error | null>(null);\n    const [reloadTrigger, setReloadTrigger] = useState(0);\n\n    // Create stable key for the datasets array\n    const datasetsKey = useMemo(\n        () => datasets.map(d => datasetCacheKey(d.workspace, d.path)).join(\"|\"),\n        [datasets]\n    );\n\n    useEffect(() => {\n        if (!cache) {\n            // No provider — nothing to preload. Component renders without\n            // populating the cache; downstream Data.bind reads will throw.\n            setLoading(false);\n            setError(null);\n            return;\n        }\n        let cancelled = false;\n        setLoading(true);\n        setError(null);\n\n        Promise.all(\n            datasets.map(({ workspace, path }) => cache.preload(workspace, path))\n        )\n            .then(() => {\n                if (!cancelled) {\n                    setLoading(false);\n                }\n            })\n            .catch((err) => {\n                if (!cancelled) {\n                    setError(err instanceof Error ? err : new Error(String(err)));\n                    setLoading(false);\n                }\n            });\n\n        return () => {\n            cancelled = true;\n        };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [cache, datasetsKey, reloadTrigger]);\n\n    const reload = useCallback(() => {\n        setReloadTrigger(t => t + 1);\n    }, []);\n\n    return { loading, error, reload };\n}\n\n/**\n * Props for the ReactiveDatasetLoader component.\n */\nexport interface ReactiveDatasetLoaderProps {\n    /** Datasets to preload */\n    datasets: ReactiveDatasetToPreload[];\n    /** Children to render when loaded */\n    children: ReactNode;\n    /** Loading fallback */\n    fallback?: ReactNode;\n    /** Error render function */\n    onError?: (error: Error, reload: () => void) => ReactNode;\n}\n\n/**\n * Component that preloads reactive datasets before rendering children.\n *\n * @example\n * ```tsx\n * import { variant } from \"@elaraai/east\";\n *\n * function App() {\n *     return (\n *         <ReactiveDatasetProvider config={{ apiUrl: \"...\" }}>\n *             <ReactiveDatasetLoader\n *                 datasets={[\n *                     { workspace: \"production\", path: [variant(\"field\", \"config\")] }\n *                 ]}\n *                 fallback={<Spinner />}\n *                 onError={(err, reload) => <ErrorWithRetry error={err} onRetry={reload} />}\n *             >\n *                 <EastComponent render={myApp} />\n *             </ReactiveDatasetLoader>\n *         </ReactiveDatasetProvider>\n *     );\n * }\n * ```\n */\nexport function ReactiveDatasetLoader({\n    datasets,\n    children,\n    fallback = null,\n    onError,\n}: ReactiveDatasetLoaderProps) {\n    const { loading, error, reload } = usePreloadReactiveDatasets(datasets);\n\n    if (loading) {\n        return <>{fallback}</>;\n    }\n\n    if (error) {\n        if (onError) {\n            return <>{onError(error, reload)}</>;\n        }\n        // Default error display\n        return (\n            <div style={{ color: \"red\", padding: \"16px\" }}>\n                <strong>Failed to load datasets:</strong> {error.message}\n                <button onClick={reload} style={{ marginLeft: \"8px\" }}>\n                    Retry\n                </button>\n            </div>\n        );\n    }\n\n    return <>{children}</>;\n}\n\n/**\n * Hook to write to a reactive dataset from React code.\n *\n * @returns A function to write to a dataset\n *\n * @example\n * ```tsx\n * import { encodeBeast2For, IntegerType, variant } from \"@elaraai/east\";\n *\n * function UpdateButton() {\n *     const writeDataset = useReactiveDatasetWrite();\n *\n *     const handleUpdate = async () => {\n *         await writeDataset(\n *             \"production\",\n *             [variant(\"field\", \"inputs\"), variant(\"field\", \"count\")],\n *             encodeBeast2For(IntegerType)(42n)\n *         );\n *     };\n *\n *     return <button onClick={handleUpdate}>Update</button>;\n * }\n * ```\n */\nexport function useReactiveDatasetWrite(): (\n    workspace: string,\n    path: TreePath,\n    value: Uint8Array\n) => Promise<void> {\n    const cache = useReactiveDatasetCache();\n    return useCallback(\n        (workspace: string, path: TreePath, value: Uint8Array) =>\n            cache.write(workspace, path, value),\n        [cache]\n    );\n}\n\n/**\n * Hook to check if a reactive dataset is cached.\n *\n * @param workspace - The workspace name\n * @param path - The dataset path\n * @returns True if the dataset is cached\n */\nexport function useReactiveDatasetHas(workspace: string, path: TreePath): boolean {\n    const cache = useReactiveDatasetCache();\n    const key = datasetCacheKey(workspace, path);\n\n    const subscribe = useCallback(\n        (cb: () => void) => cache.subscribe(key, cb),\n        [cache, key]\n    );\n    const getSnapshot = useCallback(\n        () => cache.has(workspace, path),\n        [cache, workspace, path]\n    );\n\n    return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * UI-tree builder. Wraps east's {@link walkPatch} visitor so the renderer\n * sees the patch as a hierarchical {@link DiffNode} tree:\n *\n *   roster        (3 changes)\n *     [0]         (1 change)\n *       rate      32.5 → 36.0\n *     [1]         (2 changes)\n *       rate      32.5 → 36.0\n *       shiftLen  8 → 10\n *\n * All the heavy lifting (type-driven recursion, container `replace`\n * re-diffing, array delete+insert pairing, path encoding) lives in east —\n * this module only translates visitor events into nodes.\n *\n * @packageDocumentation\n */\n\nimport {\n    type EastTypeValue,\n    type PatchLeafOp,\n    walkPatch,\n    pathToString,\n    pathDisplay,\n} from \"@elaraai/east\";\n\n// =============================================================================\n// Node tree\n// =============================================================================\n\nexport type LeafOp = PatchLeafOp;\n\n/** A leaf change — one user-visible before/after pair. */\nexport interface LeafNode {\n    kind: \"leaf\";\n    /** Stringified PatchPath — stable id within the binding. */\n    path: string;\n    /** Last segment, for display. */\n    label: string;\n    op: LeafOp;\n    leafType: EastTypeValue | null;\n    before: any;\n    after: any;\n    /** Set when the patch's expectation at this leaf disagrees with the\n     *  actual base value (overlay-mode drift). When present, the row should\n     *  render a warning badge with `actual` so the user can see what the\n     *  source has now vs what the patch expected. */\n    stale?: { expected: unknown; actual: unknown };\n}\n\n/** An interior change — wraps multiple leaf or group children. */\nexport interface GroupNode {\n    kind: \"group\";\n    /** Stringified PatchPath. */\n    path: string;\n    /** Last segment, for display. */\n    label: string;\n    /** Total leaves under this subtree. */\n    leafCount: number;\n    /** Flat list of every leaf path under this subtree. Pre-computed during\n     *  walk so the renderer's \"discard all\" handler doesn't re-traverse on\n     *  each render. */\n    subtreeLeafPaths: string[];\n    children: DiffNode[];\n}\n\nexport type DiffNode = LeafNode | GroupNode;\n\n/** Enumerate all leaves under a node — used for total-count tallies that\n *  need {@link LeafNode} objects (not just paths). */\nexport function collectLeaves(node: DiffNode, into: LeafNode[] = []): LeafNode[] {\n    if (node.kind === \"leaf\") into.push(node);\n    else for (const c of node.children) collectLeaves(c, into);\n    return into;\n}\n\n/**\n * Display label for the last path segment. For \"key\" segments produced by\n * Dict / Set traversal, the underlying east walker uses `printFor(elemType)`\n * which JSON-quotes strings (`\"foo\"`) so the path identity round-trips\n * unambiguously. The label is for *display only* — strip the surrounding\n * quotes so the user sees `foo` instead of `\"foo\"`. Path identity (used as\n * a resolution-map key) stays quoted via `pathToString`.\n */\nfunction leafDisplayLabel(seg: { kind: string; key?: string } & Record<string, unknown>): string {\n    if (seg.kind === \"key\" && typeof seg.key === \"string\"\n        && seg.key.length >= 2 && seg.key.startsWith('\"') && seg.key.endsWith('\"')) {\n        // JSON-style string key — show the inner without round-trip quotes.\n        try { return JSON.parse(seg.key) as string; }\n        catch { /* fall through */ }\n    }\n    return pathDisplay(seg as Parameters<typeof pathDisplay>[0]);\n}\n\n// =============================================================================\n// Walker\n// =============================================================================\n\n/**\n * Walk a patch and build the renderer's `DiffNode` tree. Returns `null` when\n * the patch is unchanged (no events fire).\n *\n * @param typeValue - Runtime EastTypeValue of the value being patched.\n * @param patch     - The patch (`PatchTypeOf<T>`).\n * @param rootLabel - Display label for the root node (the renderer fills in\n *   the binding name here).\n */\nexport function walkPatchToTree(\n    typeValue: EastTypeValue,\n    patch: any,\n    rootLabel: string,\n): DiffNode | null {\n    // Stack of in-progress group nodes. Top of stack is the current parent.\n    // We push on `enter` and pop on `exit`; leaves go directly onto the\n    // current top.\n    const stack: GroupNode[] = [];\n    let root: DiffNode | null = null;\n\n    walkPatch(typeValue, patch, {\n        enter: ({ path, leafCount }) => {\n            const node: GroupNode = {\n                kind: \"group\",\n                path: pathToString(path),\n                label: path.length === 0 ? rootLabel : leafDisplayLabel(path[path.length - 1]!),\n                leafCount,\n                subtreeLeafPaths: [],\n                children: [],\n            };\n            if (stack.length > 0) stack[stack.length - 1]!.children.push(node);\n            else root = node;\n            stack.push(node);\n        },\n        leaf: ({ type, path, op, before, after }) => {\n            const pathStr = pathToString(path);\n            const leaf: LeafNode = {\n                kind: \"leaf\",\n                path: pathStr,\n                label: path.length === 0 ? rootLabel : leafDisplayLabel(path[path.length - 1]!),\n                op,\n                leafType: type,\n                before,\n                after,\n            };\n            if (stack.length > 0) {\n                const parent = stack[stack.length - 1]!;\n                parent.children.push(leaf);\n                parent.subtreeLeafPaths.push(pathStr);\n            } else {\n                root = leaf;\n            }\n        },\n        exit: () => {\n            // Roll up the popped group's leaf paths into its parent. The\n            // popped node itself already has its own subtreeLeafPaths\n            // populated (own leaves + nested-group leaves rolled up earlier).\n            const popped = stack.pop()!;\n            const parent = stack[stack.length - 1];\n            if (parent) parent.subtreeLeafPaths.push(...popped.subtreeLeafPaths);\n        },\n    });\n\n    if (stack.length !== 0) {\n        throw new Error(`walkPatchToTree: visitor exit imbalance (stack depth ${stack.length})`);\n    }\n    return root;\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Pure helpers for formatting decoded East values into short text suitable\n * for the diff row chips. Container shapes (Struct/Array/Dict/Set/…) fall\n * through to east's canonical {@link printFor} so we never hand-roll a\n * JSON serializer.\n *\n * @packageDocumentation\n */\n\nimport { printFor, isVariant, type EastTypeValue } from \"@elaraai/east\";\n\nconst MAX_INLINE_CHARS = 48;\n\n/**\n * Format a decoded East value into a short human-readable string. The\n * `typeValue` selects formatting:\n * - Primitives get a per-type compact form (e.g. `\"42.50\"`, `\"2025-01-01\"`).\n * - Variants render their tag (and a printed inner for non-null cases).\n * - Containers fall through to `printFor(typeValue)(value)`.\n *\n * When `typeValue` is null we have no type to round-trip against — return\n * `\"<value>\"`.\n */\nexport function formatLeafValue(typeValue: EastTypeValue | null, value: any): string {\n    if (value === null || value === undefined) return \"null\";\n    if (!typeValue) return \"<value>\";\n\n    switch (typeValue.type) {\n        case \"Null\":     return \"null\";\n        case \"Boolean\":  return value ? \"true\" : \"false\";\n        case \"Integer\":  return typeof value === \"bigint\" ? value.toString() : String(value);\n        case \"Float\":    return formatFloat(value);\n        case \"String\":   return value === \"\" ? '\"\"' : String(value);\n        case \"DateTime\": return value instanceof Date ? value.toISOString() : String(value);\n        case \"Blob\":     return value instanceof Uint8Array ? `${value.length} bytes` : truncate(printFor(typeValue)(value));\n        case \"Variant\":\n            // Show just the tag — readable for status enums and friends.\n            if (isVariant(value)) {\n                const cases = typeValue.value as Array<{ name: string; type: EastTypeValue }>;\n                const sub = cases.find(c => c.name === value.type);\n                if (value.value === null || value.value === undefined || !sub) return value.type;\n                return `${value.type}(${truncate(printFor(sub.type)(value.value))})`;\n            }\n            return \"<value>\";\n        default:         return truncate(printFor(typeValue)(value));\n    }\n}\n\nfunction formatFloat(v: any): string {\n    if (typeof v !== \"number\") return String(v);\n    if (Number.isInteger(v)) return v.toFixed(1);\n    return Math.abs(v) >= 1000\n        ? v.toLocaleString(\"en-US\", { maximumFractionDigits: 2 })\n        : String(Number(v.toFixed(4)));\n}\n\nfunction truncate(s: string): string {\n    return s.length > MAX_INLINE_CHARS ? s.slice(0, MAX_INLINE_CHARS - 1) + \"…\" : s;\n}\n\n/**\n * Pretty-print a TreePath using the same \"field: name\" / \"index: 5\" /\n * \"key: foo\" pattern as the staged-store cache key — but reduced to a\n * bare label suitable for the binding-group header.\n */\nexport function formatBindingLabel(segments: ReadonlyArray<any>): string {\n    if (segments.length === 0) return \"(root)\";\n    const last = segments[segments.length - 1];\n    if (last && typeof last === \"object\" && \"type\" in last) {\n        if (last.type === \"field\") return String(last.value);\n        if (last.type === \"index\") return `[${String(last.value)}]`;\n        if (last.type === \"key\")   return String(last.value);\n    }\n    return String(last);\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Pure helpers for the conflict-resolution Manual editor — primitive leaf\n * types only. The renderer composes these with a Chakra Input; tests\n * exercise them directly without spinning up React.\n *\n * @packageDocumentation\n */\n\nimport type { EastTypeValue } from \"@elaraai/east\";\n\n/**\n * Whether a leaf type supports inline manual editing in the conflict\n * chooser. Container leaves (Struct/Array/Dict/Set/Variant/Ref) and\n * \"valueless\" primitives (Null/Blob) return false — the renderer hides the\n * Manual chooser entirely for those.\n */\nexport function isPrimitiveLeafType(t: EastTypeValue | null): boolean {\n    if (!t) return false;\n    switch (t.type) {\n        case \"Boolean\":\n        case \"Integer\":\n        case \"Float\":\n        case \"String\":\n        case \"DateTime\":\n            return true;\n        default:\n            return false;\n    }\n}\n\n/**\n * Render a leaf value as a string suitable for the manual-editor's text\n * input. Empty string when there's nothing useful to show.\n */\nexport function formatManualDraft(leafType: EastTypeValue | null, value: any): string {\n    if (!leafType || value === undefined || value === null) return \"\";\n    switch (leafType.type) {\n        case \"Boolean\":  return value ? \"true\" : \"false\";\n        case \"Integer\":  return typeof value === \"bigint\" ? value.toString() : String(value);\n        case \"Float\":    return typeof value === \"number\" ? String(value) : String(value);\n        case \"String\":   return String(value);\n        case \"DateTime\": {\n            if (!(value instanceof Date)) return String(value);\n            // datetime-local wants `YYYY-MM-DDTHH:mm` — slice the ISO.\n            return value.toISOString().slice(0, 16);\n        }\n        default: return \"\";\n    }\n}\n\n/**\n * Parse a draft string back to a typed leaf value. Returns\n * `{ ok: false }` for invalid input — the renderer keeps the previous\n * valid value rather than firing onChange with garbage.\n */\nexport function parseManualDraft(\n    leafType: EastTypeValue,\n    draft: string,\n): { ok: true; value: any } | { ok: false } {\n    try {\n        switch (leafType.type) {\n            case \"Integer\":  return { ok: true, value: BigInt(draft) };\n            case \"Float\":    {\n                const n = Number(draft);\n                if (Number.isNaN(n)) return { ok: false };\n                return { ok: true, value: n };\n            }\n            case \"String\":   return { ok: true, value: draft };\n            case \"DateTime\": {\n                const d = new Date(draft);\n                if (Number.isNaN(d.getTime())) return { ok: false };\n                return { ok: true, value: d };\n            }\n            default: return { ok: false };\n        }\n    } catch {\n        return { ok: false };\n    }\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * EastChakraDiff — native Chakra v3 renderer for the {@link Diff} component\n * declared in `@elaraai/e3-ui`. Surfaces all pending {@link Data.bindStaged}\n * edits across a caller-chosen set of binding paths in one card, with\n * per-leaf accept/reject, mode toggle, and merge-aware Apply.\n *\n * Visual fidelity: 1:1 with `e3-ui/docs/diff-component-mockup.html`.\n *   - brand-teal accents (#488e97), soft chips, status-paired FA icons,\n *     orange conflict mode, three-option chooser per conflict.\n *\n * Lifecycle (Apply button):\n *   1. For each staged path, compute `userPatch = diff(snapshot, buffered)`\n *      and prune leaves the user rejected.\n *   2. Compute `serverPatch = diff(snapshot, currentServer)` to detect drift.\n *   3. `detectConflictsFor` over the two patches; if any, switch to conflict\n *      UI. Otherwise `mergeFor → applyFor → cache.write → staged.discard`\n *      sequentially.\n *   4. Once all conflicts resolved (per-row chooser populates the\n *      `resolutions` map), Apply re-runs through `mergeWithResolutionsFor`.\n *\n * The renderer registers itself against the `Diff` extension at module\n * load via {@link implementUIComponent}.\n *\n * @packageDocumentation\n */\n\nimport { memo, useCallback, useEffect, useMemo, useState, useSyncExternalStore } from \"react\";\nimport { Box, Flex, HStack, Input as ChakraInput, Text, useRecipe, useSlotRecipe } from \"@chakra-ui/react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n    faCheck,\n    faMinus,\n    faPen,\n    faPlus,\n    faServer,\n    faTriangleExclamation,\n    faUser,\n    faXmark,\n    faArrowRight,\n    faEquals,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {\n    decodeBeast2For,\n    encodeBeast2For,\n    equalFor,\n    ConflictError,\n    detectConflictsFor,\n    mergeWithResolutionsFor,\n    type Conflict,\n    type Resolution,\n    type EastTypeValue,\n    type ValueTypeOf,\n    diffFor,\n    applyFor,\n    prunePatchFor,\n    pathToString,\n    validatePatchFor,\n    type PatchConflict,\n    variant,\n} from \"@elaraai/east\";\nimport type { TreePath } from \"@elaraai/e3-types\";\nimport { Diff, DiffBindingType } from \"@elaraai/e3-ui/internal\";\nimport { implementUIComponent } from \"@elaraai/east-ui-components\";\n\nimport {\n    getStagedStore,\n    getReactiveDatasetCache,\n    datasetCacheKey,\n    datasetPathToString,\n    getBindingTypes,\n} from \"../platform/index.js\";\nimport {\n    walkPatchToTree,\n    collectLeaves,\n    type DiffNode,\n    type LeafNode,\n    type GroupNode,\n} from \"./walker.js\";\nimport { formatLeafValue, formatBindingLabel } from \"./format.js\";\nimport { isPrimitiveLeafType, formatManualDraft, parseManualDraft } from \"./manual.js\";\n\n// =============================================================================\n// Types — pulled from the IR carrier so this stays in sync.\n// =============================================================================\n\ntype DiffValue = ValueTypeOf<typeof Diff.Component.schema>;\nconst diffValueEqual = equalFor(Diff.Component.schema);\n\n/**\n * What \"Apply\" does for this binding. Determined by the binding's mode +\n * patch presence:\n *\n * - **apply-buffer-to-source** (`staged`, no patch dataset): write the\n *   StagedStore buffer to the source dataset; drop the buffer. This is the\n *   classic transactional edit flow and supports 3-way merge against\n *   server drift since first-write.\n * - **publish-buffer-to-patch** (`staged` + patch dataset): write\n *   `diff(source, buffer)` to the patch dataset; drop the buffer. The\n *   source itself is untouched.\n * - **apply-patch-to-source** (`direct` + patch dataset): apply the patch\n *   dataset's contents to the source; clear the patch dataset.\n *\n * Bindings with `direct` and no patch dataset never appear here — there's\n * no in-flight change to surface.\n */\ntype CommitKind = \"apply-buffer-to-source\" | \"publish-buffer-to-patch\" | \"apply-patch-to-source\";\n\ninterface BindingMode {\n    kind: CommitKind;\n    /** Optional patch dataset path — present when `commitKind` is\n     *  `publish-buffer-to-patch` or `apply-patch-to-source`. */\n    patchPath?: TreePath;\n    patchPathStr?: string;\n    /** Patch IR's runtime type — needed to encode `unchanged` resets and\n     *  pruned patches. Present when `patchPath` is. */\n    patchType?: EastTypeValue;\n    /** Decoded server-side patch (`diff(snapshot, currentServer)`) — only\n     *  populated for `apply-buffer-to-source` (the staged 3-way merge\n     *  case). */\n    serverPatch?: any;\n    /** Server-tree leaves keyed by path. Same population rule as\n     *  `serverPatch`. */\n    serverLeavesByPath?: ReadonlyMap<string, LeafNode>;\n}\n\ninterface BindingState {\n    /** The source TreePath. */\n    path: TreePath;\n    /** Display label — last segment of the path. */\n    label: string;\n    /** Stringified path for keys + cache lookups. */\n    pathStr: string;\n    /** Runtime EastType for the binding's source value. */\n    stateType: EastTypeValue;\n    /** Decoded user-side patch (the IR representation of the in-flight change). */\n    userPatch: any;\n    /** Tree of changes under this binding (null = no changes). */\n    tree: DiffNode | null;\n    /** Flat list of leaves under `tree` — used for total-count tallies. */\n    leaves: LeafNode[];\n    /** Mode-specific routing + drift data. */\n    mode: BindingMode;\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\nfunction getOpt<T>(opt: { type: \"none\"; value: null } | { type: \"some\"; value: T }): T | undefined {\n    return opt.type === \"some\" ? opt.value : undefined;\n}\n\n// =============================================================================\n// Density — compact / condensed presets shrink the per-row dimensions while\n// the Card frame (header / footer / overall border) stays stable.\n// =============================================================================\n\ntype Density = \"comfortable\" | \"compact\" | \"condensed\";\n\ninterface DensityMetrics {\n    /** Vertical padding inside leaf and group rows (`py`). */\n    rowPadY: string;\n    /** Per-depth indent step in pixels — multiplied by the row's depth. */\n    indentStep: number;\n    /** Font size for leaf / group labels. */\n    labelFontSize: string;\n    /** Font size for value chips. */\n    chipFontSize: string;\n    /** Square dimension for the round op icon (`OpIcon`). */\n    opIconSize: string;\n    /** Square dimension for the X / discard / resolve action buttons. */\n    actionBtnSize: string;\n}\n\nconst DENSITY_METRICS: Record<Density, DensityMetrics> = {\n    comfortable: { rowPadY: \"10px\", indentStep: 20, labelFontSize: \"14px\", chipFontSize: \"12px\", opIconSize: \"20px\", actionBtnSize: \"32px\" },\n    compact:     { rowPadY: \"6px\",  indentStep: 16, labelFontSize: \"13px\", chipFontSize: \"11px\", opIconSize: \"18px\", actionBtnSize: \"26px\" },\n    condensed:   { rowPadY: \"3px\",  indentStep: 12, labelFontSize: \"12px\", chipFontSize: \"10px\", opIconSize: \"16px\", actionBtnSize: \"22px\" },\n};\n\n/** Resolve the IR `density` Option to one of the three presets. */\nfunction resolveDensity(opt: { type: \"none\"; value: null } | { type: \"some\"; value: { type: string } }): Density {\n    if (opt.type === \"none\") return \"comfortable\";\n    const tag = opt.value.type;\n    return tag === \"compact\" || tag === \"condensed\" ? tag : \"comfortable\";\n}\n\n// =============================================================================\n// Reactive subscription — re-render when the staged store fires for any of\n// our keys. Backed by useSyncExternalStore so concurrent React stays sane.\n// =============================================================================\n\nfunction useStagedKeyVersions(workspace: string, paths: TreePath[]): number {\n    const store = getStagedStore();\n    const keys = useMemo(\n        () => paths.map(p => datasetCacheKey(workspace, p)),\n        [workspace, paths],\n    );\n    const subscribe = useCallback((cb: () => void) => {\n        const unsubs = keys.map(key => store.subscribe(key, cb));\n        return () => unsubs.forEach(u => u());\n    }, [store, keys]);\n    const getSnapshot = useCallback(\n        () => keys.reduce((acc, k) => acc + store.getKeyVersion(k), 0),\n        [store, keys],\n    );\n    return useSyncExternalStore(subscribe, getSnapshot);\n}\n\nfunction useDatasetKeyVersions(workspace: string, paths: TreePath[]): number {\n    const cache = getReactiveDatasetCache();\n    const keys = useMemo(\n        () => paths.map(p => datasetCacheKey(workspace, p)),\n        [workspace, paths],\n    );\n    const subscribe = useCallback((cb: () => void) => {\n        const unsubs = keys.map(key => cache.subscribe(key, cb));\n        return () => unsubs.forEach(u => u());\n    }, [cache, keys]);\n    const getSnapshot = useCallback(\n        () => keys.reduce((acc, k) => acc + cache.getKeyVersion(k), 0),\n        [cache, keys],\n    );\n    return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n// =============================================================================\n// Per-binding state derivation — pure function, called inside useMemo.\n// =============================================================================\n\n// `direct` + no-patch bindings can never surface anything in a Diff; warn once\n// per source path so the resulting empty card isn't a silent mystery (deduped\n// because binding-state derivation re-runs on every render).\nconst warnedDirectNoPatch = new Set<string>();\n\nfunction pickCommitKind(mode: \"staged\" | \"direct\", patchPath: TreePath | undefined): CommitKind | null {\n    if (mode === \"staged\" && !patchPath) return \"apply-buffer-to-source\";\n    if (mode === \"staged\" && patchPath)  return \"publish-buffer-to-patch\";\n    if (mode === \"direct\" && patchPath)  return \"apply-patch-to-source\";\n    return null;   // direct + no patch — nothing to surface in Diff\n}\n\nfunction deriveBindings(\n    workspace: string,\n    bindings: ValueTypeOf<typeof DiffBindingType>[],\n): BindingState[] {\n    const staged = getStagedStore();\n    const cache = getReactiveDatasetCache();\n    const out: BindingState[] = [];\n\n    for (const b of bindings) {\n        const sourcePath = b.source as TreePath;\n        const patchPath  = b.patch.type === \"some\" ? (b.patch.value as TreePath) : undefined;\n        const mode       = b.mode.type as \"staged\" | \"direct\";\n        const types      = getBindingTypes(workspace, sourcePath);\n        if (!types) continue;   // binding hasn't run yet — wait for re-render\n\n        const commitKind = pickCommitKind(mode, patchPath);\n        if (!commitKind) {\n            // direct + no patch — nothing to surface. Since `direct` is the default\n            // Data.bind mode, a binding handed to <Diff> like this is almost always a\n            // missing `{ mode: \"staged\" }`; warn once so the empty card isn't a mystery.\n            const key = datasetPathToString(sourcePath);\n            if (!warnedDirectNoPatch.has(key)) {\n                warnedDirectNoPatch.add(key);\n                console.warn(\n                    `[Diff] binding \"${key}\" is mode=\"direct\" with no patch dataset — it writes ` +\n                    `through immediately, so the Diff has nothing to review. Pass { mode: \"staged\" } ` +\n                    `to Data.bind (or give it a patch dataset) to surface its edits here.`,\n                );\n            }\n            continue;   // direct + no patch — hidden from Diff\n        }\n\n        const sourceType = types.sourceType;\n        const patchType  = types.patchType;\n        const label      = formatBindingLabel(sourcePath as ReadonlyArray<unknown>);\n        const decodeSource = decodeBeast2For(sourceType);\n\n        // ----- Resolve the userPatch (the in-flight change) -------------\n        let userPatch: any;\n        let serverPatch: any | undefined;\n        let serverLeavesByPath: Map<string, LeafNode> | undefined;\n\n        if (commitKind === \"apply-buffer-to-source\") {\n            // Staged buffer with NO patch dataset. Patch = diff(snapshot, buffer).\n            const entry = staged.getEntry(workspace, sourcePath);\n            if (!entry) continue;\n            const snapshot = decodeSource(entry.snapshot);\n            const buffered = decodeSource(entry.buffered);\n            userPatch = diffFor(sourceType)(snapshot, buffered);\n\n            // Server drift — only relevant for this kind.\n            serverPatch = variant(\"unchanged\", null);\n            const serverBytes = cache.read(workspace, sourcePath);\n            if (serverBytes && serverBytes !== entry.snapshot) {\n                try {\n                    const server = decodeSource(serverBytes);\n                    serverPatch = diffFor(sourceType)(snapshot, server);\n                } catch {\n                    // Fall through with unchanged — clean apply preferred.\n                }\n            }\n            const serverTree = walkPatchToTree(sourceType, serverPatch, label);\n            serverLeavesByPath = new Map<string, LeafNode>();\n            if (serverTree) {\n                for (const leaf of collectLeaves(serverTree)) {\n                    serverLeavesByPath.set(leaf.path, leaf);\n                }\n            }\n        } else if (commitKind === \"publish-buffer-to-patch\") {\n            // Staged buffer + patch dataset. Patch we DISPLAY is diff(source, buffer).\n            const entry = staged.getEntry(workspace, sourcePath);\n            if (!entry) continue;\n            const sourceBytes = cache.read(workspace, sourcePath);\n            if (!sourceBytes) continue;\n            const sourceVal = decodeSource(sourceBytes);\n            const bufferedVal = decodeSource(entry.buffered);\n            userPatch = diffFor(sourceType)(sourceVal, bufferedVal);\n        } else {\n            // commitKind === \"apply-patch-to-source\": read patch dataset directly.\n            if (!patchPath) continue;\n            const patchBytes = cache.read(workspace, patchPath);\n            userPatch = patchBytes\n                ? decodeBeast2For(patchType)(patchBytes)\n                : variant(\"unchanged\", null);\n        }\n\n        const tree = walkPatchToTree(sourceType, userPatch, label);\n        const leaves = tree ? collectLeaves(tree) : [];\n\n        // ----- Stale-leaf annotation for any binding with a patch dataset\n        // OR for staged bindings (where the buffer's `before` may not match\n        // the live source if it has drifted since first-write). Validate\n        // against the live source. -------------------------------------------\n        if (tree && commitKind !== \"apply-buffer-to-source\") {\n            const sourceBytes = cache.read(workspace, sourcePath);\n            if (sourceBytes) {\n                try {\n                    const sourceVal = decodeSource(sourceBytes);\n                    const conflictsList: PatchConflict[] =\n                        validatePatchFor(sourceType)(sourceVal, userPatch);\n                    if (conflictsList.length > 0) {\n                        const byPath = new Map<string, PatchConflict>();\n                        for (const c of conflictsList) byPath.set(pathToString(c.path), c);\n                        for (const leaf of leaves) {\n                            const c = byPath.get(leaf.path);\n                            if (c) leaf.stale = { expected: c.expected, actual: c.actual };\n                        }\n                    }\n                } catch (err) {\n                    console.error(\"[Diff.deriveBindings] validate failed:\", err);\n                }\n            }\n        }\n\n        const modeData: BindingMode = { kind: commitKind };\n        if (patchPath) {\n            modeData.patchPath = patchPath;\n            modeData.patchPathStr = datasetPathToString(patchPath);\n            modeData.patchType = patchType;\n        }\n        if (serverPatch !== undefined) modeData.serverPatch = serverPatch;\n        if (serverLeavesByPath !== undefined) modeData.serverLeavesByPath = serverLeavesByPath;\n\n        out.push({\n            path: sourcePath,\n            label,\n            pathStr: datasetPathToString(sourcePath),\n            stateType: sourceType,\n            userPatch,\n            tree,\n            leaves,\n            mode: modeData,\n        });\n    }\n\n    return out;\n}\n\n// =============================================================================\n// Visual sub-components — kept inline; not exported.\n// =============================================================================\n\ntype IconKind = \"insert\" | \"delete\" | \"update\" | \"unchanged\" | \"conflict\";\n\n/* Op glyph — a bare semantic mark in the column gutter; the +/− value chips\n * and row context carry the rest. No tinted circle. */\nconst OP_GLYPH: Record<IconKind, { color: string; icon: any }> = {\n    insert:    { color: \"fg.success\", icon: faPlus },\n    delete:    { color: \"fg.danger\",  icon: faMinus },\n    update:    { color: \"fg.muted\",   icon: faPen },\n    unchanged: { color: \"fg.subtle\",  icon: faEquals },\n    conflict:  { color: \"fg.warning\", icon: faTriangleExclamation },\n};\n\nfunction OpIcon({ kind, size = \"20px\" }: { kind: IconKind; size?: string }) {\n    const p = OP_GLYPH[kind];\n    return (\n        <Box\n            display=\"inline-flex\"\n            alignItems=\"center\"\n            justifyContent=\"center\"\n            width={size}\n            color={p.color}\n            flexShrink={0}\n            fontSize=\"11px\"\n        >\n            <FontAwesomeIcon icon={p.icon} />\n        </Box>\n    );\n}\n\n/* Value chip — neutral `.chip` (paper + rule-strong border, mono numerals).\n * The +/− glyph carries the only colour; the chip itself stays neutral. */\nfunction Chip({ children, fontSize = \"12px\" }: { children: React.ReactNode; fontSize?: string }) {\n    const chip = useRecipe({ key: \"chip\" });\n    return (\n        <Box as=\"span\" css={chip({ numeric: true })} fontSize={fontSize}>\n            {children}\n        </Box>\n    );\n}\n\ntype StatusTone = \"success\" | \"warning\" | \"danger\" | \"info\" | \"neutral\" | \"brand\";\n\n/* Dot + WORD status flag — spec `.status` (never a tinted pill). */\nfunction StatusFlag({ tone, label }: { tone: StatusTone; label: string }) {\n    const status = useSlotRecipe({ key: \"status\" });\n    const s = status({ status: tone, size: \"sm\" });\n    return (\n        <Box as=\"span\" css={s.root}>\n            <Box as=\"span\" css={s.indicator} />\n            <Box as=\"span\" css={s.label}>{label}</Box>\n        </Box>\n    );\n}\n\n/* Per-row discard — ghost icon button (spec `.btn.ghost`). */\nfunction ActionBtn({\n    icon, title, onClick, disabled, size = \"28px\",\n}: {\n    icon: any;\n    title: string;\n    onClick?: () => void;\n    disabled?: boolean;\n    size?: string;\n}) {\n    return (\n        <Box\n            as=\"button\"\n            aria-label={title}\n            aria-disabled={disabled}\n            onClick={disabled ? undefined : onClick}\n            width={size}\n            height={size}\n            borderRadius=\"4px\"\n            border=\"0\"\n            bg=\"transparent\"\n            color=\"fg.subtle\"\n            display=\"inline-flex\"\n            alignItems=\"center\"\n            justifyContent=\"center\"\n            cursor={disabled ? \"not-allowed\" : \"pointer\"}\n            opacity={disabled ? 0.5 : 1}\n            fontSize=\"12px\"\n            transition=\"all 100ms ease\"\n            _hover={{ color: \"fg\", bg: \"bg.muted\" }}\n        >\n            <FontAwesomeIcon icon={icon} />\n        </Box>\n    );\n}\n\ninterface RowProps {\n    row: LeafNode;\n    depth: number;\n    bindingPathStr: string;\n    showActions: boolean;\n    /** Stable handler — `bindingPathStr` and `row.path` are passed in so\n     *  the parent can hold a single shared callback without per-row closures. */\n    onDiscard: (bindingPathStr: string, leafPath: string) => void;\n    annotation?: { text: string; tone: \"green\" | \"brand\" | \"gray\" };\n    metrics: DensityMetrics;\n}\n\nconst DiffRow = memo(function DiffRow({ row, depth, bindingPathStr, showActions, onDiscard, annotation, metrics }: RowProps) {\n    const handleDiscard = useCallback(() => onDiscard(bindingPathStr, row.path), [onDiscard, bindingPathStr, row.path]);\n    return (\n        <Box\n            display=\"grid\"\n            gridTemplateColumns=\"28px 1fr auto\"\n            alignItems=\"center\"\n            px=\"18px\"\n            py={metrics.rowPadY}\n            pl={`${18 + depth * metrics.indentStep}px`}\n            gap=\"16px\"\n            borderBottomWidth=\"1px\"\n            borderBottomColor=\"border.subtle\"\n            _hover={{ bg: \"bg.canvas\" }}\n        >\n            <OpIcon kind={row.op === \"unchanged\" ? \"unchanged\" : row.op} size={metrics.opIconSize} />\n            <Flex direction=\"column\" minW={0} gap=\"2px\">\n                <Text\n                    fontSize={metrics.labelFontSize}\n                    fontWeight={500}\n                    color={row.stale ? \"fg.warning\" : \"fg\"}\n                    overflow=\"hidden\"\n                    textOverflow=\"ellipsis\"\n                    whiteSpace=\"nowrap\"\n                >\n                    {row.label}\n                </Text>\n                {row.stale && (\n                    <Text fontSize=\"11px\" color=\"fg.warning\" fontWeight={500}>\n                        <FontAwesomeIcon icon={faTriangleExclamation} />{\" \"}\n                        {row.stale.actual === undefined\n                            ? \"stale — source no longer has this entry\"\n                            : `stale — source actually has ${formatLeafValue(row.leafType, row.stale.actual)}`}\n                    </Text>\n                )}\n                {annotation && (\n                    <Text fontSize=\"11px\" color={`${annotation.tone}.700`} fontWeight={500}>\n                        {annotation.text}\n                    </Text>\n                )}\n            </Flex>\n            <HStack gap=\"16px\" align=\"center\">\n                <HStack gap=\"6px\" wrap=\"wrap\">\n                    {row.before !== undefined && (\n                        <Chip fontSize={metrics.chipFontSize}><Box as=\"span\" color=\"fg.danger\"><FontAwesomeIcon icon={faMinus} /></Box> {formatLeafValue(row.leafType, row.before)}</Chip>\n                    )}\n                    {row.before !== undefined && row.after !== undefined && (\n                        <Box as=\"span\" color=\"fg.subtle\" fontSize=\"11px\"><FontAwesomeIcon icon={faArrowRight} /></Box>\n                    )}\n                    {row.after !== undefined && (\n                        <Chip fontSize={metrics.chipFontSize}><Box as=\"span\" color=\"fg.success\"><FontAwesomeIcon icon={faPlus} /></Box> {formatLeafValue(row.leafType, row.after)}</Chip>\n                    )}\n                </HStack>\n                {showActions && (\n                    <ActionBtn icon={faXmark} title=\"Discard this change\" onClick={handleDiscard} size={metrics.actionBtnSize} />\n                )}\n            </HStack>\n        </Box>\n    );\n});\n\ninterface ConflictRowProps {\n    row: LeafNode;\n    depth: number;\n    bindingPathStr: string;\n    serverValue: any;\n    resolution: Resolution | undefined;\n    /** Stable handler — receives the binding pathStr and the leaf path. */\n    onResolve: (bindingPathStr: string, leafPath: string, r: Resolution) => void;\n    metrics: DensityMetrics;\n}\n\nconst ConflictRow = memo(function ConflictRow({ row, depth, bindingPathStr, serverValue, resolution, onResolve, metrics }: ConflictRowProps) {\n    const yoursStr  = formatLeafValue(row.leafType, row.after);\n    const theirsStr = formatLeafValue(row.leafType, serverValue);\n    const isYours   = resolution?.type === \"keepA\";\n    const isTheirs  = resolution?.type === \"keepB\";\n    const isManual  = resolution?.type === \"manual\";\n    const handleKeepA  = useCallback(() => onResolve(bindingPathStr, row.path, { type: \"keepA\" }), [onResolve, bindingPathStr, row.path]);\n    const handleKeepB  = useCallback(() => onResolve(bindingPathStr, row.path, { type: \"keepB\" }), [onResolve, bindingPathStr, row.path]);\n    const handleManual = useCallback((value: any) => onResolve(bindingPathStr, row.path, { type: \"manual\", value }), [onResolve, bindingPathStr, row.path]);\n    const supportsManual = isPrimitiveLeafType(row.leafType);\n    return (\n        <Box\n            display=\"block\"\n            px=\"18px\"\n            py={metrics.rowPadY}\n            pl={`${18 + depth * metrics.indentStep}px`}\n            bg=\"warning.subtle\"\n            borderBottomWidth=\"1px\"\n            borderBottomColor=\"border.subtle\"\n        >\n            <Box display=\"grid\" gridTemplateColumns=\"28px 1fr\" alignItems=\"center\" gap=\"16px\">\n                <OpIcon kind=\"conflict\" size={metrics.opIconSize} />\n                <Flex direction=\"column\" minW={0} gap=\"2px\">\n                    <Text fontSize={metrics.labelFontSize} fontWeight={500} color=\"fg\">\n                        {row.label}\n                        <Text as=\"span\" color=\"fg.warning\" fontWeight={500} ml=\"6px\">· conflict</Text>\n                    </Text>\n                </Flex>\n            </Box>\n            <Box\n                display=\"grid\"\n                gridTemplateColumns={supportsManual ? \"1fr 1fr 1fr\" : \"1fr 1fr\"}\n                gap=\"8px\"\n                mt=\"10px\"\n                p=\"12px\"\n                bg=\"white\"\n                border=\"1px solid\"\n                borderColor=\"fg.warning\"\n                borderRadius=\"md\"\n                role=\"radiogroup\"\n                aria-label={`Resolve ${row.path || \"(root)\"}`}\n            >\n                <ChooserOption\n                    selected={isYours}\n                    label=\"Keep yours\"\n                    icon={faUser}\n                    value={yoursStr}\n                    onClick={handleKeepA}\n                />\n                <ChooserOption\n                    selected={isTheirs}\n                    label=\"Keep theirs\"\n                    icon={faServer}\n                    value={theirsStr}\n                    onClick={handleKeepB}\n                />\n                {supportsManual && (\n                    <ManualOption\n                        selected={isManual}\n                        leafType={row.leafType}\n                        value={isManual ? (resolution as { type: \"manual\"; value: any }).value : row.after}\n                        onChange={handleManual}\n                    />\n                )}\n            </Box>\n        </Box>\n    );\n});\n\nfunction ChooserOption({\n    selected, label, icon, value, muted, onClick,\n}: {\n    selected: boolean;\n    label: string;\n    icon: any;\n    value: string;\n    muted?: boolean;\n    onClick: () => void;\n}) {\n    return (\n        <Box\n            as=\"button\"\n            onClick={onClick}\n            border=\"1px solid\"\n            borderColor={selected ? \"border.brand\" : \"border.subtle\"}\n            borderRadius=\"md\"\n            px=\"12px\"\n            py=\"10px\"\n            bg={selected ? \"bg.brand.subtle\" : \"bg.surface\"}\n            cursor=\"pointer\"\n            textAlign=\"left\"\n            transition=\"border-color 100ms ease\"\n            _hover={{ borderColor: selected ? \"border.brand\" : \"border.strong\" }}\n        >\n            <Box\n                fontFamily=\"mono\"\n                fontSize=\"10px\"\n                textTransform=\"uppercase\"\n                letterSpacing=\"0.06em\"\n                color=\"fg.muted\"\n                mb=\"6px\"\n            >\n                <FontAwesomeIcon icon={icon} /> {label}\n            </Box>\n            <Box\n                fontFamily=\"mono\"\n                fontSize=\"13px\"\n                fontWeight={600}\n                color={muted ? \"fg.muted\" : \"fg\"}\n            >\n                {value}\n            </Box>\n        </Box>\n    );\n}\n\n// =============================================================================\n// Manual conflict editor — primitive leaves get an inline input that produces\n// a typed `Resolution.manual.value`. Container leaves (Struct/Array/…) and\n// \"valueless\" primitives (Null/Blob) don't support manual entry — the\n// caller hides the Manual chooser entirely.\n// =============================================================================\n\nfunction ManualOption({\n    selected, leafType, value, onChange,\n}: {\n    selected: boolean;\n    leafType: EastTypeValue | null;\n    value: any;\n    onChange: (next: any) => void;\n}) {\n    return (\n        <Box\n            border=\"1px solid\"\n            borderColor={selected ? \"border.brand\" : \"border.subtle\"}\n            borderRadius=\"md\"\n            px=\"12px\"\n            py=\"10px\"\n            bg={selected ? \"bg.brand.subtle\" : \"bg.surface\"}\n            cursor=\"text\"\n            textAlign=\"left\"\n            transition=\"border-color 100ms ease\"\n            _hover={{ borderColor: selected ? \"border.brand\" : \"border.strong\" }}\n        >\n            <Box\n                fontFamily=\"mono\"\n                fontSize=\"10px\"\n                textTransform=\"uppercase\"\n                letterSpacing=\"0.06em\"\n                color=\"fg.muted\"\n                mb=\"6px\"\n            >\n                <FontAwesomeIcon icon={faPen} /> Manual\n            </Box>\n            <ManualEditor leafType={leafType} value={value} onChange={onChange} />\n        </Box>\n    );\n}\n\nfunction ManualEditor({\n    leafType, value, onChange,\n}: {\n    leafType: EastTypeValue | null;\n    value: any;\n    onChange: (next: any) => void;\n}) {\n    const [draft, setDraft] = useState<string>(() => formatManualDraft(leafType, value));\n    // Sync if the upstream selected value changes externally (e.g. user\n    // clicks Keep yours then comes back to Manual).\n    useEffect(() => {\n        setDraft(formatManualDraft(leafType, value));\n    }, [leafType, value]);\n\n    const fire = useCallback((parsed: any) => {\n        queueMicrotask(() => onChange(parsed));\n    }, [onChange]);\n\n    if (!leafType) return null;\n\n    if (leafType.type === \"Boolean\") {\n        const checked = !!value;\n        return (\n            <Box\n                as=\"button\"\n                onClick={() => fire(!checked)}\n                fontFamily=\"mono\"\n                fontSize=\"13px\"\n                fontWeight={600}\n                color=\"fg\"\n                bg=\"transparent\"\n                border=\"0\"\n                cursor=\"pointer\"\n                textAlign=\"left\"\n            >\n                <FontAwesomeIcon icon={checked ? faCheck : faXmark} /> {checked ? \"true\" : \"false\"}\n            </Box>\n        );\n    }\n\n    if (leafType.type === \"Integer\" || leafType.type === \"Float\" || leafType.type === \"String\") {\n        const inputType = leafType.type === \"String\" ? \"text\" : \"number\";\n        return (\n            <ChakraInput\n                value={draft}\n                type={inputType}\n                size=\"sm\"\n                fontFamily=\"mono\"\n                fontSize=\"13px\"\n                onChange={e => {\n                    const next = e.target.value;\n                    setDraft(next);\n                    const parsed = parseManualDraft(leafType, next);\n                    if (parsed.ok) fire(parsed.value);\n                }}\n            />\n        );\n    }\n\n    if (leafType.type === \"DateTime\") {\n        // ISO string — keep simple: text input that parses to a Date.\n        return (\n            <ChakraInput\n                value={draft}\n                type=\"datetime-local\"\n                size=\"sm\"\n                fontFamily=\"mono\"\n                fontSize=\"13px\"\n                onChange={e => {\n                    const next = e.target.value;\n                    setDraft(next);\n                    const parsed = parseManualDraft(leafType, next);\n                    if (parsed.ok) fire(parsed.value);\n                }}\n            />\n        );\n    }\n\n    return null;\n}\n\n// =============================================================================\n// Recursive node renderer — walks the DiffNode tree, indenting per depth.\n// =============================================================================\n\ninterface NodeRenderProps {\n    node: DiffNode;\n    depth: number;\n    binding: BindingState;\n    /** Whether per-leaf and per-group Discard buttons render. False ⇒ read-only. */\n    interactive: boolean;\n    inConflictMode: boolean;\n    conflicts: { pathStr: string; conflict: Conflict }[] | null;\n    resolutions: ReadonlyMap<string, Resolution>;\n    /** Stable handlers — receive bindingPath + leafPath so leaf children\n     *  can be memoised without per-render closure churn. */\n    discardLeaf: (pathStr: string, leafPath: string) => void;\n    discardSubtree: (pathStr: string, leafPaths: string[]) => void;\n    setResolution: (pathStr: string, conflictPath: string, r: Resolution) => void;\n    metrics: DensityMetrics;\n}\n\nconst NodeRender = memo(function NodeRender(props: NodeRenderProps) {\n    const { node, depth, binding, interactive,\n        inConflictMode, conflicts, resolutions,\n        discardLeaf, discardSubtree, setResolution, metrics } = props;\n\n    if (node.kind === \"leaf\") {\n        const isConflict = inConflictMode && !!conflicts?.some(\n            c => c.pathStr === binding.pathStr && c.conflict.path === node.path,\n        );\n        if (isConflict) {\n            // Conflict UI fires for `apply-buffer-to-source` (the staged\n            // 3-way merge case). Other commit kinds don't carry a separate\n            // serverPatch.\n            const serverLeaf = binding.mode.kind === \"apply-buffer-to-source\"\n                ? binding.mode.serverLeavesByPath?.get(node.path)\n                : undefined;\n            return (\n                <ConflictRow\n                    row={node}\n                    depth={depth}\n                    bindingPathStr={binding.pathStr}\n                    serverValue={serverLeaf?.after}\n                    resolution={resolutions.get(rowKey(binding.pathStr, node.path))}\n                    onResolve={setResolution}\n                    metrics={metrics}\n                />\n            );\n        }\n        return (\n            <DiffRow\n                row={node}\n                depth={depth}\n                bindingPathStr={binding.pathStr}\n                showActions={interactive}\n                onDiscard={discardLeaf}\n                metrics={metrics}\n            />\n        );\n    }\n\n    // Group node.\n    return (\n        <>\n            <GroupHeader\n                node={node}\n                depth={depth}\n                bindingPathStr={binding.pathStr}\n                showActions={interactive}\n                onDiscardAll={discardSubtree}\n                metrics={metrics}\n            />\n            {node.children.map(child => (\n                <NodeRender\n                    key={child.path || `${child.kind}:${child.label}`}\n                    {...props}\n                    node={child}\n                    depth={depth + 1}\n                />\n            ))}\n        </>\n    );\n});\n\ninterface GroupHeaderProps {\n    node: GroupNode;\n    depth: number;\n    bindingPathStr: string;\n    showActions: boolean;\n    /** Stable handler — receives the binding's pathStr and the precomputed\n     *  subtreeLeafPaths (from `node.subtreeLeafPaths`). */\n    onDiscardAll: (bindingPathStr: string, leafPaths: string[]) => void;\n    metrics: DensityMetrics;\n}\n\nconst GroupHeader = memo(function GroupHeader({ node, depth, bindingPathStr, showActions, onDiscardAll, metrics }: GroupHeaderProps) {\n    const eyebrow = useSlotRecipe({ key: \"eyebrowRow\" });\n    const es = eyebrow({});\n    const handleDiscardAll = useCallback(\n        () => onDiscardAll(bindingPathStr, node.subtreeLeafPaths),\n        [onDiscardAll, bindingPathStr, node.subtreeLeafPaths],\n    );\n\n    // Depth-0 group = the binding's section header → a full eyebrow-row.\n    if (depth === 0) {\n        return (\n            <Box css={es.root}>\n                <Box css={es.lbl}>{node.label}</Box>\n                <Box css={es.meta} gap=\"10px\">\n                    <Box as=\"span\">{node.leafCount} change{node.leafCount === 1 ? \"\" : \"s\"}</Box>\n                    {showActions && (\n                        <ActionBtn icon={faXmark} title=\"Discard all changes here\" onClick={handleDiscardAll} size={metrics.actionBtnSize} />\n                    )}\n                </Box>\n            </Box>\n        );\n    }\n\n    // Nested struct/array group → a quieter indented mono label row. No op\n    // column: the label sits at the row indent so child leaves (whose icon\n    // starts one step further in) read as nested beneath it.\n    return (\n        <Box\n            display=\"grid\"\n            gridTemplateColumns=\"1fr auto\"\n            alignItems=\"center\"\n            px=\"18px\"\n            py={metrics.rowPadY}\n            pl={`${18 + depth * metrics.indentStep}px`}\n            gap=\"16px\"\n            borderBottomWidth=\"1px\"\n            borderBottomColor=\"border.subtle\"\n        >\n            <HStack gap=\"6px\" minW={0}>\n                <Text as=\"span\" fontFamily=\"mono\" fontSize=\"11px\" fontWeight={600} letterSpacing=\"0.08em\" textTransform=\"uppercase\" color=\"fg.muted\" overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\">{node.label}</Text>\n                <Text as=\"span\" fontFamily=\"mono\" fontSize=\"10px\" color=\"fg.subtle\">· {node.leafCount}</Text>\n            </HStack>\n            {showActions && (\n                <ActionBtn icon={faXmark} title=\"Discard all changes here\" onClick={handleDiscardAll} size={metrics.actionBtnSize} />\n            )}\n        </Box>\n    );\n});\n\n// =============================================================================\n// Main component\n// =============================================================================\n\nexport interface EastChakraDiffProps {\n    value: DiffValue;\n    storageKey: string;\n}\n\nconst EastChakraDiff = memo(function EastChakraDiff({ value }: EastChakraDiffProps) {\n    const cache = getReactiveDatasetCache();\n    const staged = getStagedStore();\n    const workspace = cache.getConfig().workspace ?? \"\";\n\n    // Local state — tracks user choices, separate from server data.\n    const [conflicts, setConflicts] = useState<{ pathStr: string; conflict: Conflict }[] | null>(null);\n    const [resolutions, setResolutions] = useState<Map<string, Resolution>>(new Map());\n    const [committing, setCommitting] = useState(false);\n\n    const irBindings = useMemo(\n        () => (value.bindings ?? []) as ValueTypeOf<typeof DiffBindingType>[],\n        [value.bindings],\n    );\n    const interactive = !(getOpt(value.readonly) ?? false);\n    const onCommittedFn = getOpt(value.onCommitted) as (() => void) | undefined;\n    const onDiscardedFn = getOpt(value.onDiscarded) as (() => void) | undefined;\n    const density = resolveDensity(value.density);\n    const metrics = DENSITY_METRICS[density];\n\n    const eyebrow = useSlotRecipe({ key: \"eyebrowRow\" });\n    const es = eyebrow({});\n    const commit = useSlotRecipe({ key: \"commitBar\" });\n    const cs = commit({});\n\n    // Subscribe — every binding's source path always; patch path when present.\n    // Both StagedStore and ReactiveDatasetCache may carry the in-flight change,\n    // depending on the binding's commit kind.\n    const allDatasetPaths = useMemo(() => {\n        const paths: TreePath[] = [];\n        for (const b of irBindings) {\n            paths.push(b.source as TreePath);\n            if (b.patch.type === \"some\") paths.push(b.patch.value as TreePath);\n        }\n        return paths;\n    }, [irBindings]);\n    const allSourcePaths = useMemo(\n        () => irBindings.map(b => b.source as TreePath),\n        [irBindings],\n    );\n    const stagedVersion = useStagedKeyVersions(workspace, allSourcePaths);\n    const datasetVersion = useDatasetKeyVersions(workspace, allDatasetPaths);\n    const bindings = useMemo(\n        () => deriveBindings(workspace, irBindings),\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        [workspace, irBindings, stagedVersion, datasetVersion],\n    );\n\n    // Clear conflicts/resolutions when the patch shape changes (IR refresh,\n    // server moved, or user discarded a leaf in conflict mode). Stale\n    // resolutions could otherwise apply to paths that no longer exist.\n    useEffect(() => {\n        setConflicts(null);\n        setResolutions(new Map());\n    }, [value, stagedVersion, datasetVersion]);\n\n    // Hide bindings with no leaves — covers the \"buffered === snapshot\" edge\n    // case where StagedStore still holds an entry but the user reverted it.\n    const visibleBindings = useMemo(\n        () => bindings.filter(b => b.leaves.length > 0),\n        [bindings],\n    );\n\n    const totalLeaves = useMemo(\n        () => visibleBindings.reduce((acc, b) => acc + b.leaves.length, 0),\n        [visibleBindings],\n    );\n\n    // Handlers ---------------------------------------------------------------\n\n    /** Mutates the staged buffer to revert the listed leaf paths under a\n     *  binding. Bridges Diff \"discard\" actions to {@link StagedStore}: builds\n     *  a pruned patch (everything *except* the discarded leaves), applies it\n     *  to the snapshot, writes the result as the new buffered value. If the\n     *  resulting buffer matches the snapshot, drops the staged entry instead. */\n    const discardPaths = useCallback((pathStr: string, leafPaths: string[]) => {\n        const b = visibleBindings.find(x => x.pathStr === pathStr);\n        if (!b) return;\n\n        // Keep everything *except* the leaves the user discarded.\n        const reject = new Set<string>(leafPaths);\n        const pruned = prunePatchFor(b.stateType)(b.userPatch, path => !reject.has(pathToString(path)));\n\n        if (b.mode.kind === \"apply-patch-to-source\") {\n            // Patch lives in a sibling e3.input. Write the pruned patch\n            // directly to that path. `unchanged` clears it.\n            const patchPath = b.mode.patchPath!;\n            const patchType = b.mode.patchType!;\n            void cache.write(workspace, patchPath, encodeBeast2For(patchType)(pruned));\n            return;\n        }\n\n        // Staged kinds (apply-buffer-to-source / publish-buffer-to-patch)\n        // both keep edits in the StagedStore buffer. Apply the pruned\n        // patch to the buffer's basis (snapshot for apply-buffer-to-source,\n        // live source for publish-buffer-to-patch) to compute the new\n        // buffered value.\n        const entry = staged.getEntry(workspace, b.path);\n        if (!entry) return;\n\n        if (pruned.type === \"unchanged\") {\n            staged.discard(workspace, b.path);\n            return;\n        }\n\n        const decode = decodeBeast2For(b.stateType);\n        const encode = encodeBeast2For(b.stateType);\n        const basisBytes = b.mode.kind === \"apply-buffer-to-source\"\n            ? entry.snapshot\n            : (cache.read(workspace, b.path) ?? entry.snapshot);\n        const basisVal = decode(basisBytes);\n        const newBuffered = applyFor(b.stateType)(basisVal, pruned);\n        if (equalFor(b.stateType)(basisVal, newBuffered)) {\n            staged.discard(workspace, b.path);\n            return;\n        }\n        staged.write(workspace, b.path, entry.snapshot, encode(newBuffered));\n    }, [visibleBindings, staged, workspace, cache]);\n\n    const discardLeaf = useCallback((pathStr: string, leafPath: string) => {\n        discardPaths(pathStr, [leafPath]);\n    }, [discardPaths]);\n\n    const discardSubtree = useCallback((pathStr: string, leafPaths: string[]) => {\n        discardPaths(pathStr, leafPaths);\n    }, [discardPaths]);\n\n    const setResolution = useCallback((pathStr: string, conflictPath: string, r: Resolution) => {\n        const key = rowKey(pathStr, conflictPath);\n        setResolutions(prev => {\n            const next = new Map(prev);\n            next.set(key, r);\n            return next;\n        });\n    }, []);\n\n    const onApply = useCallback(async () => {\n        if (committing) return;\n        setCommitting(true);\n        try {\n            // Per binding: detect conflicts, merge, apply, commit. Discard\n            // already mutated the staged buffer, so b.userPatch is clean —\n            // no pruning step here.\n            const detected: { pathStr: string; conflict: Conflict }[] = [];\n            const merges: Array<{ b: BindingState; merged: any }> = [];\n\n            for (const b of visibleBindings) {\n                if (b.userPatch.type === \"unchanged\") {\n                    merges.push({ b, merged: variant(\"unchanged\", null) });\n                    continue;\n                }\n\n                // The 3-way merge tool only fires for `apply-buffer-to-source`\n                // — the other commit kinds don't carry a separate snapshot\n                // to detect drift against.\n                if (b.mode.kind !== \"apply-buffer-to-source\"\n                    || !b.mode.serverPatch\n                    || b.mode.serverPatch.type === \"unchanged\") {\n                    merges.push({ b, merged: b.userPatch });\n                    continue;\n                }\n\n                const serverPatch = b.mode.serverPatch;\n                const detector = detectConflictsFor(b.stateType);\n                const here = detector(b.userPatch, serverPatch);\n\n                // Try resolving — collect any unresolved into the conflict UI.\n                const resolutionsHere = new Map<string, Resolution>();\n                for (const c of here) {\n                    const r = resolutions.get(rowKey(b.pathStr, c.path));\n                    if (r) resolutionsHere.set(c.path, r);\n                    else detected.push({ pathStr: b.pathStr, conflict: c });\n                }\n\n                if (detected.length === 0) {\n                    try {\n                        const merged = mergeWithResolutionsFor(b.stateType)(b.userPatch, serverPatch, resolutionsHere);\n                        merges.push({ b, merged });\n                    } catch (err) {\n                        if (err instanceof ConflictError) {\n                            for (const c of err.conflicts) {\n                                detected.push({ pathStr: b.pathStr, conflict: c });\n                            }\n                        } else throw err;\n                    }\n                }\n            }\n\n            if (detected.length > 0) {\n                setConflicts(detected);\n                return; // user must resolve before next Apply attempt.\n            }\n\n            // All clean — apply each merged patch + write + clear local state.\n            for (const { b, merged } of merges) {\n                const decode = decodeBeast2For(b.stateType);\n                const encode = encodeBeast2For(b.stateType);\n\n                if (b.mode.kind === \"apply-patch-to-source\") {\n                    // Apply the patch dataset to the source, then clear it.\n                    // Both writes go through cache.batch() so subscribers\n                    // see a single consistent post-commit state.\n                    const patchPath = b.mode.patchPath!;\n                    const patchType = b.mode.patchType!;\n                    const encodePatch = encodeBeast2For(patchType);\n                    if (merged.type === \"unchanged\") {\n                        await cache.write(workspace, patchPath, encodePatch(variant(\"unchanged\", null)));\n                        continue;\n                    }\n                    const sourceBytes = cache.read(workspace, b.path);\n                    if (!sourceBytes) continue;\n                    const next = applyFor(b.stateType)(decode(sourceBytes), merged);\n                    const writes: Promise<void>[] = [];\n                    cache.batch(() => {\n                        writes.push(cache.write(workspace, b.path, encode(next)));\n                        writes.push(cache.write(workspace, patchPath, encodePatch(variant(\"unchanged\", null))));\n                    });\n                    await Promise.all(writes);\n                    continue;\n                }\n\n                if (b.mode.kind === \"publish-buffer-to-patch\") {\n                    // Publish: write the merged patch (computed earlier as\n                    // diff(source, buffer)) to the patch dataset, drop the\n                    // buffer. Source is untouched.\n                    const patchPath = b.mode.patchPath!;\n                    const patchType = b.mode.patchType!;\n                    const encodePatch = encodeBeast2For(patchType);\n                    await cache.write(workspace, patchPath, encodePatch(merged));\n                    staged.discard(workspace, b.path);\n                    continue;\n                }\n\n                // commitKind === \"apply-buffer-to-source\": apply merged\n                // (which is the user's patch with conflict resolutions\n                // baked in) to the snapshot to compute the new value, then\n                // write it to source.\n                if (merged.type === \"unchanged\") {\n                    staged.discard(workspace, b.path);\n                    continue;\n                }\n                const snapshot = decode(staged.getEntry(workspace, b.path)!.snapshot);\n                const next = applyFor(b.stateType)(snapshot, merged);\n                await cache.write(workspace, b.path, encode(next));\n                staged.discard(workspace, b.path);\n            }\n\n            setConflicts(null);\n            setResolutions(new Map());\n            if (onCommittedFn) queueMicrotask(() => onCommittedFn());\n        } catch (err) {\n            console.error(\"[Diff.onApply] failed during apply:\", err);\n            throw err;\n        } finally {\n            setCommitting(false);\n        }\n    }, [committing, visibleBindings, resolutions, cache, staged, workspace, onCommittedFn]);\n\n    const onDiscardAll = useCallback(() => {\n        for (const b of visibleBindings) {\n            if (b.mode.kind === \"apply-patch-to-source\") {\n                // Patch lives in a sibling dataset — clear it.\n                const patchPath = b.mode.patchPath!;\n                const patchType = b.mode.patchType!;\n                const encodePatch = encodeBeast2For(patchType);\n                void cache.write(workspace, patchPath, encodePatch(variant(\"unchanged\", null)));\n            } else {\n                // apply-buffer-to-source / publish-buffer-to-patch — both\n                // keep the in-flight change in the staged buffer; drop it.\n                staged.discard(workspace, b.path);\n            }\n        }\n        setConflicts(null);\n        setResolutions(new Map());\n        if (onDiscardedFn) queueMicrotask(() => onDiscardedFn());\n    }, [visibleBindings, staged, workspace, cache, onDiscardedFn]);\n\n    // Workspace not configured — diagnostic only visible to devs.\n    if (!cache.getConfig().workspace) {\n        return (\n            <Box layerStyle=\"banner.error\" borderRadius=\"md\" p=\"12px\" fontFamily=\"mono\" fontSize=\"xs\">\n                Diff renderer requires a configured workspace on the ReactiveDatasetCache.\n            </Box>\n        );\n    }\n\n    // Empty state — no staged edits.\n    if (visibleBindings.length === 0) {\n        return (\n            <Box\n                layerStyle=\"frame\"\n                p=\"28px\"\n                textAlign=\"center\"\n                color=\"fg.subtle\"\n                fontFamily=\"mono\"\n                fontSize=\"11px\"\n                fontWeight=\"600\"\n                letterSpacing=\"0.12em\"\n                textTransform=\"uppercase\"\n            >\n                No staged edits to review\n            </Box>\n        );\n    }\n\n    // Render -----------------------------------------------------------------\n\n    const inConflictMode = conflicts !== null && conflicts.length > 0;\n    const resolvedCount = inConflictMode\n        ? conflicts!.reduce(\n            (n, { pathStr, conflict }) => n + (resolutions.has(rowKey(pathStr, conflict.path)) ? 1 : 0),\n            0,\n        )\n        : 0;\n    const allConflictsResolved = inConflictMode && resolvedCount === conflicts!.length;\n\n    // Stale leaves — overlay-mode patch ops whose `before` doesn't match the\n    // current source. `applyFor` would throw on commit, so block Apply until\n    // the user discards or re-edits the stale leaves.\n    const staleLeafCount = visibleBindings.reduce(\n        (n, b) => n + b.leaves.reduce((m, l) => m + (l.stale ? 1 : 0), 0),\n        0,\n    );\n    const hasStaleLeaves = staleLeafCount > 0;\n\n    return (\n        <Box\n            layerStyle=\"frame\"\n            fontFamily=\"body\"\n            borderColor={inConflictMode ? \"fg.warning\" : \"border.strong\"}\n        >\n            {/* Header — single eyebrow-row: label · counts · status flag. */}\n            <Box css={es.root}>\n                <Box css={es.lbl}>Pending changes</Box>\n                <Box css={es.meta} gap=\"0\">\n                    <Box as=\"span\">{visibleBindings.length} staged</Box>\n                    <Box as=\"span\" css={es.sep}>·</Box>\n                    <Box as=\"span\">{totalLeaves} change{totalLeaves === 1 ? \"\" : \"s\"}</Box>\n                    <Box as=\"span\" css={es.sep}>·</Box>\n                    {inConflictMode\n                        ? <StatusFlag tone={allConflictsResolved ? \"success\" : \"danger\"} label={allConflictsResolved ? \"Ready\" : `${conflicts!.length} conflict${conflicts!.length === 1 ? \"\" : \"s\"}`} />\n                        : hasStaleLeaves\n                        ? <StatusFlag tone=\"warning\" label={`${staleLeafCount} stale`} />\n                        : <StatusFlag tone=\"success\" label=\"No conflicts\" />}\n                </Box>\n            </Box>\n\n            {inConflictMode && (\n                <Box\n                    display=\"flex\"\n                    alignItems=\"center\"\n                    gap=\"8px\"\n                    px=\"18px\"\n                    py=\"10px\"\n                    bg=\"warning.subtle\"\n                    borderBottomWidth=\"1px\"\n                    borderBottomColor=\"border.subtle\"\n                    fontFamily=\"mono\"\n                    fontSize=\"11px\"\n                    letterSpacing=\"0.04em\"\n                    textTransform=\"uppercase\"\n                    color=\"fg.warning\"\n                >\n                    <FontAwesomeIcon icon={faTriangleExclamation} />\n                    Server moved during your edit — resolve {resolvedCount}/{conflicts!.length} before applying.\n                </Box>\n            )}\n\n            {/* Body */}\n            <Box py=\"4px\">\n                {visibleBindings.map(b => b.tree && (\n                    <NodeRender\n                        key={b.pathStr}\n                        node={b.tree}\n                        depth={0}\n                        binding={b}\n                        interactive={interactive}\n                        inConflictMode={inConflictMode}\n                        conflicts={conflicts}\n                        resolutions={resolutions}\n                        discardLeaf={discardLeaf}\n                        discardSubtree={discardSubtree}\n                        setResolution={setResolution}\n                        metrics={metrics}\n                    />\n                ))}\n            </Box>\n\n            {/* Footer — commit bar (hidden in read-only mode). */}\n            {interactive && (() => {\n                const applyDisabled = committing\n                    || (inConflictMode && !allConflictsResolved)\n                    || hasStaleLeaves\n                    || totalLeaves === 0;\n                const applyLabel = inConflictMode && !allConflictsResolved\n                    ? \"Resolve conflicts\"\n                    : `Apply ${totalLeaves} change${totalLeaves === 1 ? \"\" : \"s\"}`;\n                return (\n                    <Box css={cs.root}>\n                        <Box css={cs.draft}>\n                            {inConflictMode ? (\n                                <><Box as=\"span\" css={cs.pending}>{resolvedCount}/{conflicts!.length}</Box> resolved</>\n                            ) : hasStaleLeaves ? (\n                                <>Apply blocked · <Box as=\"span\" css={cs.pending}>{staleLeafCount} stale</Box></>\n                            ) : (\n                                <><Box as=\"span\" css={cs.pending}>{totalLeaves} change{totalLeaves === 1 ? \"\" : \"s\"}</Box> · clean merge</>\n                            )}\n                        </Box>\n                        <Box css={cs.btnRow}>\n                            <Box as=\"button\" css={cs.btnDanger} onClick={onDiscardAll}>\n                                Discard all\n                            </Box>\n                            <Box\n                                as=\"button\"\n                                css={cs.btnPrimary}\n                                aria-disabled={applyDisabled}\n                                onClick={applyDisabled ? undefined : onApply}\n                                title={hasStaleLeaves ? \"Discard or re-edit the stale changes before applying.\" : undefined}\n                            >\n                                {applyLabel}\n                            </Box>\n                        </Box>\n                    </Box>\n                );\n            })()}\n        </Box>\n    );\n}, (prev, next) => diffValueEqual(prev.value, next.value));\n\nfunction rowKey(pathStr: string, leafPath: string): string {\n    return `${pathStr}::${leafPath}`;\n}\n\nexport { EastChakraDiff };\n\n// =============================================================================\n// Side-effect — register the renderer for the Diff extension on module load.\n// =============================================================================\n\nimplementUIComponent(Diff.Component, EastChakraDiff);\n","export default function cc(names) {\n  if (typeof names === \"string\" || typeof names === \"number\") return \"\" + names\n\n  let out = \"\"\n\n  if (Array.isArray(names)) {\n    for (let i = 0, tmp; i < names.length; i++) {\n      if ((tmp = cc(names[i])) !== \"\") {\n        out += (out && \" \") + tmp\n      }\n    }\n  } else {\n    for (let k in names) {\n      if (names[k]) out += (out && \" \") + k\n    }\n  }\n\n  return out\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","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\";\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","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\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","// 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","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","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","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","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 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","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 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 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 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","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","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\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","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_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, 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","export default function(event) {\n  let sourceEvent;\n  while (sourceEvent = event.sourceEvent) event = sourceEvent;\n  return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n  event = sourceEvent(event);\n  if (node === undefined) node = event.currentTarget;\n  if (node) {\n    var svg = node.ownerSVGElement || node;\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    if (node.getBoundingClientRect) {\n      var rect = node.getBoundingClientRect();\n      return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n    }\n  }\n  return [event.pageX, event.pageY];\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\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, nonpassivecapture);\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 x => () => x;\n","export default function DragEvent(type, {\n  sourceEvent,\n  subject,\n  target,\n  identifier,\n  active,\n  x, y, dx, dy,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    subject: {value: subject, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    identifier: {value: identifier, enumerable: true, configurable: true},\n    active: {value: active, enumerable: true, configurable: true},\n    x: {value: x, enumerable: true, configurable: true},\n    y: {value: y, enumerable: true, configurable: true},\n    dx: {value: dx, enumerable: true, configurable: true},\n    dy: {value: dy, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\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 {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, 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(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n  return this.parentNode;\n}\n\nfunction defaultSubject(event, 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, nonpassive)\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(event, d) {\n    if (touchending || !filter.call(this, event, d)) return;\n    var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n    if (!gesture) return;\n    select(event.view)\n      .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n      .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n    nodrag(event.view);\n    nopropagation(event);\n    mousemoving = false;\n    mousedownx = event.clientX;\n    mousedowny = event.clientY;\n    gesture(\"start\", event);\n  }\n\n  function mousemoved(event) {\n    noevent(event);\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\", event);\n  }\n\n  function mouseupped(event) {\n    select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n    yesdrag(event.view, mousemoving);\n    noevent(event);\n    gestures.mouse(\"end\", event);\n  }\n\n  function touchstarted(event, d) {\n    if (!filter.call(this, event, d)) return;\n    var touches = event.changedTouches,\n        c = container.call(this, event, d),\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n        nopropagation(event);\n        gesture(\"start\", event, touches[i]);\n      }\n    }\n  }\n\n  function touchmoved(event) {\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(event);\n        gesture(\"drag\", event, touches[i]);\n      }\n    }\n  }\n\n  function touchended(event) {\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(event);\n        gesture(\"end\", event, touches[i]);\n      }\n    }\n  }\n\n  function beforestart(that, container, event, d, identifier, touch) {\n    var dispatch = listeners.copy(),\n        p = pointer(touch || event, container), dx, dy,\n        s;\n\n    if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n        sourceEvent: event,\n        target: drag,\n        identifier,\n        active,\n        x: p[0],\n        y: p[1],\n        dx: 0,\n        dy: 0,\n        dispatch\n      }), d)) == null) return;\n\n    dx = s.x - p[0] || 0;\n    dy = s.y - p[1] || 0;\n\n    return function gesture(type, event, touch) {\n      var p0 = p, n;\n      switch (type) {\n        case \"start\": gestures[identifier] = gesture, n = active++; break;\n        case \"end\": delete gestures[identifier], --active; // falls through\n        case \"drag\": p = pointer(touch || event, container), n = active; break;\n      }\n      dispatch.call(\n        type,\n        that,\n        new DragEvent(type, {\n          sourceEvent: event,\n          subject: s,\n          target: drag,\n          identifier,\n          active: n,\n          x: p[0] + dx,\n          y: p[1] + dy,\n          dx: p[0] - p0[0],\n          dy: p[1] - p0[1],\n          dispatch\n        }),\n        d\n      );\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","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(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\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_formatHex8() {\n  return this.rgb().formatHex8();\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(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(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() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\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  formatHex8: rgb_formatHex8,\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_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\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(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(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() {\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  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\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() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\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(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb() {\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(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb() {\n    return hcl2lab(this).rgb();\n  }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} 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) * degrees - 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(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(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() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\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","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","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","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 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","var 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\nexport default (function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(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 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4);\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","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","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 interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\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 {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 {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 {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","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 {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 {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","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 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 {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 {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 {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","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 {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","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","export default x => () => x;\n","export default function ZoomEvent(type, {\n  sourceEvent,\n  target,\n  transform,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    transform: {value: transform, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\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","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\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 {select, pointer} 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.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n  return (!event.ctrlKey || event.type === 'wheel') && !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(event) {\n  return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\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      touchfirst,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0,\n      tapDistance = 10;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled, {passive: false})\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(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform, point, event) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform, point, event);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n          .event(event)\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, event) {\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, event);\n  };\n\n  zoom.scaleTo = function(selection, k, p, event) {\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, event);\n  };\n\n  zoom.translateBy = function(selection, x, y, event) {\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    }, null, event);\n  };\n\n  zoom.translateTo = function(selection, x, y, p, event) {\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, event);\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, event) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args).event(event),\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.sourceEvent = null;\n    this.extent = extent.apply(that, args);\n    this.taps = 0;\n  }\n\n  Gesture.prototype = {\n    event: function(event) {\n      if (event) this.sourceEvent = event;\n      return this;\n    },\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      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new ZoomEvent(type, {\n          sourceEvent: this.sourceEvent,\n          target: zoom,\n          type,\n          transform: this.that.__zoom,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function wheeled(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, args).event(event),\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 = pointer(event);\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(event);\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(event, ...args) {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var currentTarget = event.currentTarget,\n        g = gesture(this, args, true).event(event),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = pointer(event, currentTarget),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation(event);\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved(event) {\n      noevent(event);\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.event(event)\n       .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped(event) {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent(event);\n      g.event(event).end();\n    }\n  }\n\n  function dblclicked(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, 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, args), translateExtent);\n\n    noevent(event);\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n    else select(this).call(zoom.transform, t1, p0, event);\n  }\n\n  function touchstarted(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.touches,\n        n = touches.length,\n        g = gesture(this, args, event.changedTouches.length === n).event(event),\n        started, i, t, p;\n\n    nopropagation(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\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) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\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\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation(event);\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        t = pointer(t, this);\n        if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n          var p = select(this).on(\"dblclick.zoom\");\n          if (p) p.apply(this, arguments);\n        }\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  zoom.tapDistance = function(_) {\n    return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n  };\n\n  return zoom;\n}\n","import { drag } from 'd3-drag';\nimport { select, pointer } from 'd3-selection';\nimport { zoom, zoomIdentity, zoomTransform } from 'd3-zoom';\nimport { interpolateZoom, interpolate } from 'd3-interpolate';\n\nconst errorMessages = {\n    error001: () => '[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001',\n    error002: () => \"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.\",\n    error003: (nodeType) => `Node type \"${nodeType}\" not found. Using fallback type \"default\".`,\n    error004: () => 'The React Flow parent container needs a width and a height to render the graph.',\n    error005: () => 'Only child nodes can use a parent extent.',\n    error006: () => \"Can't create edge. An edge needs a source and a target.\",\n    error007: (id) => `The old edge with id=${id} does not exist.`,\n    error009: (type) => `Marker type \"${type}\" doesn't exist.`,\n    error008: (handleType, { id, sourceHandle, targetHandle }) => `Couldn't create edge for ${handleType} handle id: \"${handleType === 'source' ? sourceHandle : targetHandle}\", edge id: ${id}.`,\n    error010: () => 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.',\n    error011: (edgeType) => `Edge type \"${edgeType}\" not found. Using fallback type \"default\".`,\n    error012: (id) => `Node with id \"${id}\" does not exist, it may have been removed. This can happen when a node is deleted before the \"onNodeClick\" handler is called.`,\n    error013: (lib = 'react') => `It seems that you haven't loaded the styles. Please import '@xyflow/${lib}/dist/style.css' or base.css to make sure everything is working properly.`,\n    error014: () => 'useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.',\n    error015: () => 'It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.',\n};\nconst infiniteExtent = [\n    [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n    [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY],\n];\nconst elementSelectionKeys = ['Enter', ' ', 'Escape'];\nconst defaultAriaLabelConfig = {\n    'node.a11yDescription.default': 'Press enter or space to select a node. Press delete to remove it and escape to cancel.',\n    'node.a11yDescription.keyboardDisabled': 'Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.',\n    'node.a11yDescription.ariaLiveMessage': ({ direction, x, y }) => `Moved selected node ${direction}. New position, x: ${x}, y: ${y}`,\n    'edge.a11yDescription.default': 'Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.',\n    // Control elements\n    'controls.ariaLabel': 'Control Panel',\n    'controls.zoomIn.ariaLabel': 'Zoom In',\n    'controls.zoomOut.ariaLabel': 'Zoom Out',\n    'controls.fitView.ariaLabel': 'Fit View',\n    'controls.interactive.ariaLabel': 'Toggle Interactivity',\n    // Mini map\n    'minimap.ariaLabel': 'Mini Map',\n    // Handle\n    'handle.ariaLabel': 'Handle',\n};\n\n/**\n * The `ConnectionMode` is used to set the mode of connection between nodes.\n * The `Strict` mode is the default one and only allows source to target edges.\n * `Loose` mode allows source to source and target to target edges as well.\n *\n * @public\n */\nvar ConnectionMode;\n(function (ConnectionMode) {\n    ConnectionMode[\"Strict\"] = \"strict\";\n    ConnectionMode[\"Loose\"] = \"loose\";\n})(ConnectionMode || (ConnectionMode = {}));\n/**\n * This enum is used to set the different modes of panning the viewport when the\n * user scrolls. The `Free` mode allows the user to pan in any direction by scrolling\n * with a device like a trackpad. The `Vertical` and `Horizontal` modes restrict\n * scroll panning to only the vertical or horizontal axis, respectively.\n *\n * @public\n */\nvar PanOnScrollMode;\n(function (PanOnScrollMode) {\n    PanOnScrollMode[\"Free\"] = \"free\";\n    PanOnScrollMode[\"Vertical\"] = \"vertical\";\n    PanOnScrollMode[\"Horizontal\"] = \"horizontal\";\n})(PanOnScrollMode || (PanOnScrollMode = {}));\nvar SelectionMode;\n(function (SelectionMode) {\n    SelectionMode[\"Partial\"] = \"partial\";\n    SelectionMode[\"Full\"] = \"full\";\n})(SelectionMode || (SelectionMode = {}));\nconst initialConnection = {\n    inProgress: false,\n    isValid: null,\n    from: null,\n    fromHandle: null,\n    fromPosition: null,\n    fromNode: null,\n    to: null,\n    toHandle: null,\n    toPosition: null,\n    toNode: null,\n    pointer: null,\n};\n\n/**\n * If you set the `connectionLineType` prop on your [`<ReactFlow />`](/api-reference/react-flow#connection-connectionLineType)\n *component, it will dictate the style of connection line rendered when creating\n *new edges.\n *\n * @public\n *\n * @remarks If you choose to render a custom connection line component, this value will be\n *passed to your component as part of its [`ConnectionLineComponentProps`](/api-reference/types/connection-line-component-props).\n */\nvar ConnectionLineType;\n(function (ConnectionLineType) {\n    ConnectionLineType[\"Bezier\"] = \"default\";\n    ConnectionLineType[\"Straight\"] = \"straight\";\n    ConnectionLineType[\"Step\"] = \"step\";\n    ConnectionLineType[\"SmoothStep\"] = \"smoothstep\";\n    ConnectionLineType[\"SimpleBezier\"] = \"simplebezier\";\n})(ConnectionLineType || (ConnectionLineType = {}));\n/**\n * Edges may optionally have a marker on either end. The MarkerType type enumerates\n * the options available to you when configuring a given marker.\n *\n * @public\n */\nvar MarkerType;\n(function (MarkerType) {\n    MarkerType[\"Arrow\"] = \"arrow\";\n    MarkerType[\"ArrowClosed\"] = \"arrowclosed\";\n})(MarkerType || (MarkerType = {}));\n\n/**\n * While [`PanelPosition`](/api-reference/types/panel-position) can be used to place a\n * component in the corners of a container, the `Position` enum is less precise and used\n * primarily in relation to edges and handles.\n *\n * @public\n */\nvar Position;\n(function (Position) {\n    Position[\"Left\"] = \"left\";\n    Position[\"Top\"] = \"top\";\n    Position[\"Right\"] = \"right\";\n    Position[\"Bottom\"] = \"bottom\";\n})(Position || (Position = {}));\nconst oppositePosition = {\n    [Position.Left]: Position.Right,\n    [Position.Right]: Position.Left,\n    [Position.Top]: Position.Bottom,\n    [Position.Bottom]: Position.Top,\n};\n\n/**\n * @internal\n */\nfunction areConnectionMapsEqual(a, b) {\n    if (!a && !b) {\n        return true;\n    }\n    if (!a || !b || a.size !== b.size) {\n        return false;\n    }\n    if (!a.size && !b.size) {\n        return true;\n    }\n    for (const key of a.keys()) {\n        if (!b.has(key)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * We call the callback for all connections in a that are not in b\n *\n * @internal\n */\nfunction handleConnectionChange(a, b, cb) {\n    if (!cb) {\n        return;\n    }\n    const diff = [];\n    a.forEach((connection, key) => {\n        if (!b?.has(key)) {\n            diff.push(connection);\n        }\n    });\n    if (diff.length) {\n        cb(diff);\n    }\n}\nfunction getConnectionStatus(isValid) {\n    return isValid === null ? null : isValid ? 'valid' : 'invalid';\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Test whether an object is usable as an Edge\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Edge\n */\nconst isEdgeBase = (element) => 'id' in element && 'source' in element && 'target' in element;\n/**\n * Test whether an object is usable as a Node\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Node\n */\nconst isNodeBase = (element) => 'id' in element && 'position' in element && !('source' in element) && !('target' in element);\nconst isInternalNodeBase = (element) => 'id' in element && 'internals' in element && !('source' in element) && !('target' in element);\n/**\n * This util is used to tell you what nodes, if any, are connected to the given node\n * as the _target_ of an edge.\n * @public\n * @param node - The node to get the connected nodes from.\n * @param nodes - The array of all nodes.\n * @param edges - The array of all edges.\n * @returns An array of nodes that are connected over edges where the source is the given node.\n *\n * @example\n * ```ts\n *import { getOutgoers } from '@xyflow/react';\n *\n *const nodes = [];\n *const edges = [];\n *\n *const outgoers = getOutgoers(\n *  { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } },\n *  nodes,\n *  edges,\n *);\n *```\n */\nconst getOutgoers = (node, nodes, edges) => {\n    if (!node.id) {\n        return [];\n    }\n    const outgoerIds = new Set();\n    edges.forEach((edge) => {\n        if (edge.source === node.id) {\n            outgoerIds.add(edge.target);\n        }\n    });\n    return nodes.filter((n) => outgoerIds.has(n.id));\n};\n/**\n * This util is used to tell you what nodes, if any, are connected to the given node\n * as the _source_ of an edge.\n * @public\n * @param node - The node to get the connected nodes from.\n * @param nodes - The array of all nodes.\n * @param edges - The array of all edges.\n * @returns An array of nodes that are connected over edges where the target is the given node.\n *\n * @example\n * ```ts\n *import { getIncomers } from '@xyflow/react';\n *\n *const nodes = [];\n *const edges = [];\n *\n *const incomers = getIncomers(\n *  { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } },\n *  nodes,\n *  edges,\n *);\n *```\n */\nconst getIncomers = (node, nodes, edges) => {\n    if (!node.id) {\n        return [];\n    }\n    const incomersIds = new Set();\n    edges.forEach((edge) => {\n        if (edge.target === node.id) {\n            incomersIds.add(edge.source);\n        }\n    });\n    return nodes.filter((n) => incomersIds.has(n.id));\n};\nconst getNodePositionWithOrigin = (node, nodeOrigin = [0, 0]) => {\n    const { width, height } = getNodeDimensions(node);\n    const origin = node.origin ?? nodeOrigin;\n    const offsetX = width * origin[0];\n    const offsetY = height * origin[1];\n    return {\n        x: node.position.x - offsetX,\n        y: node.position.y - offsetY,\n    };\n};\n/**\n * Returns the bounding box that contains all the given nodes in an array. This can\n * be useful when combined with [`getViewportForBounds`](/api-reference/utils/get-viewport-for-bounds)\n * to calculate the correct transform to fit the given nodes in a viewport.\n * @public\n * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport.\n * @param nodes - Nodes to calculate the bounds for.\n * @returns Bounding box enclosing all nodes.\n *\n * @remarks This function was previously called `getRectOfNodes`\n *\n * @example\n * ```js\n *import { getNodesBounds } from '@xyflow/react';\n *\n *const nodes = [\n *  {\n *    id: 'a',\n *    position: { x: 0, y: 0 },\n *    data: { label: 'a' },\n *    width: 50,\n *    height: 25,\n *  },\n *  {\n *    id: 'b',\n *    position: { x: 100, y: 100 },\n *    data: { label: 'b' },\n *    width: 50,\n *    height: 25,\n *  },\n *];\n *\n *const bounds = getNodesBounds(nodes);\n *```\n */\nconst getNodesBounds = (nodes, params = { nodeOrigin: [0, 0] }) => {\n    if (process.env.NODE_ENV === 'development' && !params.nodeLookup) {\n        console.warn('Please use `getNodesBounds` from `useReactFlow`/`useSvelteFlow` hook to ensure correct values for sub flows. If not possible, you have to provide a nodeLookup to support sub flows.');\n    }\n    if (nodes.length === 0) {\n        return { x: 0, y: 0, width: 0, height: 0 };\n    }\n    const box = nodes.reduce((currBox, nodeOrId) => {\n        const isId = typeof nodeOrId === 'string';\n        let currentNode = !params.nodeLookup && !isId ? nodeOrId : undefined;\n        if (params.nodeLookup) {\n            currentNode = isId\n                ? params.nodeLookup.get(nodeOrId)\n                : !isInternalNodeBase(nodeOrId)\n                    ? params.nodeLookup.get(nodeOrId.id)\n                    : nodeOrId;\n        }\n        const nodeBox = currentNode ? nodeToBox(currentNode, params.nodeOrigin) : { x: 0, y: 0, x2: 0, y2: 0 };\n        return getBoundsOfBoxes(currBox, nodeBox);\n    }, { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity });\n    return boxToRect(box);\n};\n/**\n * Determines a bounding box that contains all given nodes in an array\n * @internal\n */\nconst getInternalNodesBounds = (nodeLookup, params = {}) => {\n    let box = { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity };\n    let hasVisibleNodes = false;\n    nodeLookup.forEach((node) => {\n        if (params.filter === undefined || params.filter(node)) {\n            box = getBoundsOfBoxes(box, nodeToBox(node));\n            hasVisibleNodes = true;\n        }\n    });\n    return hasVisibleNodes ? boxToRect(box) : { x: 0, y: 0, width: 0, height: 0 };\n};\nconst getNodesInside = (nodes, rect, [tx, ty, tScale] = [0, 0, 1], partially = false, \n// set excludeNonSelectableNodes if you want to pay attention to the nodes \"selectable\" attribute\nexcludeNonSelectableNodes = false) => {\n    const paneRect = {\n        ...pointToRendererPoint(rect, [tx, ty, tScale]),\n        width: rect.width / tScale,\n        height: rect.height / tScale,\n    };\n    const visibleNodes = [];\n    for (const node of nodes.values()) {\n        const { measured, selectable = true, hidden = false } = node;\n        if ((excludeNonSelectableNodes && !selectable) || hidden) {\n            continue;\n        }\n        const width = measured.width ?? node.width ?? node.initialWidth ?? null;\n        const height = measured.height ?? node.height ?? node.initialHeight ?? null;\n        const overlappingArea = getOverlappingArea(paneRect, nodeToRect(node));\n        const area = (width ?? 0) * (height ?? 0);\n        const partiallyVisible = partially && overlappingArea > 0;\n        const forceInitialRender = !node.internals.handleBounds;\n        const isVisible = forceInitialRender || partiallyVisible || overlappingArea >= area;\n        if (isVisible || node.dragging) {\n            visibleNodes.push(node);\n        }\n    }\n    return visibleNodes;\n};\n/**\n * This utility filters an array of edges, keeping only those where either the source or target\n * node is present in the given array of nodes.\n * @public\n * @param nodes - Nodes you want to get the connected edges for.\n * @param edges - All edges.\n * @returns Array of edges that connect any of the given nodes with each other.\n *\n * @example\n * ```js\n *import { getConnectedEdges } from '@xyflow/react';\n *\n *const nodes = [\n *  { id: 'a', position: { x: 0, y: 0 } },\n *  { id: 'b', position: { x: 100, y: 0 } },\n *];\n *\n *const edges = [\n *  { id: 'a->c', source: 'a', target: 'c' },\n *  { id: 'c->d', source: 'c', target: 'd' },\n *];\n *\n *const connectedEdges = getConnectedEdges(nodes, edges);\n * // => [{ id: 'a->c', source: 'a', target: 'c' }]\n *```\n */\nconst getConnectedEdges = (nodes, edges) => {\n    const nodeIds = new Set();\n    nodes.forEach((node) => {\n        nodeIds.add(node.id);\n    });\n    return edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target));\n};\nfunction getFitViewNodes(nodeLookup, options) {\n    const fitViewNodes = new Map();\n    const optionNodeIds = options?.nodes ? new Set(options.nodes.map((node) => node.id)) : null;\n    nodeLookup.forEach((n) => {\n        const isVisible = n.measured.width && n.measured.height && (options?.includeHiddenNodes || !n.hidden);\n        if (isVisible && (!optionNodeIds || optionNodeIds.has(n.id))) {\n            fitViewNodes.set(n.id, n);\n        }\n    });\n    return fitViewNodes;\n}\nasync function fitViewport({ nodes, width, height, panZoom, minZoom, maxZoom }, options) {\n    if (nodes.size === 0) {\n        return Promise.resolve(true);\n    }\n    const nodesToFit = getFitViewNodes(nodes, options);\n    const bounds = getInternalNodesBounds(nodesToFit);\n    const viewport = getViewportForBounds(bounds, width, height, options?.minZoom ?? minZoom, options?.maxZoom ?? maxZoom, options?.padding ?? 0.1);\n    await panZoom.setViewport(viewport, {\n        duration: options?.duration,\n        ease: options?.ease,\n        interpolate: options?.interpolate,\n    });\n    return Promise.resolve(true);\n}\n/**\n * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin.\n *\n * @internal\n * @returns position, positionAbsolute\n */\nfunction calculateNodePosition({ nodeId, nextPosition, nodeLookup, nodeOrigin = [0, 0], nodeExtent, onError, }) {\n    const node = nodeLookup.get(nodeId);\n    const parentNode = node.parentId ? nodeLookup.get(node.parentId) : undefined;\n    const { x: parentX, y: parentY } = parentNode ? parentNode.internals.positionAbsolute : { x: 0, y: 0 };\n    const origin = node.origin ?? nodeOrigin;\n    let extent = node.extent || nodeExtent;\n    if (node.extent === 'parent' && !node.expandParent) {\n        if (!parentNode) {\n            onError?.('005', errorMessages['error005']());\n        }\n        else {\n            const parentWidth = parentNode.measured.width;\n            const parentHeight = parentNode.measured.height;\n            if (parentWidth && parentHeight) {\n                extent = [\n                    [parentX, parentY],\n                    [parentX + parentWidth, parentY + parentHeight],\n                ];\n            }\n        }\n    }\n    else if (parentNode && isCoordinateExtent(node.extent)) {\n        extent = [\n            [node.extent[0][0] + parentX, node.extent[0][1] + parentY],\n            [node.extent[1][0] + parentX, node.extent[1][1] + parentY],\n        ];\n    }\n    const positionAbsolute = isCoordinateExtent(extent)\n        ? clampPosition(nextPosition, extent, node.measured)\n        : nextPosition;\n    if (node.measured.width === undefined || node.measured.height === undefined) {\n        onError?.('015', errorMessages['error015']());\n    }\n    return {\n        position: {\n            x: positionAbsolute.x - parentX + (node.measured.width ?? 0) * origin[0],\n            y: positionAbsolute.y - parentY + (node.measured.height ?? 0) * origin[1],\n        },\n        positionAbsolute,\n    };\n}\n/**\n * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted\n * @internal\n * @param param.nodesToRemove - The nodes to remove\n * @param param.edgesToRemove - The edges to remove\n * @param param.nodes - All nodes\n * @param param.edges - All edges\n * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted\n * @returns nodes: nodes that can be deleted, edges: edges that can be deleted\n */\nasync function getElementsToRemove({ nodesToRemove = [], edgesToRemove = [], nodes, edges, onBeforeDelete, }) {\n    const nodeIds = new Set(nodesToRemove.map((node) => node.id));\n    const matchingNodes = [];\n    for (const node of nodes) {\n        if (node.deletable === false) {\n            continue;\n        }\n        const isIncluded = nodeIds.has(node.id);\n        const parentHit = !isIncluded && node.parentId && matchingNodes.find((n) => n.id === node.parentId);\n        if (isIncluded || parentHit) {\n            matchingNodes.push(node);\n        }\n    }\n    const edgeIds = new Set(edgesToRemove.map((edge) => edge.id));\n    const deletableEdges = edges.filter((edge) => edge.deletable !== false);\n    const connectedEdges = getConnectedEdges(matchingNodes, deletableEdges);\n    const matchingEdges = connectedEdges;\n    for (const edge of deletableEdges) {\n        const isIncluded = edgeIds.has(edge.id);\n        if (isIncluded && !matchingEdges.find((e) => e.id === edge.id)) {\n            matchingEdges.push(edge);\n        }\n    }\n    if (!onBeforeDelete) {\n        return {\n            edges: matchingEdges,\n            nodes: matchingNodes,\n        };\n    }\n    const onBeforeDeleteResult = await onBeforeDelete({\n        nodes: matchingNodes,\n        edges: matchingEdges,\n    });\n    if (typeof onBeforeDeleteResult === 'boolean') {\n        return onBeforeDeleteResult ? { edges: matchingEdges, nodes: matchingNodes } : { edges: [], nodes: [] };\n    }\n    return onBeforeDeleteResult;\n}\n\nconst clamp = (val, min = 0, max = 1) => Math.min(Math.max(val, min), max);\nconst clampPosition = (position = { x: 0, y: 0 }, extent, dimensions) => ({\n    x: clamp(position.x, extent[0][0], extent[1][0] - (dimensions?.width ?? 0)),\n    y: clamp(position.y, extent[0][1], extent[1][1] - (dimensions?.height ?? 0)),\n});\nfunction clampPositionToParent(childPosition, childDimensions, parent) {\n    const { width: parentWidth, height: parentHeight } = getNodeDimensions(parent);\n    const { x: parentX, y: parentY } = parent.internals.positionAbsolute;\n    return clampPosition(childPosition, [\n        [parentX, parentY],\n        [parentX + parentWidth, parentY + parentHeight],\n    ], childDimensions);\n}\n/**\n * Calculates the velocity of panning when the mouse is close to the edge of the canvas\n * @internal\n * @param value - One dimensional poition of the mouse (x or y)\n * @param min - Minimal position on canvas before panning starts\n * @param max - Maximal position on canvas before panning starts\n * @returns - A number between 0 and 1 that represents the velocity of panning\n */\nconst calcAutoPanVelocity = (value, min, max) => {\n    if (value < min) {\n        return clamp(Math.abs(value - min), 1, min) / min;\n    }\n    else if (value > max) {\n        return -clamp(Math.abs(value - max), 1, min) / min;\n    }\n    return 0;\n};\nconst calcAutoPan = (pos, bounds, speed = 15, distance = 40) => {\n    const xMovement = calcAutoPanVelocity(pos.x, distance, bounds.width - distance) * speed;\n    const yMovement = calcAutoPanVelocity(pos.y, distance, bounds.height - distance) * speed;\n    return [xMovement, yMovement];\n};\nconst getBoundsOfBoxes = (box1, box2) => ({\n    x: Math.min(box1.x, box2.x),\n    y: Math.min(box1.y, box2.y),\n    x2: Math.max(box1.x2, box2.x2),\n    y2: Math.max(box1.y2, box2.y2),\n});\nconst rectToBox = ({ x, y, width, height }) => ({\n    x,\n    y,\n    x2: x + width,\n    y2: y + height,\n});\nconst boxToRect = ({ x, y, x2, y2 }) => ({\n    x,\n    y,\n    width: x2 - x,\n    height: y2 - y,\n});\nconst nodeToRect = (node, nodeOrigin = [0, 0]) => {\n    const { x, y } = isInternalNodeBase(node)\n        ? node.internals.positionAbsolute\n        : getNodePositionWithOrigin(node, nodeOrigin);\n    return {\n        x,\n        y,\n        width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0,\n        height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0,\n    };\n};\nconst nodeToBox = (node, nodeOrigin = [0, 0]) => {\n    const { x, y } = isInternalNodeBase(node)\n        ? node.internals.positionAbsolute\n        : getNodePositionWithOrigin(node, nodeOrigin);\n    return {\n        x,\n        y,\n        x2: x + (node.measured?.width ?? node.width ?? node.initialWidth ?? 0),\n        y2: y + (node.measured?.height ?? node.height ?? node.initialHeight ?? 0),\n    };\n};\nconst getBoundsOfRects = (rect1, rect2) => boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\nconst getOverlappingArea = (rectA, rectB) => {\n    const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));\n    const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));\n    return Math.ceil(xOverlap * yOverlap);\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isRectObject = (obj) => isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y);\n/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nconst isNumeric = (n) => !isNaN(n) && isFinite(n);\n// used for a11y key board controls for nodes and edges\nconst devWarn = (id, message) => {\n    if (process.env.NODE_ENV === 'development') {\n        console.warn(`[React Flow]: ${message} Help: https://reactflow.dev/error#${id}`);\n    }\n};\nconst snapPosition = (position, snapGrid = [1, 1]) => {\n    return {\n        x: snapGrid[0] * Math.round(position.x / snapGrid[0]),\n        y: snapGrid[1] * Math.round(position.y / snapGrid[1]),\n    };\n};\nconst pointToRendererPoint = ({ x, y }, [tx, ty, tScale], snapToGrid = false, snapGrid = [1, 1]) => {\n    const position = {\n        x: (x - tx) / tScale,\n        y: (y - ty) / tScale,\n    };\n    return snapToGrid ? snapPosition(position, snapGrid) : position;\n};\nconst rendererPointToPoint = ({ x, y }, [tx, ty, tScale]) => {\n    return {\n        x: x * tScale + tx,\n        y: y * tScale + ty,\n    };\n};\n/**\n * Parses a single padding value to a number\n * @internal\n * @param padding - Padding to parse\n * @param viewport - Width or height of the viewport\n * @returns The padding in pixels\n */\nfunction parsePadding(padding, viewport) {\n    if (typeof padding === 'number') {\n        return Math.floor((viewport - viewport / (1 + padding)) * 0.5);\n    }\n    if (typeof padding === 'string' && padding.endsWith('px')) {\n        const paddingValue = parseFloat(padding);\n        if (!Number.isNaN(paddingValue)) {\n            return Math.floor(paddingValue);\n        }\n    }\n    if (typeof padding === 'string' && padding.endsWith('%')) {\n        const paddingValue = parseFloat(padding);\n        if (!Number.isNaN(paddingValue)) {\n            return Math.floor(viewport * paddingValue * 0.01);\n        }\n    }\n    console.error(`[React Flow] The padding value \"${padding}\" is invalid. Please provide a number or a string with a valid unit (px or %).`);\n    return 0;\n}\n/**\n * Parses the paddings to an object with top, right, bottom, left, x and y paddings\n * @internal\n * @param padding - Padding to parse\n * @param width - Width of the viewport\n * @param height - Height of the viewport\n * @returns An object with the paddings in pixels\n */\nfunction parsePaddings(padding, width, height) {\n    if (typeof padding === 'string' || typeof padding === 'number') {\n        const paddingY = parsePadding(padding, height);\n        const paddingX = parsePadding(padding, width);\n        return {\n            top: paddingY,\n            right: paddingX,\n            bottom: paddingY,\n            left: paddingX,\n            x: paddingX * 2,\n            y: paddingY * 2,\n        };\n    }\n    if (typeof padding === 'object') {\n        const top = parsePadding(padding.top ?? padding.y ?? 0, height);\n        const bottom = parsePadding(padding.bottom ?? padding.y ?? 0, height);\n        const left = parsePadding(padding.left ?? padding.x ?? 0, width);\n        const right = parsePadding(padding.right ?? padding.x ?? 0, width);\n        return { top, right, bottom, left, x: left + right, y: top + bottom };\n    }\n    return { top: 0, right: 0, bottom: 0, left: 0, x: 0, y: 0 };\n}\n/**\n * Calculates the resulting paddings if the new viewport is applied\n * @internal\n * @param bounds - Bounds to fit inside viewport\n * @param x - X position of the viewport\n * @param y - Y position of the viewport\n * @param zoom - Zoom level of the viewport\n * @param width - Width of the viewport\n * @param height - Height of the viewport\n * @returns An object with the minimum padding required to fit the bounds inside the viewport\n */\nfunction calculateAppliedPaddings(bounds, x, y, zoom, width, height) {\n    const { x: left, y: top } = rendererPointToPoint(bounds, [x, y, zoom]);\n    const { x: boundRight, y: boundBottom } = rendererPointToPoint({ x: bounds.x + bounds.width, y: bounds.y + bounds.height }, [x, y, zoom]);\n    const right = width - boundRight;\n    const bottom = height - boundBottom;\n    return {\n        left: Math.floor(left),\n        top: Math.floor(top),\n        right: Math.floor(right),\n        bottom: Math.floor(bottom),\n    };\n}\n/**\n * Returns a viewport that encloses the given bounds with padding.\n * @public\n * @remarks You can determine bounds of nodes with {@link getNodesBounds} and {@link getBoundsOfRects}\n * @param bounds - Bounds to fit inside viewport.\n * @param width - Width of the viewport.\n * @param height  - Height of the viewport.\n * @param minZoom - Minimum zoom level of the resulting viewport.\n * @param maxZoom - Maximum zoom level of the resulting viewport.\n * @param padding - Padding around the bounds.\n * @returns A transformed {@link Viewport} that encloses the given bounds which you can pass to e.g. {@link setViewport}.\n * @example\n * const { x, y, zoom } = getViewportForBounds(\n * { x: 0, y: 0, width: 100, height: 100},\n * 1200, 800, 0.5, 2);\n */\nconst getViewportForBounds = (bounds, width, height, minZoom, maxZoom, padding) => {\n    // First we resolve all the paddings to actual pixel values\n    const p = parsePaddings(padding, width, height);\n    const xZoom = (width - p.x) / bounds.width;\n    const yZoom = (height - p.y) / bounds.height;\n    // We calculate the new x, y, zoom for a centered view\n    const zoom = Math.min(xZoom, yZoom);\n    const clampedZoom = clamp(zoom, minZoom, maxZoom);\n    const boundsCenterX = bounds.x + bounds.width / 2;\n    const boundsCenterY = bounds.y + bounds.height / 2;\n    const x = width / 2 - boundsCenterX * clampedZoom;\n    const y = height / 2 - boundsCenterY * clampedZoom;\n    // Then we calculate the minimum padding, to respect asymmetric paddings\n    const newPadding = calculateAppliedPaddings(bounds, x, y, clampedZoom, width, height);\n    // We only want to have an offset if the newPadding is smaller than the required padding\n    const offset = {\n        left: Math.min(newPadding.left - p.left, 0),\n        top: Math.min(newPadding.top - p.top, 0),\n        right: Math.min(newPadding.right - p.right, 0),\n        bottom: Math.min(newPadding.bottom - p.bottom, 0),\n    };\n    return {\n        x: x - offset.left + offset.right,\n        y: y - offset.top + offset.bottom,\n        zoom: clampedZoom,\n    };\n};\nconst isMacOs = () => typeof navigator !== 'undefined' && navigator?.userAgent?.indexOf('Mac') >= 0;\nfunction isCoordinateExtent(extent) {\n    return extent !== undefined && extent !== null && extent !== 'parent';\n}\nfunction getNodeDimensions(node) {\n    return {\n        width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0,\n        height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0,\n    };\n}\nfunction nodeHasDimensions(node) {\n    return ((node.measured?.width ?? node.width ?? node.initialWidth) !== undefined &&\n        (node.measured?.height ?? node.height ?? node.initialHeight) !== undefined);\n}\n/**\n * Convert child position to absolute position\n *\n * @internal\n * @param position\n * @param parentId\n * @param nodeLookup\n * @param nodeOrigin\n * @returns an internal node with an absolute position\n */\nfunction evaluateAbsolutePosition(position, dimensions = { width: 0, height: 0 }, parentId, nodeLookup, nodeOrigin) {\n    const positionAbsolute = { ...position };\n    const parent = nodeLookup.get(parentId);\n    if (parent) {\n        const origin = parent.origin || nodeOrigin;\n        positionAbsolute.x += parent.internals.positionAbsolute.x - (dimensions.width ?? 0) * origin[0];\n        positionAbsolute.y += parent.internals.positionAbsolute.y - (dimensions.height ?? 0) * origin[1];\n    }\n    return positionAbsolute;\n}\nfunction areSetsEqual(a, b) {\n    if (a.size !== b.size) {\n        return false;\n    }\n    for (const item of a) {\n        if (!b.has(item)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Polyfill for Promise.withResolvers until we can use it in all browsers\n * @internal\n */\nfunction withResolvers() {\n    let resolve;\n    let reject;\n    const promise = new Promise((res, rej) => {\n        resolve = res;\n        reject = rej;\n    });\n    return { promise, resolve, reject };\n}\nfunction mergeAriaLabelConfig(partial) {\n    return { ...defaultAriaLabelConfig, ...(partial || {}) };\n}\n\nfunction getPointerPosition(event, { snapGrid = [0, 0], snapToGrid = false, transform, containerBounds }) {\n    const { x, y } = getEventPosition(event);\n    const pointerPos = pointToRendererPoint({ x: x - (containerBounds?.left ?? 0), y: y - (containerBounds?.top ?? 0) }, transform);\n    const { x: xSnapped, y: ySnapped } = snapToGrid ? snapPosition(pointerPos, snapGrid) : pointerPos;\n    // we need the snapped position in order to be able to skip unnecessary drag events\n    return {\n        xSnapped,\n        ySnapped,\n        ...pointerPos,\n    };\n}\nconst getDimensions = (node) => ({\n    width: node.offsetWidth,\n    height: node.offsetHeight,\n});\nconst getHostForElement = (element) => element?.getRootNode?.() || window?.document;\nconst inputTags = ['INPUT', 'SELECT', 'TEXTAREA'];\nfunction isInputDOMNode(event) {\n    // using composed path for handling shadow dom\n    const target = (event.composedPath?.()?.[0] || event.target);\n    if (target?.nodeType !== 1 /* Node.ELEMENT_NODE */)\n        return false;\n    const isInput = inputTags.includes(target.nodeName) || target.hasAttribute('contenteditable');\n    // when an input field is focused we don't want to trigger deletion or movement of nodes\n    return isInput || !!target.closest('.nokey');\n}\nconst isMouseEvent = (event) => 'clientX' in event;\nconst getEventPosition = (event, bounds) => {\n    const isMouse = isMouseEvent(event);\n    const evtX = isMouse ? event.clientX : event.touches?.[0].clientX;\n    const evtY = isMouse ? event.clientY : event.touches?.[0].clientY;\n    return {\n        x: evtX - (bounds?.left ?? 0),\n        y: evtY - (bounds?.top ?? 0),\n    };\n};\n/*\n * The handle bounds are calculated relative to the node element.\n * We store them in the internals object of the node in order to avoid\n * unnecessary recalculations.\n */\nconst getHandleBounds = (type, nodeElement, nodeBounds, zoom, nodeId) => {\n    const handles = nodeElement.querySelectorAll(`.${type}`);\n    if (!handles || !handles.length) {\n        return null;\n    }\n    return Array.from(handles).map((handle) => {\n        const handleBounds = handle.getBoundingClientRect();\n        return {\n            id: handle.getAttribute('data-handleid'),\n            type,\n            nodeId,\n            position: handle.getAttribute('data-handlepos'),\n            x: (handleBounds.left - nodeBounds.left) / zoom,\n            y: (handleBounds.top - nodeBounds.top) / zoom,\n            ...getDimensions(handle),\n        };\n    });\n};\n\nfunction getBezierEdgeCenter({ sourceX, sourceY, targetX, targetY, sourceControlX, sourceControlY, targetControlX, targetControlY, }) {\n    /*\n     * cubic bezier t=0.5 mid point, not the actual mid point, but easy to calculate\n     * https://stackoverflow.com/questions/67516101/how-to-find-distance-mid-point-of-bezier-curve\n     */\n    const centerX = sourceX * 0.125 + sourceControlX * 0.375 + targetControlX * 0.375 + targetX * 0.125;\n    const centerY = sourceY * 0.125 + sourceControlY * 0.375 + targetControlY * 0.375 + targetY * 0.125;\n    const offsetX = Math.abs(centerX - sourceX);\n    const offsetY = Math.abs(centerY - sourceY);\n    return [centerX, centerY, offsetX, offsetY];\n}\nfunction calculateControlOffset(distance, curvature) {\n    if (distance >= 0) {\n        return 0.5 * distance;\n    }\n    return curvature * 25 * Math.sqrt(-distance);\n}\nfunction getControlWithCurvature({ pos, x1, y1, x2, y2, c }) {\n    switch (pos) {\n        case Position.Left:\n            return [x1 - calculateControlOffset(x1 - x2, c), y1];\n        case Position.Right:\n            return [x1 + calculateControlOffset(x2 - x1, c), y1];\n        case Position.Top:\n            return [x1, y1 - calculateControlOffset(y1 - y2, c)];\n        case Position.Bottom:\n            return [x1, y1 + calculateControlOffset(y2 - y1, c)];\n    }\n}\n/**\n * The `getBezierPath` util returns everything you need to render a bezier edge\n *between two nodes.\n * @public\n * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path)\n * and `offsetX`, `offsetY` between source handle and label.\n * - `path`: the path to use in an SVG `<path>` element.\n * - `labelX`: the `x` position you can use to render a label for this edge.\n * - `labelY`: the `y` position you can use to render a label for this edge.\n * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the\n * middle of this path.\n * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the\n * middle of this path.\n * @example\n * ```js\n *  const source = { x: 0, y: 20 };\n *  const target = { x: 150, y: 100 };\n *\n *  const [path, labelX, labelY, offsetX, offsetY] = getBezierPath({\n *    sourceX: source.x,\n *    sourceY: source.y,\n *    sourcePosition: Position.Right,\n *    targetX: target.x,\n *    targetY: target.y,\n *    targetPosition: Position.Left,\n *});\n *```\n *\n * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to\n *work with multiple edge paths at once.\n */\nfunction getBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, curvature = 0.25, }) {\n    const [sourceControlX, sourceControlY] = getControlWithCurvature({\n        pos: sourcePosition,\n        x1: sourceX,\n        y1: sourceY,\n        x2: targetX,\n        y2: targetY,\n        c: curvature,\n    });\n    const [targetControlX, targetControlY] = getControlWithCurvature({\n        pos: targetPosition,\n        x1: targetX,\n        y1: targetY,\n        x2: sourceX,\n        y2: sourceY,\n        c: curvature,\n    });\n    const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n        sourceX,\n        sourceY,\n        targetX,\n        targetY,\n        sourceControlX,\n        sourceControlY,\n        targetControlX,\n        targetControlY,\n    });\n    return [\n        `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n        labelX,\n        labelY,\n        offsetX,\n        offsetY,\n    ];\n}\n\n// this is used for straight edges and simple smoothstep edges (LTR, RTL, BTT, TTB)\nfunction getEdgeCenter({ sourceX, sourceY, targetX, targetY, }) {\n    const xOffset = Math.abs(targetX - sourceX) / 2;\n    const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n    const yOffset = Math.abs(targetY - sourceY) / 2;\n    const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n    return [centerX, centerY, xOffset, yOffset];\n}\n/**\n * Returns the z-index for an edge based on the node it connects and whether it is selected.\n * By default, edges are rendered below nodes. This behaviour is different for edges that are\n * connected to nodes with a parent, as they are rendered above the parent node.\n */\nfunction getElevatedEdgeZIndex({ sourceNode, targetNode, selected = false, zIndex = 0, elevateOnSelect = false, zIndexMode = 'basic', }) {\n    if (zIndexMode === 'manual') {\n        return zIndex;\n    }\n    const edgeZ = elevateOnSelect && selected ? zIndex + 1000 : zIndex;\n    const nodeZ = Math.max(sourceNode.parentId || (elevateOnSelect && sourceNode.selected) ? sourceNode.internals.z : 0, targetNode.parentId || (elevateOnSelect && targetNode.selected) ? targetNode.internals.z : 0);\n    return edgeZ + nodeZ;\n}\nfunction isEdgeVisible({ sourceNode, targetNode, width, height, transform }) {\n    const edgeBox = getBoundsOfBoxes(nodeToBox(sourceNode), nodeToBox(targetNode));\n    if (edgeBox.x === edgeBox.x2) {\n        edgeBox.x2 += 1;\n    }\n    if (edgeBox.y === edgeBox.y2) {\n        edgeBox.y2 += 1;\n    }\n    const viewRect = {\n        x: -transform[0] / transform[2],\n        y: -transform[1] / transform[2],\n        width: width / transform[2],\n        height: height / transform[2],\n    };\n    return getOverlappingArea(viewRect, boxToRect(edgeBox)) > 0;\n}\n/**\n * The default edge ID generator function. Generates an ID based on the source, target, and handles.\n * @public\n * @param params - The connection or edge to generate an ID for.\n * @returns The generated edge ID.\n */\nconst getEdgeId = ({ source, sourceHandle, target, targetHandle }) => `xy-edge__${source}${sourceHandle || ''}-${target}${targetHandle || ''}`;\nconst connectionExists = (edge, edges) => {\n    return edges.some((el) => el.source === edge.source &&\n        el.target === edge.target &&\n        (el.sourceHandle === edge.sourceHandle || (!el.sourceHandle && !edge.sourceHandle)) &&\n        (el.targetHandle === edge.targetHandle || (!el.targetHandle && !edge.targetHandle)));\n};\n/**\n * This util is a convenience function to add a new Edge to an array of edges. It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one.\n * @public\n * @param edgeParams - Either an `Edge` or a `Connection` you want to add.\n * @param edges - The array of all current edges.\n * @param options - Optional configuration object.\n * @returns A new array of edges with the new edge added.\n *\n * @remarks If an edge with the same `target` and `source` already exists (and the same\n *`targetHandle` and `sourceHandle` if those are set), then this util won't add\n *a new edge even if the `id` property is different.\n *\n */\nconst addEdge = (edgeParams, edges, options = {}) => {\n    if (!edgeParams.source || !edgeParams.target) {\n        devWarn('006', errorMessages['error006']());\n        return edges;\n    }\n    const edgeIdGenerator = options.getEdgeId || getEdgeId;\n    let edge;\n    if (isEdgeBase(edgeParams)) {\n        edge = { ...edgeParams };\n    }\n    else {\n        edge = {\n            ...edgeParams,\n            id: edgeIdGenerator(edgeParams),\n        };\n    }\n    if (connectionExists(edge, edges)) {\n        return edges;\n    }\n    if (edge.sourceHandle === null) {\n        delete edge.sourceHandle;\n    }\n    if (edge.targetHandle === null) {\n        delete edge.targetHandle;\n    }\n    return edges.concat(edge);\n};\n/**\n * A handy utility to update an existing [`Edge`](/api-reference/types/edge) with new properties.\n *This searches your edge array for an edge with a matching `id` and updates its\n *properties with the connection you provide.\n * @public\n * @param oldEdge - The edge you want to update.\n * @param newConnection - The new connection you want to update the edge with.\n * @param edges - The array of all current edges.\n * @returns The updated edges array.\n *\n * @example\n * ```js\n *const onReconnect = useCallback(\n *  (oldEdge: Edge, newConnection: Connection) => setEdges((els) => reconnectEdge(oldEdge, newConnection, els)),[]);\n *```\n */\nconst reconnectEdge = (oldEdge, newConnection, edges, options = { shouldReplaceId: true }) => {\n    const { id: oldEdgeId, ...rest } = oldEdge;\n    if (!newConnection.source || !newConnection.target) {\n        devWarn('006', errorMessages['error006']());\n        return edges;\n    }\n    const foundEdge = edges.find((e) => e.id === oldEdge.id);\n    if (!foundEdge) {\n        devWarn('007', errorMessages['error007'](oldEdgeId));\n        return edges;\n    }\n    const edgeIdGenerator = options.getEdgeId || getEdgeId;\n    // Remove old edge and create the new edge with parameters of old edge.\n    const edge = {\n        ...rest,\n        id: options.shouldReplaceId ? edgeIdGenerator(newConnection) : oldEdgeId,\n        source: newConnection.source,\n        target: newConnection.target,\n        sourceHandle: newConnection.sourceHandle,\n        targetHandle: newConnection.targetHandle,\n    };\n    return edges.filter((e) => e.id !== oldEdgeId).concat(edge);\n};\n\n/**\n * Calculates the straight line path between two points.\n * @public\n * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path)\n * and `offsetX`, `offsetY` between source handle and label.\n *\n * - `path`: the path to use in an SVG `<path>` element.\n * - `labelX`: the `x` position you can use to render a label for this edge.\n * - `labelY`: the `y` position you can use to render a label for this edge.\n * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the\n * middle of this path.\n * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the\n * middle of this path.\n * @example\n * ```js\n *  const source = { x: 0, y: 20 };\n *  const target = { x: 150, y: 100 };\n *\n *  const [path, labelX, labelY, offsetX, offsetY] = getStraightPath({\n *    sourceX: source.x,\n *    sourceY: source.y,\n *    sourcePosition: Position.Right,\n *    targetX: target.x,\n *    targetY: target.y,\n *    targetPosition: Position.Left,\n *  });\n * ```\n * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once.\n */\nfunction getStraightPath({ sourceX, sourceY, targetX, targetY, }) {\n    const [labelX, labelY, offsetX, offsetY] = getEdgeCenter({\n        sourceX,\n        sourceY,\n        targetX,\n        targetY,\n    });\n    return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, labelX, labelY, offsetX, offsetY];\n}\n\nconst handleDirections = {\n    [Position.Left]: { x: -1, y: 0 },\n    [Position.Right]: { x: 1, y: 0 },\n    [Position.Top]: { x: 0, y: -1 },\n    [Position.Bottom]: { x: 0, y: 1 },\n};\nconst getDirection = ({ source, sourcePosition = Position.Bottom, target, }) => {\n    if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n        return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n    }\n    return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n};\nconst distance = (a, b) => Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n/*\n * With this function we try to mimic an orthogonal edge routing behaviour\n * It's not as good as a real orthogonal edge routing, but it's faster and good enough as a default for step and smooth step edges\n */\nfunction getPoints({ source, sourcePosition = Position.Bottom, target, targetPosition = Position.Top, center, offset, stepPosition, }) {\n    const sourceDir = handleDirections[sourcePosition];\n    const targetDir = handleDirections[targetPosition];\n    const sourceGapped = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset };\n    const targetGapped = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset };\n    const dir = getDirection({\n        source: sourceGapped,\n        sourcePosition,\n        target: targetGapped,\n    });\n    const dirAccessor = dir.x !== 0 ? 'x' : 'y';\n    const currDir = dir[dirAccessor];\n    let points = [];\n    let centerX, centerY;\n    const sourceGapOffset = { x: 0, y: 0 };\n    const targetGapOffset = { x: 0, y: 0 };\n    const [, , defaultOffsetX, defaultOffsetY] = getEdgeCenter({\n        sourceX: source.x,\n        sourceY: source.y,\n        targetX: target.x,\n        targetY: target.y,\n    });\n    // opposite handle positions, default case\n    if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n        if (dirAccessor === 'x') {\n            // Primary direction is horizontal, so stepPosition affects X coordinate\n            centerX = center.x ?? sourceGapped.x + (targetGapped.x - sourceGapped.x) * stepPosition;\n            centerY = center.y ?? (sourceGapped.y + targetGapped.y) / 2;\n        }\n        else {\n            // Primary direction is vertical, so stepPosition affects Y coordinate\n            centerX = center.x ?? (sourceGapped.x + targetGapped.x) / 2;\n            centerY = center.y ?? sourceGapped.y + (targetGapped.y - sourceGapped.y) * stepPosition;\n        }\n        /*\n         *    --->\n         *    |\n         * >---\n         */\n        const verticalSplit = [\n            { x: centerX, y: sourceGapped.y },\n            { x: centerX, y: targetGapped.y },\n        ];\n        /*\n         *    |\n         *  ---\n         *  |\n         */\n        const horizontalSplit = [\n            { x: sourceGapped.x, y: centerY },\n            { x: targetGapped.x, y: centerY },\n        ];\n        if (sourceDir[dirAccessor] === currDir) {\n            points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;\n        }\n        else {\n            points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;\n        }\n    }\n    else {\n        // sourceTarget means we take x from source and y from target, targetSource is the opposite\n        const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }];\n        const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }];\n        // this handles edges with same handle positions\n        if (dirAccessor === 'x') {\n            points = sourceDir.x === currDir ? targetSource : sourceTarget;\n        }\n        else {\n            points = sourceDir.y === currDir ? sourceTarget : targetSource;\n        }\n        if (sourcePosition === targetPosition) {\n            const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n            // if an edge goes from right to right for example (sourcePosition === targetPosition) and the distance between source.x and target.x is less than the offset, the added point and the gapped source/target will overlap. This leads to a weird edge path. To avoid this we add a gapOffset to the source/target\n            if (diff <= offset) {\n                const gapOffset = Math.min(offset - 1, offset - diff);\n                if (sourceDir[dirAccessor] === currDir) {\n                    sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) * gapOffset;\n                }\n                else {\n                    targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) * gapOffset;\n                }\n            }\n        }\n        // these are conditions for handling mixed handle positions like Right -> Bottom for example\n        if (sourcePosition !== targetPosition) {\n            const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x';\n            const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n            const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n            const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n            const flipSourceTarget = (sourceDir[dirAccessor] === 1 && ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n                (sourceDir[dirAccessor] !== 1 && ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n            if (flipSourceTarget) {\n                points = dirAccessor === 'x' ? sourceTarget : targetSource;\n            }\n        }\n        const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };\n        const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };\n        const maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x));\n        const maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y));\n        // we want to place the label on the longest segment of the edge\n        if (maxXDistance >= maxYDistance) {\n            centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n            centerY = points[0].y;\n        }\n        else {\n            centerX = points[0].x;\n            centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n        }\n    }\n    const gappedSource = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };\n    const gappedTarget = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };\n    const pathPoints = [\n        source,\n        // we only want to add the gapped source/target if they are different from the first/last point to avoid duplicates which can cause issues with the bends\n        ...(gappedSource.x !== points[0].x || gappedSource.y !== points[0].y ? [gappedSource] : []),\n        ...points,\n        ...(gappedTarget.x !== points[points.length - 1].x || gappedTarget.y !== points[points.length - 1].y\n            ? [gappedTarget]\n            : []),\n        target,\n    ];\n    return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\nfunction getBend(a, b, c, size) {\n    const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n    const { x, y } = b;\n    // no bend\n    if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n        return `L${x} ${y}`;\n    }\n    // first segment is horizontal\n    if (a.y === y) {\n        const xDir = a.x < c.x ? -1 : 1;\n        const yDir = a.y < c.y ? 1 : -1;\n        return `L ${x + bendSize * xDir},${y}Q ${x},${y} ${x},${y + bendSize * yDir}`;\n    }\n    const xDir = a.x < c.x ? 1 : -1;\n    const yDir = a.y < c.y ? -1 : 1;\n    return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\n/**\n * The `getSmoothStepPath` util returns everything you need to render a stepped path\n * between two nodes. The `borderRadius` property can be used to choose how rounded\n * the corners of those steps are.\n * @public\n * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path)\n * and `offsetX`, `offsetY` between source handle and label.\n *\n * - `path`: the path to use in an SVG `<path>` element.\n * - `labelX`: the `x` position you can use to render a label for this edge.\n * - `labelY`: the `y` position you can use to render a label for this edge.\n * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the\n * middle of this path.\n * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the\n * middle of this path.\n * @example\n * ```js\n *  const source = { x: 0, y: 20 };\n *  const target = { x: 150, y: 100 };\n *\n *  const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({\n *    sourceX: source.x,\n *    sourceY: source.y,\n *    sourcePosition: Position.Right,\n *    targetX: target.x,\n *    targetY: target.y,\n *    targetPosition: Position.Left,\n *  });\n * ```\n * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once.\n */\nfunction getSmoothStepPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, borderRadius = 5, centerX, centerY, offset = 20, stepPosition = 0.5, }) {\n    const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n        source: { x: sourceX, y: sourceY },\n        sourcePosition,\n        target: { x: targetX, y: targetY },\n        targetPosition,\n        center: { x: centerX, y: centerY },\n        offset,\n        stepPosition,\n    });\n    let path = `M${points[0].x} ${points[0].y}`;\n    for (let i = 1; i < points.length - 1; i++) {\n        path += getBend(points[i - 1], points[i], points[i + 1], borderRadius);\n    }\n    path += `L${points[points.length - 1].x} ${points[points.length - 1].y}`;\n    return [path, labelX, labelY, offsetX, offsetY];\n}\n\nfunction isNodeInitialized(node) {\n    return (node &&\n        !!(node.internals.handleBounds || node.handles?.length) &&\n        !!(node.measured.width || node.width || node.initialWidth));\n}\nfunction getEdgePosition(params) {\n    const { sourceNode, targetNode } = params;\n    if (!isNodeInitialized(sourceNode) || !isNodeInitialized(targetNode)) {\n        return null;\n    }\n    const sourceHandleBounds = sourceNode.internals.handleBounds || toHandleBounds(sourceNode.handles);\n    const targetHandleBounds = targetNode.internals.handleBounds || toHandleBounds(targetNode.handles);\n    const sourceHandle = getHandle$1(sourceHandleBounds?.source ?? [], params.sourceHandle);\n    const targetHandle = getHandle$1(\n    // when connection type is loose we can define all handles as sources and connect source -> source\n    params.connectionMode === ConnectionMode.Strict\n        ? targetHandleBounds?.target ?? []\n        : (targetHandleBounds?.target ?? []).concat(targetHandleBounds?.source ?? []), params.targetHandle);\n    if (!sourceHandle || !targetHandle) {\n        params.onError?.('008', errorMessages['error008'](!sourceHandle ? 'source' : 'target', {\n            id: params.id,\n            sourceHandle: params.sourceHandle,\n            targetHandle: params.targetHandle,\n        }));\n        return null;\n    }\n    const sourcePosition = sourceHandle?.position || Position.Bottom;\n    const targetPosition = targetHandle?.position || Position.Top;\n    const source = getHandlePosition(sourceNode, sourceHandle, sourcePosition);\n    const target = getHandlePosition(targetNode, targetHandle, targetPosition);\n    return {\n        sourceX: source.x,\n        sourceY: source.y,\n        targetX: target.x,\n        targetY: target.y,\n        sourcePosition,\n        targetPosition,\n    };\n}\nfunction toHandleBounds(handles) {\n    if (!handles) {\n        return null;\n    }\n    const source = [];\n    const target = [];\n    for (const handle of handles) {\n        handle.width = handle.width ?? 1;\n        handle.height = handle.height ?? 1;\n        if (handle.type === 'source') {\n            source.push(handle);\n        }\n        else if (handle.type === 'target') {\n            target.push(handle);\n        }\n    }\n    return {\n        source,\n        target,\n    };\n}\nfunction getHandlePosition(node, handle, fallbackPosition = Position.Left, center = false) {\n    const x = (handle?.x ?? 0) + node.internals.positionAbsolute.x;\n    const y = (handle?.y ?? 0) + node.internals.positionAbsolute.y;\n    const { width, height } = handle ?? getNodeDimensions(node);\n    if (center) {\n        return { x: x + width / 2, y: y + height / 2 };\n    }\n    const position = handle?.position ?? fallbackPosition;\n    switch (position) {\n        case Position.Top:\n            return { x: x + width / 2, y };\n        case Position.Right:\n            return { x: x + width, y: y + height / 2 };\n        case Position.Bottom:\n            return { x: x + width / 2, y: y + height };\n        case Position.Left:\n            return { x, y: y + height / 2 };\n    }\n}\nfunction getHandle$1(bounds, handleId) {\n    if (!bounds) {\n        return null;\n    }\n    // if no handleId is given, we use the first handle, otherwise we check for the id\n    return (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null;\n}\n\nfunction getMarkerId(marker, id) {\n    if (!marker) {\n        return '';\n    }\n    if (typeof marker === 'string') {\n        return marker;\n    }\n    const idPrefix = id ? `${id}__` : '';\n    return `${idPrefix}${Object.keys(marker)\n        .sort()\n        .map((key) => `${key}=${marker[key]}`)\n        .join('&')}`;\n}\nfunction createMarkerIds(edges, { id, defaultColor, defaultMarkerStart, defaultMarkerEnd, }) {\n    const ids = new Set();\n    return edges\n        .reduce((markers, edge) => {\n        [edge.markerStart || defaultMarkerStart, edge.markerEnd || defaultMarkerEnd].forEach((marker) => {\n            if (marker && typeof marker === 'object') {\n                const markerId = getMarkerId(marker, id);\n                if (!ids.has(markerId)) {\n                    markers.push({ id: markerId, color: marker.color || defaultColor, ...marker });\n                    ids.add(markerId);\n                }\n            }\n        });\n        return markers;\n    }, [])\n        .sort((a, b) => a.id.localeCompare(b.id));\n}\n\nfunction getNodeToolbarTransform(nodeRect, viewport, position, offset, align) {\n    let alignmentOffset = 0.5;\n    if (align === 'start') {\n        alignmentOffset = 0;\n    }\n    else if (align === 'end') {\n        alignmentOffset = 1;\n    }\n    /*\n     * position === Position.Top\n     * we set the x any y position of the toolbar based on the nodes position\n     */\n    let pos = [\n        (nodeRect.x + nodeRect.width * alignmentOffset) * viewport.zoom + viewport.x,\n        nodeRect.y * viewport.zoom + viewport.y - offset,\n    ];\n    // and than shift it based on the alignment. The shift values are in %.\n    let shift = [-100 * alignmentOffset, -100];\n    switch (position) {\n        case Position.Right:\n            pos = [\n                (nodeRect.x + nodeRect.width) * viewport.zoom + viewport.x + offset,\n                (nodeRect.y + nodeRect.height * alignmentOffset) * viewport.zoom + viewport.y,\n            ];\n            shift = [0, -100 * alignmentOffset];\n            break;\n        case Position.Bottom:\n            pos[1] = (nodeRect.y + nodeRect.height) * viewport.zoom + viewport.y + offset;\n            shift[1] = 0;\n            break;\n        case Position.Left:\n            pos = [\n                nodeRect.x * viewport.zoom + viewport.x - offset,\n                (nodeRect.y + nodeRect.height * alignmentOffset) * viewport.zoom + viewport.y,\n            ];\n            shift = [-100, -100 * alignmentOffset];\n            break;\n    }\n    return `translate(${pos[0]}px, ${pos[1]}px) translate(${shift[0]}%, ${shift[1]}%)`;\n}\n\nconst alignXToPercent = {\n    left: 0,\n    center: 50,\n    right: 100,\n};\nconst alignYToPercent = {\n    top: 0,\n    center: 50,\n    bottom: 100,\n};\nfunction getEdgeToolbarTransform(x, y, zoom, alignX = 'center', alignY = 'center') {\n    return `translate(${x}px, ${y}px) scale(${1 / zoom}) translate(${-(alignXToPercent[alignX] ?? 50)}%, ${-(alignYToPercent[alignY] ?? 50)}%)`;\n}\n\nconst SELECTED_NODE_Z = 1000;\nconst ROOT_PARENT_Z_INCREMENT = 10;\nconst defaultOptions = {\n    nodeOrigin: [0, 0],\n    nodeExtent: infiniteExtent,\n    elevateNodesOnSelect: true,\n    zIndexMode: 'basic',\n    defaults: {},\n};\nconst adoptUserNodesDefaultOptions = {\n    ...defaultOptions,\n    checkEquality: true,\n};\nfunction mergeObjects(base, incoming) {\n    const result = { ...base };\n    for (const key in incoming) {\n        if (incoming[key] !== undefined) {\n            // typecast is safe here, because we check for undefined\n            result[key] = incoming[key];\n        }\n    }\n    return result;\n}\nfunction updateAbsolutePositions(nodeLookup, parentLookup, options) {\n    const _options = mergeObjects(defaultOptions, options);\n    for (const node of nodeLookup.values()) {\n        if (node.parentId) {\n            updateChildNode(node, nodeLookup, parentLookup, _options);\n        }\n        else {\n            const positionWithOrigin = getNodePositionWithOrigin(node, _options.nodeOrigin);\n            const extent = isCoordinateExtent(node.extent) ? node.extent : _options.nodeExtent;\n            const clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(node));\n            node.internals.positionAbsolute = clampedPosition;\n        }\n    }\n}\nfunction parseHandles(userNode, internalNode) {\n    if (!userNode.handles) {\n        return !userNode.measured ? undefined : internalNode?.internals.handleBounds;\n    }\n    const source = [];\n    const target = [];\n    for (const handle of userNode.handles) {\n        const handleBounds = {\n            id: handle.id,\n            width: handle.width ?? 1,\n            height: handle.height ?? 1,\n            nodeId: userNode.id,\n            x: handle.x,\n            y: handle.y,\n            position: handle.position,\n            type: handle.type,\n        };\n        if (handle.type === 'source') {\n            source.push(handleBounds);\n        }\n        else if (handle.type === 'target') {\n            target.push(handleBounds);\n        }\n    }\n    return {\n        source,\n        target,\n    };\n}\nfunction isManualZIndexMode(zIndexMode) {\n    return zIndexMode === 'manual';\n}\nfunction adoptUserNodes(nodes, nodeLookup, parentLookup, options = {}) {\n    const _options = mergeObjects(adoptUserNodesDefaultOptions, options);\n    const rootParentIndex = { i: 0 };\n    const tmpLookup = new Map(nodeLookup);\n    const selectedNodeZ = _options?.elevateNodesOnSelect && !isManualZIndexMode(_options.zIndexMode) ? SELECTED_NODE_Z : 0;\n    let nodesInitialized = nodes.length > 0;\n    let hasSelectedNodes = false;\n    nodeLookup.clear();\n    parentLookup.clear();\n    for (const userNode of nodes) {\n        let internalNode = tmpLookup.get(userNode.id);\n        if (_options.checkEquality && userNode === internalNode?.internals.userNode) {\n            nodeLookup.set(userNode.id, internalNode);\n        }\n        else {\n            const positionWithOrigin = getNodePositionWithOrigin(userNode, _options.nodeOrigin);\n            const extent = isCoordinateExtent(userNode.extent) ? userNode.extent : _options.nodeExtent;\n            const clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(userNode));\n            internalNode = {\n                ..._options.defaults,\n                ...userNode,\n                measured: {\n                    width: userNode.measured?.width,\n                    height: userNode.measured?.height,\n                },\n                internals: {\n                    positionAbsolute: clampedPosition,\n                    // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured\n                    handleBounds: parseHandles(userNode, internalNode),\n                    z: calculateZ(userNode, selectedNodeZ, _options.zIndexMode),\n                    userNode,\n                },\n            };\n            nodeLookup.set(userNode.id, internalNode);\n        }\n        if ((internalNode.measured === undefined ||\n            internalNode.measured.width === undefined ||\n            internalNode.measured.height === undefined) &&\n            !internalNode.hidden) {\n            nodesInitialized = false;\n        }\n        if (userNode.parentId) {\n            updateChildNode(internalNode, nodeLookup, parentLookup, options, rootParentIndex);\n        }\n        hasSelectedNodes ||= userNode.selected ?? false;\n    }\n    return { nodesInitialized, hasSelectedNodes };\n}\nfunction updateParentLookup(node, parentLookup) {\n    if (!node.parentId) {\n        return;\n    }\n    const childNodes = parentLookup.get(node.parentId);\n    if (childNodes) {\n        childNodes.set(node.id, node);\n    }\n    else {\n        parentLookup.set(node.parentId, new Map([[node.id, node]]));\n    }\n}\n/**\n * Updates positionAbsolute and zIndex of a child node and the parentLookup.\n */\nfunction updateChildNode(node, nodeLookup, parentLookup, options, rootParentIndex) {\n    const { elevateNodesOnSelect, nodeOrigin, nodeExtent, zIndexMode } = mergeObjects(defaultOptions, options);\n    const parentId = node.parentId;\n    const parentNode = nodeLookup.get(parentId);\n    if (!parentNode) {\n        console.warn(`Parent node ${parentId} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);\n        return;\n    }\n    updateParentLookup(node, parentLookup);\n    // We just want to set the rootParentIndex for the first child\n    if (rootParentIndex &&\n        !parentNode.parentId &&\n        parentNode.internals.rootParentIndex === undefined &&\n        zIndexMode === 'auto') {\n        parentNode.internals.rootParentIndex = ++rootParentIndex.i;\n        parentNode.internals.z = parentNode.internals.z + rootParentIndex.i * ROOT_PARENT_Z_INCREMENT;\n    }\n    // But we need to update rootParentIndex.i also when parent has not been updated\n    if (rootParentIndex && parentNode.internals.rootParentIndex !== undefined) {\n        rootParentIndex.i = parentNode.internals.rootParentIndex;\n    }\n    const selectedNodeZ = elevateNodesOnSelect && !isManualZIndexMode(zIndexMode) ? SELECTED_NODE_Z : 0;\n    const { x, y, z } = calculateChildXYZ(node, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode);\n    const { positionAbsolute } = node.internals;\n    const positionChanged = x !== positionAbsolute.x || y !== positionAbsolute.y;\n    if (positionChanged || z !== node.internals.z) {\n        // we create a new object to mark the node as updated\n        nodeLookup.set(node.id, {\n            ...node,\n            internals: {\n                ...node.internals,\n                positionAbsolute: positionChanged ? { x, y } : positionAbsolute,\n                z,\n            },\n        });\n    }\n}\nfunction calculateZ(node, selectedNodeZ, zIndexMode) {\n    const zIndex = isNumeric(node.zIndex) ? node.zIndex : 0;\n    if (isManualZIndexMode(zIndexMode)) {\n        return zIndex;\n    }\n    return zIndex + (node.selected ? selectedNodeZ : 0);\n}\nfunction calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode) {\n    const { x: parentX, y: parentY } = parentNode.internals.positionAbsolute;\n    const childDimensions = getNodeDimensions(childNode);\n    const positionWithOrigin = getNodePositionWithOrigin(childNode, nodeOrigin);\n    const clampedPosition = isCoordinateExtent(childNode.extent)\n        ? clampPosition(positionWithOrigin, childNode.extent, childDimensions)\n        : positionWithOrigin;\n    let absolutePosition = clampPosition({ x: parentX + clampedPosition.x, y: parentY + clampedPosition.y }, nodeExtent, childDimensions);\n    if (childNode.extent === 'parent') {\n        absolutePosition = clampPositionToParent(absolutePosition, childDimensions, parentNode);\n    }\n    const childZ = calculateZ(childNode, selectedNodeZ, zIndexMode);\n    const parentZ = parentNode.internals.z ?? 0;\n    return {\n        x: absolutePosition.x,\n        y: absolutePosition.y,\n        z: parentZ >= childZ ? parentZ + 1 : childZ,\n    };\n}\nfunction handleExpandParent(children, nodeLookup, parentLookup, nodeOrigin = [0, 0]) {\n    const changes = [];\n    const parentExpansions = new Map();\n    // determine the expanded rectangle the child nodes would take for each parent\n    for (const child of children) {\n        const parent = nodeLookup.get(child.parentId);\n        if (!parent) {\n            continue;\n        }\n        const parentRect = parentExpansions.get(child.parentId)?.expandedRect ?? nodeToRect(parent);\n        const expandedRect = getBoundsOfRects(parentRect, child.rect);\n        parentExpansions.set(child.parentId, { expandedRect, parent });\n    }\n    if (parentExpansions.size > 0) {\n        parentExpansions.forEach(({ expandedRect, parent }, parentId) => {\n            // determine the position & dimensions of the parent\n            const positionAbsolute = parent.internals.positionAbsolute;\n            const dimensions = getNodeDimensions(parent);\n            const origin = parent.origin ?? nodeOrigin;\n            // determine how much the parent expands in width and position\n            const xChange = expandedRect.x < positionAbsolute.x ? Math.round(Math.abs(positionAbsolute.x - expandedRect.x)) : 0;\n            const yChange = expandedRect.y < positionAbsolute.y ? Math.round(Math.abs(positionAbsolute.y - expandedRect.y)) : 0;\n            const newWidth = Math.max(dimensions.width, Math.round(expandedRect.width));\n            const newHeight = Math.max(dimensions.height, Math.round(expandedRect.height));\n            const widthChange = (newWidth - dimensions.width) * origin[0];\n            const heightChange = (newHeight - dimensions.height) * origin[1];\n            // We need to correct the position of the parent node if the origin is not [0,0]\n            if (xChange > 0 || yChange > 0 || widthChange || heightChange) {\n                changes.push({\n                    id: parentId,\n                    type: 'position',\n                    position: {\n                        x: parent.position.x - xChange + widthChange,\n                        y: parent.position.y - yChange + heightChange,\n                    },\n                });\n                /*\n                 * We move all child nodes in the oppsite direction\n                 * so the x,y changes of the parent do not move the children\n                 */\n                parentLookup.get(parentId)?.forEach((childNode) => {\n                    if (!children.some((child) => child.id === childNode.id)) {\n                        changes.push({\n                            id: childNode.id,\n                            type: 'position',\n                            position: {\n                                x: childNode.position.x + xChange,\n                                y: childNode.position.y + yChange,\n                            },\n                        });\n                    }\n                });\n            }\n            // We need to correct the dimensions of the parent node if the origin is not [0,0]\n            if (dimensions.width < expandedRect.width || dimensions.height < expandedRect.height || xChange || yChange) {\n                changes.push({\n                    id: parentId,\n                    type: 'dimensions',\n                    setAttributes: true,\n                    dimensions: {\n                        width: newWidth + (xChange ? origin[0] * xChange - widthChange : 0),\n                        height: newHeight + (yChange ? origin[1] * yChange - heightChange : 0),\n                    },\n                });\n            }\n        });\n    }\n    return changes;\n}\nfunction updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode) {\n    const viewportNode = domNode?.querySelector('.xyflow__viewport');\n    let updatedInternals = false;\n    if (!viewportNode) {\n        return { changes: [], updatedInternals };\n    }\n    const changes = [];\n    const style = window.getComputedStyle(viewportNode);\n    const { m22: zoom } = new window.DOMMatrixReadOnly(style.transform);\n    // in this array we collect nodes, that might trigger changes (like expanding parent)\n    const parentExpandChildren = [];\n    for (const update of updates.values()) {\n        const node = nodeLookup.get(update.id);\n        if (!node) {\n            continue;\n        }\n        if (node.hidden) {\n            nodeLookup.set(node.id, {\n                ...node,\n                internals: {\n                    ...node.internals,\n                    handleBounds: undefined,\n                },\n            });\n            updatedInternals = true;\n            continue;\n        }\n        const dimensions = getDimensions(update.nodeElement);\n        const dimensionChanged = node.measured.width !== dimensions.width || node.measured.height !== dimensions.height;\n        const doUpdate = !!(dimensions.width &&\n            dimensions.height &&\n            (dimensionChanged || !node.internals.handleBounds || update.force));\n        if (doUpdate) {\n            const nodeBounds = update.nodeElement.getBoundingClientRect();\n            const extent = isCoordinateExtent(node.extent) ? node.extent : nodeExtent;\n            let { positionAbsolute } = node.internals;\n            if (node.parentId && node.extent === 'parent') {\n                positionAbsolute = clampPositionToParent(positionAbsolute, dimensions, nodeLookup.get(node.parentId));\n            }\n            else if (extent) {\n                positionAbsolute = clampPosition(positionAbsolute, extent, dimensions);\n            }\n            const newNode = {\n                ...node,\n                measured: dimensions,\n                internals: {\n                    ...node.internals,\n                    positionAbsolute,\n                    handleBounds: {\n                        source: getHandleBounds('source', update.nodeElement, nodeBounds, zoom, node.id),\n                        target: getHandleBounds('target', update.nodeElement, nodeBounds, zoom, node.id),\n                    },\n                },\n            };\n            nodeLookup.set(node.id, newNode);\n            if (node.parentId) {\n                updateChildNode(newNode, nodeLookup, parentLookup, { nodeOrigin, zIndexMode });\n            }\n            updatedInternals = true;\n            if (dimensionChanged) {\n                changes.push({\n                    id: node.id,\n                    type: 'dimensions',\n                    dimensions,\n                });\n                if (node.expandParent && node.parentId) {\n                    parentExpandChildren.push({\n                        id: node.id,\n                        parentId: node.parentId,\n                        rect: nodeToRect(newNode, nodeOrigin),\n                    });\n                }\n            }\n        }\n    }\n    if (parentExpandChildren.length > 0) {\n        const parentExpandChanges = handleExpandParent(parentExpandChildren, nodeLookup, parentLookup, nodeOrigin);\n        changes.push(...parentExpandChanges);\n    }\n    return { changes, updatedInternals };\n}\nasync function panBy({ delta, panZoom, transform, translateExtent, width, height, }) {\n    if (!panZoom || (!delta.x && !delta.y)) {\n        return Promise.resolve(false);\n    }\n    const nextViewport = await panZoom.setViewportConstrained({\n        x: transform[0] + delta.x,\n        y: transform[1] + delta.y,\n        zoom: transform[2],\n    }, [\n        [0, 0],\n        [width, height],\n    ], translateExtent);\n    const transformChanged = !!nextViewport &&\n        (nextViewport.x !== transform[0] || nextViewport.y !== transform[1] || nextViewport.k !== transform[2]);\n    return Promise.resolve(transformChanged);\n}\n/**\n * this function adds the connection to the connectionLookup\n * at the following keys: nodeId-type-handleId, nodeId-type and nodeId\n * @param type type of the connection\n * @param connection connection that should be added to the lookup\n * @param connectionKey at which key the connection should be added\n * @param connectionLookup reference to the connection lookup\n * @param nodeId nodeId of the connection\n * @param handleId handleId of the connection\n */\nfunction addConnectionToLookup(type, connection, connectionKey, connectionLookup, nodeId, handleId) {\n    /*\n     * We add the connection to the connectionLookup at the following keys\n     * 1. nodeId, 2. nodeId-type, 3. nodeId-type-handleId\n     * If the key already exists, we add the connection to the existing map\n     */\n    let key = nodeId;\n    const nodeMap = connectionLookup.get(key) || new Map();\n    connectionLookup.set(key, nodeMap.set(connectionKey, connection));\n    key = `${nodeId}-${type}`;\n    const typeMap = connectionLookup.get(key) || new Map();\n    connectionLookup.set(key, typeMap.set(connectionKey, connection));\n    if (handleId) {\n        key = `${nodeId}-${type}-${handleId}`;\n        const handleMap = connectionLookup.get(key) || new Map();\n        connectionLookup.set(key, handleMap.set(connectionKey, connection));\n    }\n}\nfunction updateConnectionLookup(connectionLookup, edgeLookup, edges) {\n    connectionLookup.clear();\n    edgeLookup.clear();\n    for (const edge of edges) {\n        const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge;\n        const connection = { edgeId: edge.id, source: sourceNode, target: targetNode, sourceHandle, targetHandle };\n        const sourceKey = `${sourceNode}-${sourceHandle}--${targetNode}-${targetHandle}`;\n        const targetKey = `${targetNode}-${targetHandle}--${sourceNode}-${sourceHandle}`;\n        addConnectionToLookup('source', connection, targetKey, connectionLookup, sourceNode, sourceHandle);\n        addConnectionToLookup('target', connection, sourceKey, connectionLookup, targetNode, targetHandle);\n        edgeLookup.set(edge.id, edge);\n    }\n}\n\nfunction shallowNodeData(a, b) {\n    if (a === null || b === null) {\n        return false;\n    }\n    const _a = Array.isArray(a) ? a : [a];\n    const _b = Array.isArray(b) ? b : [b];\n    if (_a.length !== _b.length) {\n        return false;\n    }\n    for (let i = 0; i < _a.length; i++) {\n        if (_a[i].id !== _b[i].id || _a[i].type !== _b[i].type || !Object.is(_a[i].data, _b[i].data)) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction isParentSelected(node, nodeLookup) {\n    if (!node.parentId) {\n        return false;\n    }\n    const parentNode = nodeLookup.get(node.parentId);\n    if (!parentNode) {\n        return false;\n    }\n    if (parentNode.selected) {\n        return true;\n    }\n    return isParentSelected(parentNode, nodeLookup);\n}\nfunction hasSelector(target, selector, domNode) {\n    let current = target;\n    do {\n        if (current?.matches?.(selector))\n            return true;\n        if (current === domNode)\n            return false;\n        current = current?.parentElement;\n    } while (current);\n    return false;\n}\n// looks for all selected nodes and created a NodeDragItem for each of them\nfunction getDragItems(nodeLookup, nodesDraggable, mousePos, nodeId) {\n    const dragItems = new Map();\n    for (const [id, node] of nodeLookup) {\n        if ((node.selected || node.id === nodeId) &&\n            (!node.parentId || !isParentSelected(node, nodeLookup)) &&\n            (node.draggable || (nodesDraggable && typeof node.draggable === 'undefined'))) {\n            const internalNode = nodeLookup.get(id);\n            if (internalNode) {\n                dragItems.set(id, {\n                    id,\n                    position: internalNode.position || { x: 0, y: 0 },\n                    distance: {\n                        x: mousePos.x - internalNode.internals.positionAbsolute.x,\n                        y: mousePos.y - internalNode.internals.positionAbsolute.y,\n                    },\n                    extent: internalNode.extent,\n                    parentId: internalNode.parentId,\n                    origin: internalNode.origin,\n                    expandParent: internalNode.expandParent,\n                    internals: {\n                        positionAbsolute: internalNode.internals.positionAbsolute || { x: 0, y: 0 },\n                    },\n                    measured: {\n                        width: internalNode.measured.width ?? 0,\n                        height: internalNode.measured.height ?? 0,\n                    },\n                });\n            }\n        }\n    }\n    return dragItems;\n}\n/*\n * returns two params:\n * 1. the dragged node (or the first of the list, if we are dragging a node selection)\n * 2. array of selected nodes (for multi selections)\n */\nfunction getEventHandlerParams({ nodeId, dragItems, nodeLookup, dragging = true, }) {\n    const nodesFromDragItems = [];\n    for (const [id, dragItem] of dragItems) {\n        const node = nodeLookup.get(id)?.internals.userNode;\n        if (node) {\n            nodesFromDragItems.push({\n                ...node,\n                position: dragItem.position,\n                dragging,\n            });\n        }\n    }\n    if (!nodeId) {\n        return [nodesFromDragItems[0], nodesFromDragItems];\n    }\n    const node = nodeLookup.get(nodeId)?.internals.userNode;\n    return [\n        !node\n            ? nodesFromDragItems[0]\n            : {\n                ...node,\n                position: dragItems.get(nodeId)?.position || node.position,\n                dragging,\n            },\n        nodesFromDragItems,\n    ];\n}\n/**\n * If a selection is being dragged we want to apply the same snap offset to all nodes in the selection.\n * This function calculates the snap offset based on the first node in the selection.\n */\nfunction calculateSnapOffset({ dragItems, snapGrid, x, y, }) {\n    const refDragItem = dragItems.values().next().value;\n    if (!refDragItem) {\n        return null;\n    }\n    const refPos = {\n        x: x - refDragItem.distance.x,\n        y: y - refDragItem.distance.y,\n    };\n    const refPosSnapped = snapPosition(refPos, snapGrid);\n    return {\n        x: refPosSnapped.x - refPos.x,\n        y: refPosSnapped.y - refPos.y,\n    };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction XYDrag({ onNodeMouseDown, getStoreItems, onDragStart, onDrag, onDragStop, }) {\n    let lastPos = { x: null, y: null };\n    let autoPanId = 0;\n    let dragItems = new Map();\n    let autoPanStarted = false;\n    let mousePosition = { x: 0, y: 0 };\n    let containerBounds = null;\n    let dragStarted = false;\n    let d3Selection = null;\n    let abortDrag = false; // prevents unintentional dragging on multitouch\n    let nodePositionsChanged = false;\n    // we store the last drag event to be able to use it in the update function\n    let dragEvent = null;\n    // public functions\n    function update({ noDragClassName, handleSelector, domNode, isSelectable, nodeId, nodeClickDistance = 0, }) {\n        d3Selection = select(domNode);\n        function updateNodes({ x, y }) {\n            const { nodeLookup, nodeExtent, snapGrid, snapToGrid, nodeOrigin, onNodeDrag, onSelectionDrag, onError, updateNodePositions, } = getStoreItems();\n            lastPos = { x, y };\n            let hasChange = false;\n            const isMultiDrag = dragItems.size > 1;\n            const nodesBox = isMultiDrag && nodeExtent ? rectToBox(getInternalNodesBounds(dragItems)) : null;\n            const multiDragSnapOffset = isMultiDrag && snapToGrid\n                ? calculateSnapOffset({\n                    dragItems,\n                    snapGrid,\n                    x,\n                    y,\n                })\n                : null;\n            for (const [id, dragItem] of dragItems) {\n                /*\n                 * if the node is not in the nodeLookup anymore, it was probably deleted while dragging\n                 */\n                if (!nodeLookup.has(id)) {\n                    continue;\n                }\n                let nextPosition = { x: x - dragItem.distance.x, y: y - dragItem.distance.y };\n                if (snapToGrid) {\n                    nextPosition = multiDragSnapOffset\n                        ? {\n                            x: Math.round(nextPosition.x + multiDragSnapOffset.x),\n                            y: Math.round(nextPosition.y + multiDragSnapOffset.y),\n                        }\n                        : snapPosition(nextPosition, snapGrid);\n                }\n                let adjustedNodeExtent = null;\n                if (isMultiDrag && nodeExtent && !dragItem.extent && nodesBox) {\n                    const { positionAbsolute } = dragItem.internals;\n                    const x1 = positionAbsolute.x - nodesBox.x + nodeExtent[0][0];\n                    const x2 = positionAbsolute.x + dragItem.measured.width - nodesBox.x2 + nodeExtent[1][0];\n                    const y1 = positionAbsolute.y - nodesBox.y + nodeExtent[0][1];\n                    const y2 = positionAbsolute.y + dragItem.measured.height - nodesBox.y2 + nodeExtent[1][1];\n                    adjustedNodeExtent = [\n                        [x1, y1],\n                        [x2, y2],\n                    ];\n                }\n                const { position, positionAbsolute } = calculateNodePosition({\n                    nodeId: id,\n                    nextPosition,\n                    nodeLookup,\n                    nodeExtent: adjustedNodeExtent ? adjustedNodeExtent : nodeExtent,\n                    nodeOrigin,\n                    onError,\n                });\n                // we want to make sure that we only fire a change event when there is a change\n                hasChange = hasChange || dragItem.position.x !== position.x || dragItem.position.y !== position.y;\n                dragItem.position = position;\n                dragItem.internals.positionAbsolute = positionAbsolute;\n            }\n            nodePositionsChanged = nodePositionsChanged || hasChange;\n            if (!hasChange) {\n                return;\n            }\n            updateNodePositions(dragItems, true);\n            if (dragEvent && (onDrag || onNodeDrag || (!nodeId && onSelectionDrag))) {\n                const [currentNode, currentNodes] = getEventHandlerParams({\n                    nodeId,\n                    dragItems,\n                    nodeLookup,\n                });\n                onDrag?.(dragEvent, dragItems, currentNode, currentNodes);\n                onNodeDrag?.(dragEvent, currentNode, currentNodes);\n                if (!nodeId) {\n                    onSelectionDrag?.(dragEvent, currentNodes);\n                }\n            }\n        }\n        async function autoPan() {\n            if (!containerBounds) {\n                return;\n            }\n            const { transform, panBy, autoPanSpeed, autoPanOnNodeDrag } = getStoreItems();\n            if (!autoPanOnNodeDrag) {\n                autoPanStarted = false;\n                cancelAnimationFrame(autoPanId);\n                return;\n            }\n            const [xMovement, yMovement] = calcAutoPan(mousePosition, containerBounds, autoPanSpeed);\n            if (xMovement !== 0 || yMovement !== 0) {\n                lastPos.x = (lastPos.x ?? 0) - xMovement / transform[2];\n                lastPos.y = (lastPos.y ?? 0) - yMovement / transform[2];\n                if (await panBy({ x: xMovement, y: yMovement })) {\n                    updateNodes(lastPos);\n                }\n            }\n            autoPanId = requestAnimationFrame(autoPan);\n        }\n        function startDrag(event) {\n            const { nodeLookup, multiSelectionActive, nodesDraggable, transform, snapGrid, snapToGrid, selectNodesOnDrag, onNodeDragStart, onSelectionDragStart, unselectNodesAndEdges, } = getStoreItems();\n            dragStarted = true;\n            if ((!selectNodesOnDrag || !isSelectable) && !multiSelectionActive && nodeId) {\n                if (!nodeLookup.get(nodeId)?.selected) {\n                    // we need to reset selected nodes when selectNodesOnDrag=false\n                    unselectNodesAndEdges();\n                }\n            }\n            if (isSelectable && selectNodesOnDrag && nodeId) {\n                onNodeMouseDown?.(nodeId);\n            }\n            const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds });\n            lastPos = pointerPos;\n            dragItems = getDragItems(nodeLookup, nodesDraggable, pointerPos, nodeId);\n            if (dragItems.size > 0 && (onDragStart || onNodeDragStart || (!nodeId && onSelectionDragStart))) {\n                const [currentNode, currentNodes] = getEventHandlerParams({\n                    nodeId,\n                    dragItems,\n                    nodeLookup,\n                });\n                onDragStart?.(event.sourceEvent, dragItems, currentNode, currentNodes);\n                onNodeDragStart?.(event.sourceEvent, currentNode, currentNodes);\n                if (!nodeId) {\n                    onSelectionDragStart?.(event.sourceEvent, currentNodes);\n                }\n            }\n        }\n        const d3DragInstance = drag()\n            .clickDistance(nodeClickDistance)\n            .on('start', (event) => {\n            const { domNode, nodeDragThreshold, transform, snapGrid, snapToGrid } = getStoreItems();\n            containerBounds = domNode?.getBoundingClientRect() || null;\n            abortDrag = false;\n            nodePositionsChanged = false;\n            dragEvent = event.sourceEvent;\n            if (nodeDragThreshold === 0) {\n                startDrag(event);\n            }\n            const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds });\n            lastPos = pointerPos;\n            mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n        })\n            .on('drag', (event) => {\n            const { autoPanOnNodeDrag, transform, snapGrid, snapToGrid, nodeDragThreshold, nodeLookup } = getStoreItems();\n            const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds });\n            dragEvent = event.sourceEvent;\n            if ((event.sourceEvent.type === 'touchmove' && event.sourceEvent.touches.length > 1) ||\n                // if user deletes a node while dragging, we need to abort the drag to prevent errors\n                (nodeId && !nodeLookup.has(nodeId))) {\n                abortDrag = true;\n            }\n            if (abortDrag) {\n                return;\n            }\n            if (!autoPanStarted && autoPanOnNodeDrag && dragStarted) {\n                autoPanStarted = true;\n                autoPan();\n            }\n            if (!dragStarted) {\n                // Calculate distance in client coordinates for consistent drag threshold behavior across zoom levels\n                const currentMousePosition = getEventPosition(event.sourceEvent, containerBounds);\n                const x = currentMousePosition.x - mousePosition.x;\n                const y = currentMousePosition.y - mousePosition.y;\n                const distance = Math.sqrt(x * x + y * y);\n                if (distance > nodeDragThreshold) {\n                    startDrag(event);\n                }\n            }\n            // skip events without movement\n            if ((lastPos.x !== pointerPos.xSnapped || lastPos.y !== pointerPos.ySnapped) && dragItems && dragStarted) {\n                mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n                updateNodes(pointerPos);\n            }\n        })\n            .on('end', (event) => {\n            if (!dragStarted || abortDrag) {\n                return;\n            }\n            autoPanStarted = false;\n            dragStarted = false;\n            cancelAnimationFrame(autoPanId);\n            if (dragItems.size > 0) {\n                const { nodeLookup, updateNodePositions, onNodeDragStop, onSelectionDragStop } = getStoreItems();\n                if (nodePositionsChanged) {\n                    updateNodePositions(dragItems, false);\n                    nodePositionsChanged = false;\n                }\n                if (onDragStop || onNodeDragStop || (!nodeId && onSelectionDragStop)) {\n                    const [currentNode, currentNodes] = getEventHandlerParams({\n                        nodeId,\n                        dragItems,\n                        nodeLookup,\n                        dragging: false,\n                    });\n                    onDragStop?.(event.sourceEvent, dragItems, currentNode, currentNodes);\n                    onNodeDragStop?.(event.sourceEvent, currentNode, currentNodes);\n                    if (!nodeId) {\n                        onSelectionDragStop?.(event.sourceEvent, currentNodes);\n                    }\n                }\n            }\n        })\n            .filter((event) => {\n            const target = event.target;\n            const isDraggable = !event.button &&\n                (!noDragClassName || !hasSelector(target, `.${noDragClassName}`, domNode)) &&\n                (!handleSelector || hasSelector(target, handleSelector, domNode));\n            return isDraggable;\n        });\n        d3Selection.call(d3DragInstance);\n    }\n    function destroy() {\n        d3Selection?.on('.drag', null);\n    }\n    return {\n        update,\n        destroy,\n    };\n}\n\nfunction getNodesWithinDistance(position, nodeLookup, distance) {\n    const nodes = [];\n    const rect = {\n        x: position.x - distance,\n        y: position.y - distance,\n        width: distance * 2,\n        height: distance * 2,\n    };\n    for (const node of nodeLookup.values()) {\n        if (getOverlappingArea(rect, nodeToRect(node)) > 0) {\n            nodes.push(node);\n        }\n    }\n    return nodes;\n}\n/*\n * this distance is used for the area around the user pointer\n * while doing a connection for finding the closest nodes\n */\nconst ADDITIONAL_DISTANCE = 250;\nfunction getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) {\n    let closestHandles = [];\n    let minDistance = Infinity;\n    const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE);\n    for (const node of closeNodes) {\n        const allHandles = [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])];\n        for (const handle of allHandles) {\n            // if the handle is the same as the fromHandle we skip it\n            if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) {\n                continue;\n            }\n            // determine absolute position of the handle\n            const { x, y } = getHandlePosition(node, handle, handle.position, true);\n            const distance = Math.sqrt(Math.pow(x - position.x, 2) + Math.pow(y - position.y, 2));\n            if (distance > connectionRadius) {\n                continue;\n            }\n            if (distance < minDistance) {\n                closestHandles = [{ ...handle, x, y }];\n                minDistance = distance;\n            }\n            else if (distance === minDistance) {\n                // when multiple handles are on the same distance we collect all of them\n                closestHandles.push({ ...handle, x, y });\n            }\n        }\n    }\n    if (!closestHandles.length) {\n        return null;\n    }\n    // when multiple handles overlay each other we prefer the opposite handle\n    if (closestHandles.length > 1) {\n        const oppositeHandleType = fromHandle.type === 'source' ? 'target' : 'source';\n        return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0];\n    }\n    return closestHandles[0];\n}\nfunction getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode, withAbsolutePosition = false) {\n    const node = nodeLookup.get(nodeId);\n    if (!node) {\n        return null;\n    }\n    const handles = connectionMode === 'strict'\n        ? node.internals.handleBounds?.[handleType]\n        : [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])];\n    const handle = (handleId ? handles?.find((h) => h.id === handleId) : handles?.[0]) ?? null;\n    return handle && withAbsolutePosition\n        ? { ...handle, ...getHandlePosition(node, handle, handle.position, true) }\n        : handle;\n}\nfunction getHandleType(edgeUpdaterType, handleDomNode) {\n    if (edgeUpdaterType) {\n        return edgeUpdaterType;\n    }\n    else if (handleDomNode?.classList.contains('target')) {\n        return 'target';\n    }\n    else if (handleDomNode?.classList.contains('source')) {\n        return 'source';\n    }\n    return null;\n}\nfunction isConnectionValid(isInsideConnectionRadius, isHandleValid) {\n    let isValid = null;\n    if (isHandleValid) {\n        isValid = true;\n    }\n    else if (isInsideConnectionRadius && !isHandleValid) {\n        isValid = false;\n    }\n    return isValid;\n}\n\nconst alwaysValid = () => true;\nfunction onPointerDown(event, { connectionMode, connectionRadius, handleId, nodeId, edgeUpdaterType, isTarget, domNode, nodeLookup, lib, autoPanOnConnect, flowId, panBy, cancelConnection, onConnectStart, onConnect, onConnectEnd, isValidConnection = alwaysValid, onReconnectEnd, updateConnection, getTransform, getFromHandle, autoPanSpeed, dragThreshold = 1, handleDomNode, }) {\n    // when xyflow is used inside a shadow root we can't use document\n    const doc = getHostForElement(event.target);\n    let autoPanId = 0;\n    let closestHandle;\n    const { x, y } = getEventPosition(event);\n    const handleType = getHandleType(edgeUpdaterType, handleDomNode);\n    const containerBounds = domNode?.getBoundingClientRect();\n    let connectionStarted = false;\n    if (!containerBounds || !handleType) {\n        return;\n    }\n    const fromHandleInternal = getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode);\n    if (!fromHandleInternal) {\n        return;\n    }\n    let position = getEventPosition(event, containerBounds);\n    let autoPanStarted = false;\n    let connection = null;\n    let isValid = false;\n    let resultHandleDomNode = null;\n    // when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas\n    function autoPan() {\n        if (!autoPanOnConnect || !containerBounds) {\n            return;\n        }\n        const [x, y] = calcAutoPan(position, containerBounds, autoPanSpeed);\n        panBy({ x, y });\n        autoPanId = requestAnimationFrame(autoPan);\n    }\n    // Stays the same for all consecutive pointermove events\n    const fromHandle = {\n        ...fromHandleInternal,\n        nodeId,\n        type: handleType,\n        position: fromHandleInternal.position,\n    };\n    const fromInternalNode = nodeLookup.get(nodeId);\n    const from = getHandlePosition(fromInternalNode, fromHandle, Position.Left, true);\n    let previousConnection = {\n        inProgress: true,\n        isValid: null,\n        from,\n        fromHandle,\n        fromPosition: fromHandle.position,\n        fromNode: fromInternalNode,\n        to: position,\n        toHandle: null,\n        toPosition: oppositePosition[fromHandle.position],\n        toNode: null,\n        pointer: position,\n    };\n    function startConnection() {\n        connectionStarted = true;\n        updateConnection(previousConnection);\n        onConnectStart?.(event, { nodeId, handleId, handleType });\n    }\n    if (dragThreshold === 0) {\n        startConnection();\n    }\n    function onPointerMove(event) {\n        if (!connectionStarted) {\n            const { x: evtX, y: evtY } = getEventPosition(event);\n            const dx = evtX - x;\n            const dy = evtY - y;\n            const nextConnectionStarted = dx * dx + dy * dy > dragThreshold * dragThreshold;\n            if (!nextConnectionStarted) {\n                return;\n            }\n            startConnection();\n        }\n        if (!getFromHandle() || !fromHandle) {\n            onPointerUp(event);\n            return;\n        }\n        const transform = getTransform();\n        position = getEventPosition(event, containerBounds);\n        closestHandle = getClosestHandle(pointToRendererPoint(position, transform, false, [1, 1]), connectionRadius, nodeLookup, fromHandle);\n        if (!autoPanStarted) {\n            autoPan();\n            autoPanStarted = true;\n        }\n        const result = isValidHandle(event, {\n            handle: closestHandle,\n            connectionMode,\n            fromNodeId: nodeId,\n            fromHandleId: handleId,\n            fromType: isTarget ? 'target' : 'source',\n            isValidConnection,\n            doc,\n            lib,\n            flowId,\n            nodeLookup,\n        });\n        resultHandleDomNode = result.handleDomNode;\n        connection = result.connection;\n        isValid = isConnectionValid(!!closestHandle, result.isValid);\n        const fromInternalNode = nodeLookup.get(nodeId);\n        const from = fromInternalNode\n            ? getHandlePosition(fromInternalNode, fromHandle, Position.Left, true)\n            : previousConnection.from;\n        const newConnection = {\n            ...previousConnection,\n            from,\n            isValid,\n            to: result.toHandle && isValid\n                ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, transform)\n                : position,\n            toHandle: result.toHandle,\n            toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position],\n            toNode: result.toHandle ? nodeLookup.get(result.toHandle.nodeId) : null,\n            pointer: position,\n        };\n        updateConnection(newConnection);\n        previousConnection = newConnection;\n    }\n    function onPointerUp(event) {\n        // Prevent multi-touch aborting connection\n        if ('touches' in event && event.touches.length > 0) {\n            return;\n        }\n        if (connectionStarted) {\n            if ((closestHandle || resultHandleDomNode) && connection && isValid) {\n                onConnect?.(connection);\n            }\n            /*\n             * it's important to get a fresh reference from the store here\n             * in order to get the latest state of onConnectEnd\n             */\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n            const { inProgress, ...connectionState } = previousConnection;\n            const finalConnectionState = {\n                ...connectionState,\n                toPosition: previousConnection.toHandle ? previousConnection.toPosition : null,\n            };\n            onConnectEnd?.(event, finalConnectionState);\n            if (edgeUpdaterType) {\n                onReconnectEnd?.(event, finalConnectionState);\n            }\n        }\n        cancelConnection();\n        cancelAnimationFrame(autoPanId);\n        autoPanStarted = false;\n        isValid = false;\n        connection = null;\n        resultHandleDomNode = null;\n        doc.removeEventListener('mousemove', onPointerMove);\n        doc.removeEventListener('mouseup', onPointerUp);\n        doc.removeEventListener('touchmove', onPointerMove);\n        doc.removeEventListener('touchend', onPointerUp);\n    }\n    doc.addEventListener('mousemove', onPointerMove);\n    doc.addEventListener('mouseup', onPointerUp);\n    doc.addEventListener('touchmove', onPointerMove);\n    doc.addEventListener('touchend', onPointerUp);\n}\n// checks if  and returns connection in form of an object { source: 123, target: 312 }\nfunction isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId, fromType, doc, lib, flowId, isValidConnection = alwaysValid, nodeLookup, }) {\n    const isTarget = fromType === 'target';\n    const handleDomNode = handle\n        ? doc.querySelector(`.${lib}-flow__handle[data-id=\"${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}\"]`)\n        : null;\n    const { x, y } = getEventPosition(event);\n    const handleBelow = doc.elementFromPoint(x, y);\n    /*\n     * we always want to prioritize the handle below the mouse cursor over the closest distance handle,\n     * because it could be that the center of another handle is closer to the mouse pointer than the handle below the cursor\n     */\n    const handleToCheck = handleBelow?.classList.contains(`${lib}-flow__handle`) ? handleBelow : handleDomNode;\n    const result = {\n        handleDomNode: handleToCheck,\n        isValid: false,\n        connection: null,\n        toHandle: null,\n    };\n    if (handleToCheck) {\n        const handleType = getHandleType(undefined, handleToCheck);\n        const handleNodeId = handleToCheck.getAttribute('data-nodeid');\n        const handleId = handleToCheck.getAttribute('data-handleid');\n        const connectable = handleToCheck.classList.contains('connectable');\n        const connectableEnd = handleToCheck.classList.contains('connectableend');\n        if (!handleNodeId || !handleType) {\n            return result;\n        }\n        const connection = {\n            source: isTarget ? handleNodeId : fromNodeId,\n            sourceHandle: isTarget ? handleId : fromHandleId,\n            target: isTarget ? fromNodeId : handleNodeId,\n            targetHandle: isTarget ? fromHandleId : handleId,\n        };\n        result.connection = connection;\n        const isConnectable = connectable && connectableEnd;\n        // in strict mode we don't allow target to target or source to source connections\n        const isValid = isConnectable &&\n            (connectionMode === ConnectionMode.Strict\n                ? (isTarget && handleType === 'source') || (!isTarget && handleType === 'target')\n                : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n        result.isValid = isValid && isValidConnection(connection);\n        result.toHandle = getHandle(handleNodeId, handleType, handleId, nodeLookup, connectionMode, true);\n    }\n    return result;\n}\nconst XYHandle = {\n    onPointerDown,\n    isValid: isValidHandle,\n};\n\nfunction XYMinimap({ domNode, panZoom, getTransform, getViewScale }) {\n    const selection = select(domNode);\n    function update({ translateExtent, width, height, zoomStep = 1, pannable = true, zoomable = true, inversePan = false, }) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const zoomHandler = (event) => {\n            if (event.sourceEvent.type !== 'wheel' || !panZoom) {\n                return;\n            }\n            const transform = getTransform();\n            const factor = event.sourceEvent.ctrlKey && isMacOs() ? 10 : 1;\n            const pinchDelta = -event.sourceEvent.deltaY *\n                (event.sourceEvent.deltaMode === 1 ? 0.05 : event.sourceEvent.deltaMode ? 1 : 0.002) *\n                zoomStep;\n            const nextZoom = transform[2] * Math.pow(2, pinchDelta * factor);\n            panZoom.scaleTo(nextZoom);\n        };\n        let panStart = [0, 0];\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const panStartHandler = (event) => {\n            if (event.sourceEvent.type === 'mousedown' || event.sourceEvent.type === 'touchstart') {\n                panStart = [\n                    event.sourceEvent.clientX ?? event.sourceEvent.touches[0].clientX,\n                    event.sourceEvent.clientY ?? event.sourceEvent.touches[0].clientY,\n                ];\n            }\n        };\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const panHandler = (event) => {\n            const transform = getTransform();\n            if ((event.sourceEvent.type !== 'mousemove' && event.sourceEvent.type !== 'touchmove') || !panZoom) {\n                return;\n            }\n            const panCurrent = [\n                event.sourceEvent.clientX ?? event.sourceEvent.touches[0].clientX,\n                event.sourceEvent.clientY ?? event.sourceEvent.touches[0].clientY,\n            ];\n            const panDelta = [panCurrent[0] - panStart[0], panCurrent[1] - panStart[1]];\n            panStart = panCurrent;\n            const moveScale = getViewScale() * Math.max(transform[2], Math.log(transform[2])) * (inversePan ? -1 : 1);\n            const position = {\n                x: transform[0] - panDelta[0] * moveScale,\n                y: transform[1] - panDelta[1] * moveScale,\n            };\n            const extent = [\n                [0, 0],\n                [width, height],\n            ];\n            panZoom.setViewportConstrained({\n                x: position.x,\n                y: position.y,\n                zoom: transform[2],\n            }, extent, translateExtent);\n        };\n        const zoomAndPanHandler = zoom()\n            .on('start', panStartHandler)\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            .on('zoom', pannable ? panHandler : null)\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            .on('zoom.wheel', zoomable ? zoomHandler : null);\n        selection.call(zoomAndPanHandler, {});\n    }\n    function destroy() {\n        selection.on('zoom', null);\n    }\n    return {\n        update,\n        destroy,\n        pointer,\n    };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst transformToViewport = (transform) => ({\n    x: transform.x,\n    y: transform.y,\n    zoom: transform.k,\n});\nconst viewportToTransform = ({ x, y, zoom }) => zoomIdentity.translate(x, y).scale(zoom);\nconst isWrappedWithClass = (event, className) => event.target.closest(`.${className}`);\nconst isRightClickPan = (panOnDrag, usedButton) => usedButton === 2 && Array.isArray(panOnDrag) && panOnDrag.includes(2);\n// taken from d3-ease: https://github.com/d3/d3-ease/blob/main/src/cubic.js\nconst defaultEase = (t) => ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\nconst getD3Transition = (selection, duration = 0, ease = defaultEase, onEnd = () => { }) => {\n    const hasDuration = typeof duration === 'number' && duration > 0;\n    if (!hasDuration) {\n        onEnd();\n    }\n    return hasDuration ? selection.transition().duration(duration).ease(ease).on('end', onEnd) : selection;\n};\nconst wheelDelta = (event) => {\n    const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n    return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * factor;\n};\n\nfunction createPanOnScrollHandler({ zoomPanValues, noWheelClassName, d3Selection, d3Zoom, panOnScrollMode, panOnScrollSpeed, zoomOnPinch, onPanZoomStart, onPanZoom, onPanZoomEnd, }) {\n    return (event) => {\n        if (isWrappedWithClass(event, noWheelClassName)) {\n            if (event.ctrlKey) {\n                event.preventDefault(); // stop native page zoom for pinch zooming\n            }\n            return false;\n        }\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        const currentZoom = d3Selection.property('__zoom').k || 1;\n        // macos sets ctrlKey=true for pinch gesture on a trackpad\n        if (event.ctrlKey && zoomOnPinch) {\n            const point = pointer(event);\n            const pinchDelta = wheelDelta(event);\n            const zoom = currentZoom * Math.pow(2, pinchDelta);\n            // @ts-ignore\n            d3Zoom.scaleTo(d3Selection, zoom, point, event);\n            return;\n        }\n        /*\n         * increase scroll speed in firefox\n         * firefox: deltaMode === 1; chrome: deltaMode === 0\n         */\n        const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n        let deltaX = panOnScrollMode === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize;\n        let deltaY = panOnScrollMode === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize;\n        // this enables vertical scrolling with shift + scroll on windows\n        if (!isMacOs() && event.shiftKey && panOnScrollMode !== PanOnScrollMode.Vertical) {\n            deltaX = event.deltaY * deltaNormalize;\n            deltaY = 0;\n        }\n        d3Zoom.translateBy(d3Selection, -(deltaX / currentZoom) * panOnScrollSpeed, -(deltaY / currentZoom) * panOnScrollSpeed, \n        // @ts-ignore\n        { internal: true });\n        const nextViewport = transformToViewport(d3Selection.property('__zoom'));\n        clearTimeout(zoomPanValues.panScrollTimeout);\n        /*\n         * for pan on scroll we need to handle the event calls on our own\n         * we can't use the start, zoom and end events from d3-zoom\n         * because start and move gets called on every scroll event and not once at the beginning\n         */\n        if (!zoomPanValues.isPanScrolling) {\n            zoomPanValues.isPanScrolling = true;\n            onPanZoomStart?.(event, nextViewport);\n        }\n        else {\n            onPanZoom?.(event, nextViewport);\n            zoomPanValues.panScrollTimeout = setTimeout(() => {\n                onPanZoomEnd?.(event, nextViewport);\n                zoomPanValues.isPanScrolling = false;\n            }, 150);\n        }\n    };\n}\nfunction createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }) {\n    return function (event, d) {\n        const isWheel = event.type === 'wheel';\n        // we still want to enable pinch zooming even if preventScrolling is set to false\n        const preventZoom = !preventScrolling && isWheel && !event.ctrlKey;\n        const hasNoWheelClass = isWrappedWithClass(event, noWheelClassName);\n        // if user is pinch zooming above a nowheel element, we don't want the browser to zoom\n        if (event.ctrlKey && isWheel && hasNoWheelClass) {\n            event.preventDefault();\n        }\n        if (preventZoom || hasNoWheelClass) {\n            return null;\n        }\n        event.preventDefault();\n        d3ZoomHandler.call(this, event, d);\n    };\n}\nfunction createPanZoomStartHandler({ zoomPanValues, onDraggingChange, onPanZoomStart }) {\n    return (event) => {\n        if (event.sourceEvent?.internal) {\n            return;\n        }\n        const viewport = transformToViewport(event.transform);\n        // we need to remember it here, because it's always 0 in the \"zoom\" event\n        zoomPanValues.mouseButton = event.sourceEvent?.button || 0;\n        zoomPanValues.isZoomingOrPanning = true;\n        zoomPanValues.prevViewport = viewport;\n        if (event.sourceEvent?.type === 'mousedown') {\n            onDraggingChange(true);\n        }\n        if (onPanZoomStart) {\n            onPanZoomStart?.(event.sourceEvent, viewport);\n        }\n    };\n}\nfunction createPanZoomHandler({ zoomPanValues, panOnDrag, onPaneContextMenu, onTransformChange, onPanZoom, }) {\n    return (event) => {\n        zoomPanValues.usedRightMouseButton = !!(onPaneContextMenu && isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0));\n        if (!event.sourceEvent?.sync) {\n            onTransformChange([event.transform.x, event.transform.y, event.transform.k]);\n        }\n        if (onPanZoom && !event.sourceEvent?.internal) {\n            onPanZoom?.(event.sourceEvent, transformToViewport(event.transform));\n        }\n    };\n}\nfunction createPanZoomEndHandler({ zoomPanValues, panOnDrag, panOnScroll, onDraggingChange, onPanZoomEnd, onPaneContextMenu, }) {\n    return (event) => {\n        if (event.sourceEvent?.internal) {\n            return;\n        }\n        zoomPanValues.isZoomingOrPanning = false;\n        if (onPaneContextMenu &&\n            isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0) &&\n            !zoomPanValues.usedRightMouseButton &&\n            event.sourceEvent) {\n            onPaneContextMenu(event.sourceEvent);\n        }\n        zoomPanValues.usedRightMouseButton = false;\n        onDraggingChange(false);\n        if (onPanZoomEnd) {\n            const viewport = transformToViewport(event.transform);\n            zoomPanValues.prevViewport = viewport;\n            clearTimeout(zoomPanValues.timerId);\n            zoomPanValues.timerId = setTimeout(() => {\n                onPanZoomEnd?.(event.sourceEvent, viewport);\n            }, \n            // we need a setTimeout for panOnScroll to suppress multiple end events fired during scroll\n            panOnScroll ? 150 : 0);\n        }\n    };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction createFilter({ zoomActivationKeyPressed, zoomOnScroll, zoomOnPinch, panOnDrag, panOnScroll, zoomOnDoubleClick, userSelectionActive, noWheelClassName, noPanClassName, lib, connectionInProgress, }) {\n    return (event) => {\n        const zoomScroll = zoomActivationKeyPressed || zoomOnScroll;\n        const pinchZoom = zoomOnPinch && event.ctrlKey;\n        const isWheelEvent = event.type === 'wheel';\n        if (event.button === 1 &&\n            event.type === 'mousedown' &&\n            (isWrappedWithClass(event, `${lib}-flow__node`) || isWrappedWithClass(event, `${lib}-flow__edge`))) {\n            return true;\n        }\n        // if all interactions are disabled, we prevent all zoom events\n        if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) {\n            return false;\n        }\n        // during a selection we prevent all other interactions\n        if (userSelectionActive) {\n            return false;\n        }\n        // we want to disable pinch-zooming while making a connection\n        if (connectionInProgress && !isWheelEvent) {\n            return false;\n        }\n        // if the target element is inside an element with the nowheel class, we prevent zooming\n        if (isWrappedWithClass(event, noWheelClassName) && isWheelEvent) {\n            return false;\n        }\n        // if the target element is inside an element with the nopan class, we prevent panning\n        if (isWrappedWithClass(event, noPanClassName) &&\n            (!isWheelEvent || (panOnScroll && isWheelEvent && !zoomActivationKeyPressed))) {\n            return false;\n        }\n        if (!zoomOnPinch && event.ctrlKey && isWheelEvent) {\n            return false;\n        }\n        if (!zoomOnPinch && event.type === 'touchstart' && event.touches?.length > 1) {\n            event.preventDefault(); // if you manage to start with 2 touches, we prevent native zoom\n            return false;\n        }\n        // when there is no scroll handling enabled, we prevent all wheel events\n        if (!zoomScroll && !panOnScroll && !pinchZoom && isWheelEvent) {\n            return false;\n        }\n        // if the pane is not movable, we prevent dragging it with mousestart or touchstart\n        if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) {\n            return false;\n        }\n        // if the pane is only movable using allowed clicks\n        if (Array.isArray(panOnDrag) && !panOnDrag.includes(event.button) && event.type === 'mousedown') {\n            return false;\n        }\n        // We only allow right clicks if pan on drag is set to right click\n        const buttonAllowed = (Array.isArray(panOnDrag) && panOnDrag.includes(event.button)) || !event.button || event.button <= 1;\n        // default filter for d3-zoom\n        return (!event.ctrlKey || isWheelEvent) && buttonAllowed;\n    };\n}\n\nfunction XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPanZoom, onPanZoomStart, onPanZoomEnd, onDraggingChange, }) {\n    const zoomPanValues = {\n        isZoomingOrPanning: false,\n        usedRightMouseButton: false,\n        prevViewport: { x: 0, y: 0, zoom: 0 },\n        mouseButton: 0,\n        timerId: undefined,\n        panScrollTimeout: undefined,\n        isPanScrolling: false,\n    };\n    const bbox = domNode.getBoundingClientRect();\n    const d3ZoomInstance = zoom().scaleExtent([minZoom, maxZoom]).translateExtent(translateExtent);\n    const d3Selection = select(domNode).call(d3ZoomInstance);\n    setViewportConstrained({\n        x: viewport.x,\n        y: viewport.y,\n        zoom: clamp(viewport.zoom, minZoom, maxZoom),\n    }, [\n        [0, 0],\n        [bbox.width, bbox.height],\n    ], translateExtent);\n    const d3ZoomHandler = d3Selection.on('wheel.zoom');\n    const d3DblClickZoomHandler = d3Selection.on('dblclick.zoom');\n    d3ZoomInstance.wheelDelta(wheelDelta);\n    function setTransform(transform, options) {\n        if (d3Selection) {\n            return new Promise((resolve) => {\n                d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).transform(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), transform);\n            });\n        }\n        return Promise.resolve(false);\n    }\n    // public functions\n    function update({ noWheelClassName, noPanClassName, onPaneContextMenu, userSelectionActive, panOnScroll, panOnDrag, panOnScrollMode, panOnScrollSpeed, preventScrolling, zoomOnPinch, zoomOnScroll, zoomOnDoubleClick, zoomActivationKeyPressed, lib, onTransformChange, connectionInProgress, paneClickDistance, selectionOnDrag, }) {\n        if (userSelectionActive && !zoomPanValues.isZoomingOrPanning) {\n            destroy();\n        }\n        const isPanOnScroll = panOnScroll && !zoomActivationKeyPressed && !userSelectionActive;\n        d3ZoomInstance.clickDistance(selectionOnDrag ? Infinity : !isNumeric(paneClickDistance) || paneClickDistance < 0 ? 0 : paneClickDistance);\n        const wheelHandler = isPanOnScroll\n            ? createPanOnScrollHandler({\n                zoomPanValues,\n                noWheelClassName,\n                d3Selection,\n                d3Zoom: d3ZoomInstance,\n                panOnScrollMode,\n                panOnScrollSpeed,\n                zoomOnPinch,\n                onPanZoomStart,\n                onPanZoom,\n                onPanZoomEnd,\n            })\n            : createZoomOnScrollHandler({\n                noWheelClassName,\n                preventScrolling,\n                d3ZoomHandler,\n            });\n        d3Selection.on('wheel.zoom', wheelHandler, { passive: false });\n        if (!userSelectionActive) {\n            // pan zoom start\n            const startHandler = createPanZoomStartHandler({\n                zoomPanValues,\n                onDraggingChange,\n                onPanZoomStart,\n            });\n            d3ZoomInstance.on('start', startHandler);\n            // pan zoom\n            const panZoomHandler = createPanZoomHandler({\n                zoomPanValues,\n                panOnDrag,\n                onPaneContextMenu: !!onPaneContextMenu,\n                onPanZoom,\n                onTransformChange,\n            });\n            d3ZoomInstance.on('zoom', panZoomHandler);\n            // pan zoom end\n            const panZoomEndHandler = createPanZoomEndHandler({\n                zoomPanValues,\n                panOnDrag,\n                panOnScroll,\n                onPaneContextMenu,\n                onPanZoomEnd,\n                onDraggingChange,\n            });\n            d3ZoomInstance.on('end', panZoomEndHandler);\n        }\n        const filter = createFilter({\n            zoomActivationKeyPressed,\n            panOnDrag,\n            zoomOnScroll,\n            panOnScroll,\n            zoomOnDoubleClick,\n            zoomOnPinch,\n            userSelectionActive,\n            noPanClassName,\n            noWheelClassName,\n            lib,\n            connectionInProgress,\n        });\n        d3ZoomInstance.filter(filter);\n        /*\n         * We cannot add zoomOnDoubleClick to the filter above because\n         * double tapping on touch screens circumvents the filter and\n         * dblclick.zoom is fired on the selection directly\n         */\n        if (zoomOnDoubleClick) {\n            d3Selection.on('dblclick.zoom', d3DblClickZoomHandler);\n        }\n        else {\n            d3Selection.on('dblclick.zoom', null);\n        }\n    }\n    function destroy() {\n        d3ZoomInstance.on('zoom', null);\n    }\n    async function setViewportConstrained(viewport, extent, translateExtent) {\n        const nextTransform = viewportToTransform(viewport);\n        const contrainedTransform = d3ZoomInstance?.constrain()(nextTransform, extent, translateExtent);\n        if (contrainedTransform) {\n            await setTransform(contrainedTransform);\n        }\n        return new Promise((resolve) => resolve(contrainedTransform));\n    }\n    async function setViewport(viewport, options) {\n        const nextTransform = viewportToTransform(viewport);\n        await setTransform(nextTransform, options);\n        return new Promise((resolve) => resolve(nextTransform));\n    }\n    function syncViewport(viewport) {\n        if (d3Selection) {\n            const nextTransform = viewportToTransform(viewport);\n            const currentTransform = d3Selection.property('__zoom');\n            if (currentTransform.k !== viewport.zoom ||\n                currentTransform.x !== viewport.x ||\n                currentTransform.y !== viewport.y) {\n                // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                // @ts-ignore\n                d3ZoomInstance?.transform(d3Selection, nextTransform, null, { sync: true });\n            }\n        }\n    }\n    function getViewport() {\n        const transform = d3Selection ? zoomTransform(d3Selection.node()) : { x: 0, y: 0, k: 1 };\n        return { x: transform.x, y: transform.y, zoom: transform.k };\n    }\n    function scaleTo(zoom, options) {\n        if (d3Selection) {\n            return new Promise((resolve) => {\n                d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).scaleTo(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), zoom);\n            });\n        }\n        return Promise.resolve(false);\n    }\n    function scaleBy(factor, options) {\n        if (d3Selection) {\n            return new Promise((resolve) => {\n                d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).scaleBy(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), factor);\n            });\n        }\n        return Promise.resolve(false);\n    }\n    function setScaleExtent(scaleExtent) {\n        d3ZoomInstance?.scaleExtent(scaleExtent);\n    }\n    function setTranslateExtent(translateExtent) {\n        d3ZoomInstance?.translateExtent(translateExtent);\n    }\n    function setClickDistance(distance) {\n        const validDistance = !isNumeric(distance) || distance < 0 ? 0 : distance;\n        d3ZoomInstance?.clickDistance(validDistance);\n    }\n    return {\n        update,\n        destroy,\n        setViewport,\n        setViewportConstrained,\n        getViewport,\n        scaleTo,\n        scaleBy,\n        setScaleExtent,\n        setTranslateExtent,\n        syncViewport,\n        setClickDistance,\n    };\n}\n\n/**\n * Used to determine the variant of the resize control\n *\n * @public\n */\nvar ResizeControlVariant;\n(function (ResizeControlVariant) {\n    ResizeControlVariant[\"Line\"] = \"line\";\n    ResizeControlVariant[\"Handle\"] = \"handle\";\n})(ResizeControlVariant || (ResizeControlVariant = {}));\nconst XY_RESIZER_HANDLE_POSITIONS = ['top-left', 'top-right', 'bottom-left', 'bottom-right'];\nconst XY_RESIZER_LINE_POSITIONS = ['top', 'right', 'bottom', 'left'];\n\n/**\n * Get all connecting edges for a given set of nodes\n * @param width - new width of the node\n * @param prevWidth - previous width of the node\n * @param height - new height of the node\n * @param prevHeight - previous height of the node\n * @param affectsX - whether to invert the resize direction for the x axis\n * @param affectsY - whether to invert the resize direction for the y axis\n * @returns array of two numbers representing the direction of the resize for each axis, 0 = no change, 1 = increase, -1 = decrease\n */\nfunction getResizeDirection({ width, prevWidth, height, prevHeight, affectsX, affectsY, }) {\n    const deltaWidth = width - prevWidth;\n    const deltaHeight = height - prevHeight;\n    const direction = [deltaWidth > 0 ? 1 : deltaWidth < 0 ? -1 : 0, deltaHeight > 0 ? 1 : deltaHeight < 0 ? -1 : 0];\n    if (deltaWidth && affectsX) {\n        direction[0] = direction[0] * -1;\n    }\n    if (deltaHeight && affectsY) {\n        direction[1] = direction[1] * -1;\n    }\n    return direction;\n}\n/**\n * Parses the control position that is being dragged to dimensions that are being resized\n * @param controlPosition - position of the control that is being dragged\n * @returns isHorizontal, isVertical, affectsX, affectsY,\n */\nfunction getControlDirection(controlPosition) {\n    const isHorizontal = controlPosition.includes('right') || controlPosition.includes('left');\n    const isVertical = controlPosition.includes('bottom') || controlPosition.includes('top');\n    const affectsX = controlPosition.includes('left');\n    const affectsY = controlPosition.includes('top');\n    return {\n        isHorizontal,\n        isVertical,\n        affectsX,\n        affectsY,\n    };\n}\nfunction getLowerExtentClamp(lowerExtent, lowerBound) {\n    return Math.max(0, lowerBound - lowerExtent);\n}\nfunction getUpperExtentClamp(upperExtent, upperBound) {\n    return Math.max(0, upperExtent - upperBound);\n}\nfunction getSizeClamp(size, minSize, maxSize) {\n    return Math.max(0, minSize - size, size - maxSize);\n}\nfunction xor(a, b) {\n    return a ? !b : b;\n}\n/**\n * Calculates new width & height and x & y of node after resize based on pointer position\n * @description - Buckle up, this is a chunky one... If you want to determine the new dimensions of a node after a resize,\n * you have to account for all possible restrictions: min/max width/height of the node, the maximum extent the node is allowed\n * to move in (in this case: resize into) determined by the parent node, the minimal extent determined by child nodes\n * with expandParent or extent: 'parent' set and oh yeah, these things also have to work with keepAspectRatio!\n * The way this is done is by determining how much each of these restricting actually restricts the resize and then applying the\n * strongest restriction. Because the resize affects x, y and width, height and width, height of a opposing side with keepAspectRatio,\n * the resize amount is always kept in distX & distY amount (the distance in mouse movement)\n * Instead of clamping each value, we first calculate the biggest 'clamp' (for the lack of a better name) and then apply it to all values.\n * To complicate things nodeOrigin has to be taken into account as well. This is done by offsetting the nodes as if their origin is [0, 0],\n * then calculating the restrictions as usual\n * @param startValues - starting values of resize\n * @param controlDirection - dimensions affected by the resize\n * @param pointerPosition - the current pointer position corrected for snapping\n * @param boundaries - minimum and maximum dimensions of the node\n * @param keepAspectRatio - prevent changes of asprect ratio\n * @returns x, y, width and height of the node after resize\n */\nfunction getDimensionsAfterResize(startValues, controlDirection, pointerPosition, boundaries, keepAspectRatio, nodeOrigin, extent, childExtent) {\n    let { affectsX, affectsY } = controlDirection;\n    const { isHorizontal, isVertical } = controlDirection;\n    const isDiagonal = isHorizontal && isVertical;\n    const { xSnapped, ySnapped } = pointerPosition;\n    const { minWidth, maxWidth, minHeight, maxHeight } = boundaries;\n    const { x: startX, y: startY, width: startWidth, height: startHeight, aspectRatio } = startValues;\n    let distX = Math.floor(isHorizontal ? xSnapped - startValues.pointerX : 0);\n    let distY = Math.floor(isVertical ? ySnapped - startValues.pointerY : 0);\n    const newWidth = startWidth + (affectsX ? -distX : distX);\n    const newHeight = startHeight + (affectsY ? -distY : distY);\n    const originOffsetX = -nodeOrigin[0] * startWidth;\n    const originOffsetY = -nodeOrigin[1] * startHeight;\n    // Check if maxWidth, minWWidth, maxHeight, minHeight are restricting the resize\n    let clampX = getSizeClamp(newWidth, minWidth, maxWidth);\n    let clampY = getSizeClamp(newHeight, minHeight, maxHeight);\n    // Check if extent is restricting the resize\n    if (extent) {\n        let xExtentClamp = 0;\n        let yExtentClamp = 0;\n        if (affectsX && distX < 0) {\n            xExtentClamp = getLowerExtentClamp(startX + distX + originOffsetX, extent[0][0]);\n        }\n        else if (!affectsX && distX > 0) {\n            xExtentClamp = getUpperExtentClamp(startX + newWidth + originOffsetX, extent[1][0]);\n        }\n        if (affectsY && distY < 0) {\n            yExtentClamp = getLowerExtentClamp(startY + distY + originOffsetY, extent[0][1]);\n        }\n        else if (!affectsY && distY > 0) {\n            yExtentClamp = getUpperExtentClamp(startY + newHeight + originOffsetY, extent[1][1]);\n        }\n        clampX = Math.max(clampX, xExtentClamp);\n        clampY = Math.max(clampY, yExtentClamp);\n    }\n    // Check if the child extent is restricting the resize\n    if (childExtent) {\n        let xExtentClamp = 0;\n        let yExtentClamp = 0;\n        if (affectsX && distX > 0) {\n            xExtentClamp = getUpperExtentClamp(startX + distX, childExtent[0][0]);\n        }\n        else if (!affectsX && distX < 0) {\n            xExtentClamp = getLowerExtentClamp(startX + newWidth, childExtent[1][0]);\n        }\n        if (affectsY && distY > 0) {\n            yExtentClamp = getUpperExtentClamp(startY + distY, childExtent[0][1]);\n        }\n        else if (!affectsY && distY < 0) {\n            yExtentClamp = getLowerExtentClamp(startY + newHeight, childExtent[1][1]);\n        }\n        clampX = Math.max(clampX, xExtentClamp);\n        clampY = Math.max(clampY, yExtentClamp);\n    }\n    // Check if the aspect ratio resizing of the other side is restricting the resize\n    if (keepAspectRatio) {\n        if (isHorizontal) {\n            // Check if the max dimensions might be restricting the resize\n            const aspectHeightClamp = getSizeClamp(newWidth / aspectRatio, minHeight, maxHeight) * aspectRatio;\n            clampX = Math.max(clampX, aspectHeightClamp);\n            // Check if the extent is restricting the resize\n            if (extent) {\n                let aspectExtentClamp = 0;\n                if ((!affectsX && !affectsY) || (affectsX && !affectsY && isDiagonal)) {\n                    aspectExtentClamp =\n                        getUpperExtentClamp(startY + originOffsetY + newWidth / aspectRatio, extent[1][1]) * aspectRatio;\n                }\n                else {\n                    aspectExtentClamp =\n                        getLowerExtentClamp(startY + originOffsetY + (affectsX ? distX : -distX) / aspectRatio, extent[0][1]) *\n                            aspectRatio;\n                }\n                clampX = Math.max(clampX, aspectExtentClamp);\n            }\n            // Check if the child extent is restricting the resize\n            if (childExtent) {\n                let aspectExtentClamp = 0;\n                if ((!affectsX && !affectsY) || (affectsX && !affectsY && isDiagonal)) {\n                    aspectExtentClamp = getLowerExtentClamp(startY + newWidth / aspectRatio, childExtent[1][1]) * aspectRatio;\n                }\n                else {\n                    aspectExtentClamp =\n                        getUpperExtentClamp(startY + (affectsX ? distX : -distX) / aspectRatio, childExtent[0][1]) * aspectRatio;\n                }\n                clampX = Math.max(clampX, aspectExtentClamp);\n            }\n        }\n        // Do the same thing for vertical resizing\n        if (isVertical) {\n            const aspectWidthClamp = getSizeClamp(newHeight * aspectRatio, minWidth, maxWidth) / aspectRatio;\n            clampY = Math.max(clampY, aspectWidthClamp);\n            if (extent) {\n                let aspectExtentClamp = 0;\n                if ((!affectsX && !affectsY) || (affectsY && !affectsX && isDiagonal)) {\n                    aspectExtentClamp =\n                        getUpperExtentClamp(startX + newHeight * aspectRatio + originOffsetX, extent[1][0]) / aspectRatio;\n                }\n                else {\n                    aspectExtentClamp =\n                        getLowerExtentClamp(startX + (affectsY ? distY : -distY) * aspectRatio + originOffsetX, extent[0][0]) /\n                            aspectRatio;\n                }\n                clampY = Math.max(clampY, aspectExtentClamp);\n            }\n            if (childExtent) {\n                let aspectExtentClamp = 0;\n                if ((!affectsX && !affectsY) || (affectsY && !affectsX && isDiagonal)) {\n                    aspectExtentClamp = getLowerExtentClamp(startX + newHeight * aspectRatio, childExtent[1][0]) / aspectRatio;\n                }\n                else {\n                    aspectExtentClamp =\n                        getUpperExtentClamp(startX + (affectsY ? distY : -distY) * aspectRatio, childExtent[0][0]) / aspectRatio;\n                }\n                clampY = Math.max(clampY, aspectExtentClamp);\n            }\n        }\n    }\n    distY = distY + (distY < 0 ? clampY : -clampY);\n    distX = distX + (distX < 0 ? clampX : -clampX);\n    if (keepAspectRatio) {\n        if (isDiagonal) {\n            if (newWidth > newHeight * aspectRatio) {\n                distY = (xor(affectsX, affectsY) ? -distX : distX) / aspectRatio;\n            }\n            else {\n                distX = (xor(affectsX, affectsY) ? -distY : distY) * aspectRatio;\n            }\n        }\n        else {\n            if (isHorizontal) {\n                distY = distX / aspectRatio;\n                affectsY = affectsX;\n            }\n            else {\n                distX = distY * aspectRatio;\n                affectsX = affectsY;\n            }\n        }\n    }\n    const x = affectsX ? startX + distX : startX;\n    const y = affectsY ? startY + distY : startY;\n    return {\n        width: startWidth + (affectsX ? -distX : distX),\n        height: startHeight + (affectsY ? -distY : distY),\n        x: nodeOrigin[0] * distX * (!affectsX ? 1 : -1) + x,\n        y: nodeOrigin[1] * distY * (!affectsY ? 1 : -1) + y,\n    };\n}\n\nconst initPrevValues = { width: 0, height: 0, x: 0, y: 0 };\nconst initStartValues = {\n    ...initPrevValues,\n    pointerX: 0,\n    pointerY: 0,\n    aspectRatio: 1,\n};\nfunction nodeToParentExtent(node) {\n    return [\n        [0, 0],\n        [node.measured.width, node.measured.height],\n    ];\n}\nfunction nodeToChildExtent(child, parent, nodeOrigin) {\n    const x = parent.position.x + child.position.x;\n    const y = parent.position.y + child.position.y;\n    const width = child.measured.width ?? 0;\n    const height = child.measured.height ?? 0;\n    const originOffsetX = nodeOrigin[0] * width;\n    const originOffsetY = nodeOrigin[1] * height;\n    return [\n        [x - originOffsetX, y - originOffsetY],\n        [x + width - originOffsetX, y + height - originOffsetY],\n    ];\n}\nfunction XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {\n    const selection = select(domNode);\n    let params = {\n        controlDirection: getControlDirection('bottom-right'),\n        boundaries: {\n            minWidth: 0,\n            minHeight: 0,\n            maxWidth: Number.MAX_VALUE,\n            maxHeight: Number.MAX_VALUE,\n        },\n        resizeDirection: undefined,\n        keepAspectRatio: false,\n    };\n    function update({ controlPosition, boundaries, keepAspectRatio, resizeDirection, onResizeStart, onResize, onResizeEnd, shouldResize, }) {\n        let prevValues = { ...initPrevValues };\n        let startValues = { ...initStartValues };\n        params = {\n            boundaries,\n            resizeDirection,\n            keepAspectRatio,\n            controlDirection: getControlDirection(controlPosition),\n        };\n        let node = undefined;\n        let containerBounds = null;\n        let childNodes = [];\n        let parentNode = undefined; // Needed to fix expandParent\n        let parentExtent = undefined;\n        let childExtent = undefined;\n        // we only want to trigger onResizeEnd if onResize was actually called\n        let resizeDetected = false;\n        const dragHandler = drag()\n            .on('start', (event) => {\n            const { nodeLookup, transform, snapGrid, snapToGrid, nodeOrigin, paneDomNode } = getStoreItems();\n            node = nodeLookup.get(nodeId);\n            if (!node) {\n                return;\n            }\n            containerBounds = paneDomNode?.getBoundingClientRect() ?? null;\n            const { xSnapped, ySnapped } = getPointerPosition(event.sourceEvent, {\n                transform,\n                snapGrid,\n                snapToGrid,\n                containerBounds,\n            });\n            prevValues = {\n                width: node.measured.width ?? 0,\n                height: node.measured.height ?? 0,\n                x: node.position.x ?? 0,\n                y: node.position.y ?? 0,\n            };\n            startValues = {\n                ...prevValues,\n                pointerX: xSnapped,\n                pointerY: ySnapped,\n                aspectRatio: prevValues.width / prevValues.height,\n            };\n            parentNode = undefined;\n            if (node.parentId && (node.extent === 'parent' || node.expandParent)) {\n                parentNode = nodeLookup.get(node.parentId);\n                parentExtent = parentNode && node.extent === 'parent' ? nodeToParentExtent(parentNode) : undefined;\n            }\n            /*\n             * Collect all child nodes to correct their relative positions when top/left changes\n             * Determine largest minimal extent the parent node is allowed to resize to\n             */\n            childNodes = [];\n            childExtent = undefined;\n            for (const [childId, child] of nodeLookup) {\n                if (child.parentId === nodeId) {\n                    childNodes.push({\n                        id: childId,\n                        position: { ...child.position },\n                        extent: child.extent,\n                    });\n                    if (child.extent === 'parent' || child.expandParent) {\n                        const extent = nodeToChildExtent(child, node, child.origin ?? nodeOrigin);\n                        if (childExtent) {\n                            childExtent = [\n                                [Math.min(extent[0][0], childExtent[0][0]), Math.min(extent[0][1], childExtent[0][1])],\n                                [Math.max(extent[1][0], childExtent[1][0]), Math.max(extent[1][1], childExtent[1][1])],\n                            ];\n                        }\n                        else {\n                            childExtent = extent;\n                        }\n                    }\n                }\n            }\n            onResizeStart?.(event, { ...prevValues });\n        })\n            .on('drag', (event) => {\n            const { transform, snapGrid, snapToGrid, nodeOrigin: storeNodeOrigin } = getStoreItems();\n            const pointerPosition = getPointerPosition(event.sourceEvent, {\n                transform,\n                snapGrid,\n                snapToGrid,\n                containerBounds,\n            });\n            const childChanges = [];\n            if (!node) {\n                return;\n            }\n            const { x: prevX, y: prevY, width: prevWidth, height: prevHeight } = prevValues;\n            const change = {};\n            const nodeOrigin = node.origin ?? storeNodeOrigin;\n            const { width, height, x, y } = getDimensionsAfterResize(startValues, params.controlDirection, pointerPosition, params.boundaries, params.keepAspectRatio, nodeOrigin, parentExtent, childExtent);\n            const isWidthChange = width !== prevWidth;\n            const isHeightChange = height !== prevHeight;\n            const isXPosChange = x !== prevX && isWidthChange;\n            const isYPosChange = y !== prevY && isHeightChange;\n            if (!isXPosChange && !isYPosChange && !isWidthChange && !isHeightChange) {\n                return;\n            }\n            if (isXPosChange || isYPosChange || nodeOrigin[0] === 1 || nodeOrigin[1] === 1) {\n                change.x = isXPosChange ? x : prevValues.x;\n                change.y = isYPosChange ? y : prevValues.y;\n                prevValues.x = change.x;\n                prevValues.y = change.y;\n                /*\n                 * when top/left changes, correct the relative positions of child nodes\n                 * so that they stay in the same position\n                 */\n                if (childNodes.length > 0) {\n                    const xChange = x - prevX;\n                    const yChange = y - prevY;\n                    for (const childNode of childNodes) {\n                        childNode.position = {\n                            x: childNode.position.x - xChange + nodeOrigin[0] * (width - prevWidth),\n                            y: childNode.position.y - yChange + nodeOrigin[1] * (height - prevHeight),\n                        };\n                        childChanges.push(childNode);\n                    }\n                }\n            }\n            if (isWidthChange || isHeightChange) {\n                change.width =\n                    isWidthChange && (!params.resizeDirection || params.resizeDirection === 'horizontal')\n                        ? width\n                        : prevValues.width;\n                change.height =\n                    isHeightChange && (!params.resizeDirection || params.resizeDirection === 'vertical')\n                        ? height\n                        : prevValues.height;\n                prevValues.width = change.width;\n                prevValues.height = change.height;\n            }\n            // Fix expandParent when resizing from top/left\n            if (parentNode && node.expandParent) {\n                const xLimit = nodeOrigin[0] * (change.width ?? 0);\n                if (change.x && change.x < xLimit) {\n                    prevValues.x = xLimit;\n                    startValues.x = startValues.x - (change.x - xLimit);\n                }\n                const yLimit = nodeOrigin[1] * (change.height ?? 0);\n                if (change.y && change.y < yLimit) {\n                    prevValues.y = yLimit;\n                    startValues.y = startValues.y - (change.y - yLimit);\n                }\n            }\n            const direction = getResizeDirection({\n                width: prevValues.width,\n                prevWidth,\n                height: prevValues.height,\n                prevHeight,\n                affectsX: params.controlDirection.affectsX,\n                affectsY: params.controlDirection.affectsY,\n            });\n            const nextValues = { ...prevValues, direction };\n            const callResize = shouldResize?.(event, nextValues);\n            if (callResize === false) {\n                return;\n            }\n            resizeDetected = true;\n            onResize?.(event, nextValues);\n            onChange(change, childChanges);\n        })\n            .on('end', (event) => {\n            if (!resizeDetected) {\n                return;\n            }\n            onResizeEnd?.(event, { ...prevValues });\n            onEnd?.({ ...prevValues });\n            resizeDetected = false;\n        });\n        selection.call(dragHandler);\n    }\n    function destroy() {\n        selection.on('.drag', null);\n    }\n    return {\n        update,\n        destroy,\n    };\n}\n\nexport { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, XYDrag, XYHandle, XYMinimap, XYPanZoom, XYResizer, XY_RESIZER_HANDLE_POSITIONS, XY_RESIZER_LINE_POSITIONS, addEdge, adoptUserNodes, areConnectionMapsEqual, areSetsEqual, boxToRect, calcAutoPan, calculateNodePosition, clamp, clampPosition, clampPositionToParent, createMarkerIds, defaultAriaLabelConfig, devWarn, elementSelectionKeys, errorMessages, evaluateAbsolutePosition, fitViewport, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getDimensions, getEdgeCenter, getEdgeId, getEdgePosition, getEdgeToolbarTransform, getElementsToRemove, getElevatedEdgeZIndex, getEventPosition, getHandleBounds, getHandlePosition, getHostForElement, getIncomers, getInternalNodesBounds, getMarkerId, getNodeDimensions, getNodePositionWithOrigin, getNodeToolbarTransform, getNodesBounds, getNodesInside, getOutgoers, getOverlappingArea, getPointerPosition, getSmoothStepPath, getStraightPath, getViewportForBounds, handleConnectionChange, handleExpandParent, infiniteExtent, initialConnection, isCoordinateExtent, isEdgeBase, isEdgeVisible, isInputDOMNode, isInternalNodeBase, isMacOs, isManualZIndexMode, isMouseEvent, isNodeBase, isNumeric, isRectObject, mergeAriaLabelConfig, nodeHasDimensions, nodeToBox, nodeToRect, oppositePosition, panBy, pointToRendererPoint, reconnectEdge, rectToBox, rendererPointToPoint, shallowNodeData, snapPosition, updateAbsolutePositions, updateConnectionLookup, updateNodeInternals, withResolvers };\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  useState = React.useState,\n  useEffect = React.useEffect,\n  useLayoutEffect = React.useLayoutEffect,\n  useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n  var value = getSnapshot(),\n    _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n    inst = _useState[0].inst,\n    forceUpdate = _useState[1];\n  useLayoutEffect(\n    function () {\n      inst.value = value;\n      inst.getSnapshot = getSnapshot;\n      checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n    },\n    [subscribe, value, getSnapshot]\n  );\n  useEffect(\n    function () {\n      checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n      return subscribe(function () {\n        checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n      });\n    },\n    [subscribe]\n  );\n  useDebugValue(value);\n  return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n  return getSnapshot();\n}\nvar shim =\n  \"undefined\" === typeof window ||\n  \"undefined\" === typeof window.document ||\n  \"undefined\" === typeof window.document.createElement\n    ? useSyncExternalStore$1\n    : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n  void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function is(x, y) {\n      return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n    }\n    function useSyncExternalStore$2(subscribe, getSnapshot) {\n      didWarnOld18Alpha ||\n        void 0 === React.startTransition ||\n        ((didWarnOld18Alpha = !0),\n        console.error(\n          \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n        ));\n      var value = getSnapshot();\n      if (!didWarnUncachedGetSnapshot) {\n        var cachedValue = getSnapshot();\n        objectIs(value, cachedValue) ||\n          (console.error(\n            \"The result of getSnapshot should be cached to avoid an infinite loop\"\n          ),\n          (didWarnUncachedGetSnapshot = !0));\n      }\n      cachedValue = useState({\n        inst: { value: value, getSnapshot: getSnapshot }\n      });\n      var inst = cachedValue[0].inst,\n        forceUpdate = cachedValue[1];\n      useLayoutEffect(\n        function () {\n          inst.value = value;\n          inst.getSnapshot = getSnapshot;\n          checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n        },\n        [subscribe, value, getSnapshot]\n      );\n      useEffect(\n        function () {\n          checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n          return subscribe(function () {\n            checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n          });\n        },\n        [subscribe]\n      );\n      useDebugValue(value);\n      return value;\n    }\n    function checkIfSnapshotChanged(inst) {\n      var latestGetSnapshot = inst.getSnapshot;\n      inst = inst.value;\n      try {\n        var nextValue = latestGetSnapshot();\n        return !objectIs(inst, nextValue);\n      } catch (error) {\n        return !0;\n      }\n    }\n    function useSyncExternalStore$1(subscribe, getSnapshot) {\n      return getSnapshot();\n    }\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n    var React = require(\"react\"),\n      objectIs = \"function\" === typeof Object.is ? Object.is : is,\n      useState = React.useState,\n      useEffect = React.useEffect,\n      useLayoutEffect = React.useLayoutEffect,\n      useDebugValue = React.useDebugValue,\n      didWarnOld18Alpha = !1,\n      didWarnUncachedGetSnapshot = !1,\n      shim =\n        \"undefined\" === typeof window ||\n        \"undefined\" === typeof window.document ||\n        \"undefined\" === typeof window.document.createElement\n          ? useSyncExternalStore$1\n          : useSyncExternalStore$2;\n    exports.useSyncExternalStore =\n      void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n  shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  useSyncExternalStore = shim.useSyncExternalStore,\n  useRef = React.useRef,\n  useEffect = React.useEffect,\n  useMemo = React.useMemo,\n  useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot,\n  selector,\n  isEqual\n) {\n  var instRef = useRef(null);\n  if (null === instRef.current) {\n    var inst = { hasValue: !1, value: null };\n    instRef.current = inst;\n  } else inst = instRef.current;\n  instRef = useMemo(\n    function () {\n      function memoizedSelector(nextSnapshot) {\n        if (!hasMemo) {\n          hasMemo = !0;\n          memoizedSnapshot = nextSnapshot;\n          nextSnapshot = selector(nextSnapshot);\n          if (void 0 !== isEqual && inst.hasValue) {\n            var currentSelection = inst.value;\n            if (isEqual(currentSelection, nextSnapshot))\n              return (memoizedSelection = currentSelection);\n          }\n          return (memoizedSelection = nextSnapshot);\n        }\n        currentSelection = memoizedSelection;\n        if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n        var nextSelection = selector(nextSnapshot);\n        if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n          return (memoizedSnapshot = nextSnapshot), currentSelection;\n        memoizedSnapshot = nextSnapshot;\n        return (memoizedSelection = nextSelection);\n      }\n      var hasMemo = !1,\n        memoizedSnapshot,\n        memoizedSelection,\n        maybeGetServerSnapshot =\n          void 0 === getServerSnapshot ? null : getServerSnapshot;\n      return [\n        function () {\n          return memoizedSelector(getSnapshot());\n        },\n        null === maybeGetServerSnapshot\n          ? void 0\n          : function () {\n              return memoizedSelector(maybeGetServerSnapshot());\n            }\n      ];\n    },\n    [getSnapshot, getServerSnapshot, selector, isEqual]\n  );\n  var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n  useEffect(\n    function () {\n      inst.hasValue = !0;\n      inst.value = value;\n    },\n    [value]\n  );\n  useDebugValue(value);\n  return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function is(x, y) {\n      return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n    }\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n    var React = require(\"react\"),\n      shim = require(\"use-sync-external-store/shim\"),\n      objectIs = \"function\" === typeof Object.is ? Object.is : is,\n      useSyncExternalStore = shim.useSyncExternalStore,\n      useRef = React.useRef,\n      useEffect = React.useEffect,\n      useMemo = React.useMemo,\n      useDebugValue = React.useDebugValue;\n    exports.useSyncExternalStoreWithSelector = function (\n      subscribe,\n      getSnapshot,\n      getServerSnapshot,\n      selector,\n      isEqual\n    ) {\n      var instRef = useRef(null);\n      if (null === instRef.current) {\n        var inst = { hasValue: !1, value: null };\n        instRef.current = inst;\n      } else inst = instRef.current;\n      instRef = useMemo(\n        function () {\n          function memoizedSelector(nextSnapshot) {\n            if (!hasMemo) {\n              hasMemo = !0;\n              memoizedSnapshot = nextSnapshot;\n              nextSnapshot = selector(nextSnapshot);\n              if (void 0 !== isEqual && inst.hasValue) {\n                var currentSelection = inst.value;\n                if (isEqual(currentSelection, nextSnapshot))\n                  return (memoizedSelection = currentSelection);\n              }\n              return (memoizedSelection = nextSnapshot);\n            }\n            currentSelection = memoizedSelection;\n            if (objectIs(memoizedSnapshot, nextSnapshot))\n              return currentSelection;\n            var nextSelection = selector(nextSnapshot);\n            if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n              return (memoizedSnapshot = nextSnapshot), currentSelection;\n            memoizedSnapshot = nextSnapshot;\n            return (memoizedSelection = nextSelection);\n          }\n          var hasMemo = !1,\n            memoizedSnapshot,\n            memoizedSelection,\n            maybeGetServerSnapshot =\n              void 0 === getServerSnapshot ? null : getServerSnapshot;\n          return [\n            function () {\n              return memoizedSelector(getSnapshot());\n            },\n            null === maybeGetServerSnapshot\n              ? void 0\n              : function () {\n                  return memoizedSelector(maybeGetServerSnapshot());\n                }\n          ];\n        },\n        [getSnapshot, getServerSnapshot, selector, isEqual]\n      );\n      var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n      useEffect(\n        function () {\n          inst.hasValue = !0;\n          inst.value = value;\n        },\n        [value]\n      );\n      useDebugValue(value);\n      return value;\n    };\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","const createStoreImpl = (createState) => {\n  let state;\n  const listeners = /* @__PURE__ */ new Set();\n  const setState = (partial, replace) => {\n    const nextState = typeof partial === \"function\" ? partial(state) : partial;\n    if (!Object.is(nextState, state)) {\n      const previousState = state;\n      state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach((listener) => listener(state, previousState));\n    }\n  };\n  const getState = () => state;\n  const getInitialState = () => initialState;\n  const subscribe = (listener) => {\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const destroy = () => {\n    if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n      console.warn(\n        \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n      );\n    }\n    listeners.clear();\n  };\n  const api = { setState, getState, getInitialState, subscribe, destroy };\n  const initialState = state = createState(setState, getState, api);\n  return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n  if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n    console.warn(\n      \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n    );\n  }\n  return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n  const slice = useSyncExternalStoreWithSelector(\n    api.subscribe,\n    api.getState,\n    api.getServerState || api.getInitialState,\n    selector,\n    equalityFn\n  );\n  useDebugValue(slice);\n  return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n  const api = createStore(createState);\n  const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n  Object.assign(useBoundStoreWithEqualityFn, api);\n  return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = (createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl;\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","function shallow$1(objA, objB) {\n  if (Object.is(objA, objB)) {\n    return true;\n  }\n  if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n    return false;\n  }\n  if (objA instanceof Map && objB instanceof Map) {\n    if (objA.size !== objB.size) return false;\n    for (const [key, value] of objA) {\n      if (!Object.is(value, objB.get(key))) {\n        return false;\n      }\n    }\n    return true;\n  }\n  if (objA instanceof Set && objB instanceof Set) {\n    if (objA.size !== objB.size) return false;\n    for (const value of objA) {\n      if (!objB.has(value)) {\n        return false;\n      }\n    }\n    return true;\n  }\n  const keysA = Object.keys(objA);\n  if (keysA.length !== Object.keys(objB).length) {\n    return false;\n  }\n  for (const keyA of keysA) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nvar shallow = (objA, objB) => {\n  if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n    console.warn(\n      \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n    );\n  }\n  return shallow$1(objA, objB);\n};\n\nexport { shallow as default, shallow$1 as shallow };\n","\"use client\"\nimport { jsxs, Fragment, jsx } from 'react/jsx-runtime';\nimport { createContext, useContext, useMemo, forwardRef, useEffect, useLayoutEffect, useRef, useState, useCallback, memo } from 'react';\nimport cc from 'classcat';\nimport { errorMessages, mergeAriaLabelConfig, infiniteExtent, isInputDOMNode, getViewportForBounds, pointToRendererPoint, rendererPointToPoint, isNodeBase, isEdgeBase, getElementsToRemove, isRectObject, nodeToRect, getOverlappingArea, getNodesBounds, withResolvers, evaluateAbsolutePosition, getDimensions, XYPanZoom, PanOnScrollMode, SelectionMode, getEventPosition, getNodesInside, areSetsEqual, XYDrag, snapPosition, calculateNodePosition, Position, ConnectionMode, isMouseEvent, XYHandle, getHostForElement, addEdge, getInternalNodesBounds, isNumeric, nodeHasDimensions, getNodeDimensions, elementSelectionKeys, isEdgeVisible, MarkerType, createMarkerIds, getBezierEdgeCenter, getSmoothStepPath, getStraightPath, getBezierPath, getEdgePosition, getElevatedEdgeZIndex, getMarkerId, getConnectionStatus, ConnectionLineType, updateConnectionLookup, adoptUserNodes, initialConnection, devWarn, defaultAriaLabelConfig, updateNodeInternals, updateAbsolutePositions, getHandlePosition, handleExpandParent, panBy, fitViewport, isMacOs, areConnectionMapsEqual, handleConnectionChange, shallowNodeData, XYMinimap, getBoundsOfRects, ResizeControlVariant, XYResizer, XY_RESIZER_LINE_POSITIONS, XY_RESIZER_HANDLE_POSITIONS, getNodeToolbarTransform, getEdgeToolbarTransform } from '@xyflow/system';\nexport { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, addEdge, getBezierEdgeCenter, getBezierPath, getConnectedEdges, getEdgeCenter, getIncomers, getNodesBounds, getOutgoers, getSmoothStepPath, getStraightPath, getViewportForBounds, reconnectEdge } from '@xyflow/system';\nimport { useStoreWithEqualityFn, createWithEqualityFn } from 'zustand/traditional';\nimport { shallow } from 'zustand/shallow';\nimport { createPortal } from 'react-dom';\n\nconst StoreContext = createContext(null);\nconst Provider$1 = StoreContext.Provider;\n\nconst zustandErrorMessage = errorMessages['error001']();\n/**\n * This hook can be used to subscribe to internal state changes of the React Flow\n * component. The `useStore` hook is re-exported from the [Zustand](https://github.com/pmndrs/zustand)\n * state management library, so you should check out their docs for more details.\n *\n * @public\n * @param selector - A selector function that returns a slice of the flow's internal state.\n * Extracting or transforming just the state you need is a good practice to avoid unnecessary\n * re-renders.\n * @param equalityFn - A function to compare the previous and next value. This is incredibly useful\n * for preventing unnecessary re-renders. Good sensible defaults are using `Object.is` or importing\n * `zustand/shallow`, but you can be as granular as you like.\n * @returns The selected state slice.\n *\n * @example\n * ```ts\n * const nodes = useStore((state) => state.nodes);\n * ```\n *\n * @remarks This hook should only be used if there is no other way to access the internal\n * state. For many of the common use cases, there are dedicated hooks available\n * such as {@link useReactFlow}, {@link useViewport}, etc.\n */\nfunction useStore(selector, equalityFn) {\n    const store = useContext(StoreContext);\n    if (store === null) {\n        throw new Error(zustandErrorMessage);\n    }\n    return useStoreWithEqualityFn(store, selector, equalityFn);\n}\n/**\n * In some cases, you might need to access the store directly. This hook returns the store object which can be used on demand to access the state or dispatch actions.\n *\n * @returns The store object.\n * @example\n * ```ts\n * const store = useStoreApi();\n * ```\n *\n * @remarks This hook should only be used if there is no other way to access the internal\n * state. For many of the common use cases, there are dedicated hooks available\n * such as {@link useReactFlow}, {@link useViewport}, etc.\n */\nfunction useStoreApi() {\n    const store = useContext(StoreContext);\n    if (store === null) {\n        throw new Error(zustandErrorMessage);\n    }\n    return useMemo(() => ({\n        getState: store.getState,\n        setState: store.setState,\n        subscribe: store.subscribe,\n    }), [store]);\n}\n\nconst style = { display: 'none' };\nconst ariaLiveStyle = {\n    position: 'absolute',\n    width: 1,\n    height: 1,\n    margin: -1,\n    border: 0,\n    padding: 0,\n    overflow: 'hidden',\n    clip: 'rect(0px, 0px, 0px, 0px)',\n    clipPath: 'inset(100%)',\n};\nconst ARIA_NODE_DESC_KEY = 'react-flow__node-desc';\nconst ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc';\nconst ARIA_LIVE_MESSAGE = 'react-flow__aria-live';\nconst ariaLiveSelector = (s) => s.ariaLiveMessage;\nconst ariaLabelConfigSelector = (s) => s.ariaLabelConfig;\nfunction AriaLiveMessage({ rfId }) {\n    const ariaLiveMessage = useStore(ariaLiveSelector);\n    return (jsx(\"div\", { id: `${ARIA_LIVE_MESSAGE}-${rfId}`, \"aria-live\": \"assertive\", \"aria-atomic\": \"true\", style: ariaLiveStyle, children: ariaLiveMessage }));\n}\nfunction A11yDescriptions({ rfId, disableKeyboardA11y }) {\n    const ariaLabelConfig = useStore(ariaLabelConfigSelector);\n    return (jsxs(Fragment, { children: [jsx(\"div\", { id: `${ARIA_NODE_DESC_KEY}-${rfId}`, style: style, children: disableKeyboardA11y\n                    ? ariaLabelConfig['node.a11yDescription.default']\n                    : ariaLabelConfig['node.a11yDescription.keyboardDisabled'] }), jsx(\"div\", { id: `${ARIA_EDGE_DESC_KEY}-${rfId}`, style: style, children: ariaLabelConfig['edge.a11yDescription.default'] }), !disableKeyboardA11y && jsx(AriaLiveMessage, { rfId: rfId })] }));\n}\n\n/**\n * The `<Panel />` component helps you position content above the viewport.\n * It is used internally by the [`<MiniMap />`](/api-reference/components/minimap)\n * and [`<Controls />`](/api-reference/components/controls) components.\n *\n * @public\n *\n * @example\n * ```jsx\n *import { ReactFlow, Background, Panel } from '@xyflow/react';\n *\n *export default function Flow() {\n *  return (\n *    <ReactFlow nodes={[]} fitView>\n *      <Panel position=\"top-left\">top-left</Panel>\n *      <Panel position=\"top-center\">top-center</Panel>\n *      <Panel position=\"top-right\">top-right</Panel>\n *      <Panel position=\"bottom-left\">bottom-left</Panel>\n *      <Panel position=\"bottom-center\">bottom-center</Panel>\n *      <Panel position=\"bottom-right\">bottom-right</Panel>\n *    </ReactFlow>\n *  );\n *}\n *```\n */\nconst Panel = forwardRef(({ position = 'top-left', children, className, style, ...rest }, ref) => {\n    const positionClasses = `${position}`.split('-');\n    return (jsx(\"div\", { className: cc(['react-flow__panel', className, ...positionClasses]), style: style, ref: ref, ...rest, children: children }));\n});\nPanel.displayName = 'Panel';\n\nfunction Attribution({ proOptions, position = 'bottom-right' }) {\n    if (proOptions?.hideAttribution) {\n        return null;\n    }\n    return (jsx(Panel, { position: position, className: \"react-flow__attribution\", \"data-message\": \"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev\", children: jsx(\"a\", { href: \"https://reactflow.dev\", target: \"_blank\", rel: \"noopener noreferrer\", \"aria-label\": \"React Flow attribution\", children: \"React Flow\" }) }));\n}\n\nconst selector$m = (s) => {\n    const selectedNodes = [];\n    const selectedEdges = [];\n    for (const [, node] of s.nodeLookup) {\n        if (node.selected) {\n            selectedNodes.push(node.internals.userNode);\n        }\n    }\n    for (const [, edge] of s.edgeLookup) {\n        if (edge.selected) {\n            selectedEdges.push(edge);\n        }\n    }\n    return { selectedNodes, selectedEdges };\n};\nconst selectId = (obj) => obj.id;\nfunction areEqual(a, b) {\n    return (shallow(a.selectedNodes.map(selectId), b.selectedNodes.map(selectId)) &&\n        shallow(a.selectedEdges.map(selectId), b.selectedEdges.map(selectId)));\n}\nfunction SelectionListenerInner({ onSelectionChange, }) {\n    const store = useStoreApi();\n    const { selectedNodes, selectedEdges } = useStore(selector$m, areEqual);\n    useEffect(() => {\n        const params = { nodes: selectedNodes, edges: selectedEdges };\n        onSelectionChange?.(params);\n        store.getState().onSelectionChangeHandlers.forEach((fn) => fn(params));\n    }, [selectedNodes, selectedEdges, onSelectionChange]);\n    return null;\n}\nconst changeSelector = (s) => !!s.onSelectionChangeHandlers;\nfunction SelectionListener({ onSelectionChange, }) {\n    const storeHasSelectionChangeHandlers = useStore(changeSelector);\n    if (onSelectionChange || storeHasSelectionChangeHandlers) {\n        return jsx(SelectionListenerInner, { onSelectionChange: onSelectionChange });\n    }\n    return null;\n}\n\n// we need this hook to prevent a warning when using react-flow in SSR\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nconst defaultNodeOrigin = [0, 0];\nconst defaultViewport = { x: 0, y: 0, zoom: 1 };\n\n/*\n * This component helps us to update the store with the values coming from the user.\n * We distinguish between values we can update directly with `useDirectStoreUpdater` (like `snapGrid`)\n * and values that have a dedicated setter function in the store (like `setNodes`).\n */\n// These fields exist in the global store, and we need to keep them up to date\nconst reactFlowFieldsToTrack = [\n    'nodes',\n    'edges',\n    'defaultNodes',\n    'defaultEdges',\n    'onConnect',\n    'onConnectStart',\n    'onConnectEnd',\n    'onClickConnectStart',\n    'onClickConnectEnd',\n    'nodesDraggable',\n    'autoPanOnNodeFocus',\n    'nodesConnectable',\n    'nodesFocusable',\n    'edgesFocusable',\n    'edgesReconnectable',\n    'elevateNodesOnSelect',\n    'elevateEdgesOnSelect',\n    'minZoom',\n    'maxZoom',\n    'nodeExtent',\n    'onNodesChange',\n    'onEdgesChange',\n    'elementsSelectable',\n    'connectionMode',\n    'snapGrid',\n    'snapToGrid',\n    'translateExtent',\n    'connectOnClick',\n    'defaultEdgeOptions',\n    'fitView',\n    'fitViewOptions',\n    'onNodesDelete',\n    'onEdgesDelete',\n    'onDelete',\n    'onNodeDrag',\n    'onNodeDragStart',\n    'onNodeDragStop',\n    'onSelectionDrag',\n    'onSelectionDragStart',\n    'onSelectionDragStop',\n    'onMoveStart',\n    'onMove',\n    'onMoveEnd',\n    'noPanClassName',\n    'nodeOrigin',\n    'autoPanOnConnect',\n    'autoPanOnNodeDrag',\n    'onError',\n    'connectionRadius',\n    'isValidConnection',\n    'selectNodesOnDrag',\n    'nodeDragThreshold',\n    'connectionDragThreshold',\n    'onBeforeDelete',\n    'debug',\n    'autoPanSpeed',\n    'ariaLabelConfig',\n    'zIndexMode',\n];\n// rfId doesn't exist in ReactFlowProps, but it's one of the fields we want to update\nconst fieldsToTrack = [...reactFlowFieldsToTrack, 'rfId'];\nconst selector$l = (s) => ({\n    setNodes: s.setNodes,\n    setEdges: s.setEdges,\n    setMinZoom: s.setMinZoom,\n    setMaxZoom: s.setMaxZoom,\n    setTranslateExtent: s.setTranslateExtent,\n    setNodeExtent: s.setNodeExtent,\n    reset: s.reset,\n    setDefaultNodesAndEdges: s.setDefaultNodesAndEdges,\n});\nconst initPrevValues = {\n    /*\n     * these are values that are also passed directly to other components\n     * than the StoreUpdater. We can reduce the number of setStore calls\n     * by setting the same values here as prev fields.\n     */\n    translateExtent: infiniteExtent,\n    nodeOrigin: defaultNodeOrigin,\n    minZoom: 0.5,\n    maxZoom: 2,\n    elementsSelectable: true,\n    noPanClassName: 'nopan',\n    rfId: '1',\n};\nfunction StoreUpdater(props) {\n    const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges, } = useStore(selector$l, shallow);\n    const store = useStoreApi();\n    // We use layout effects here so that the store is always populated before\n    // any child useEffect or useLayoutEffect fires. With regular useEffect, the\n    // cleanup calls reset() which empties the store, and child effects can run\n    // before the new mount effect repopulates it — causing children to read\n    // empty nodeLookup/nodes/edges during a <ReactFlow> remount.\n    useIsomorphicLayoutEffect(() => {\n        setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges);\n        return () => {\n            // when we reset the store we also need to reset the previous fields\n            previousFields.current = initPrevValues;\n            reset();\n        };\n    }, []);\n    const previousFields = useRef(initPrevValues);\n    useIsomorphicLayoutEffect(() => {\n        for (const fieldName of fieldsToTrack) {\n            const fieldValue = props[fieldName];\n            const previousFieldValue = previousFields.current[fieldName];\n            if (fieldValue === previousFieldValue)\n                continue;\n            if (typeof props[fieldName] === 'undefined')\n                continue;\n            // Custom handling with dedicated setters for some fields\n            if (fieldName === 'nodes')\n                setNodes(fieldValue);\n            else if (fieldName === 'edges')\n                setEdges(fieldValue);\n            else if (fieldName === 'minZoom')\n                setMinZoom(fieldValue);\n            else if (fieldName === 'maxZoom')\n                setMaxZoom(fieldValue);\n            else if (fieldName === 'translateExtent')\n                setTranslateExtent(fieldValue);\n            else if (fieldName === 'nodeExtent')\n                setNodeExtent(fieldValue);\n            else if (fieldName === 'ariaLabelConfig')\n                store.setState({ ariaLabelConfig: mergeAriaLabelConfig(fieldValue) });\n            // Renamed fields\n            else if (fieldName === 'fitView')\n                store.setState({ fitViewQueued: fieldValue });\n            else if (fieldName === 'fitViewOptions')\n                store.setState({ fitViewOptions: fieldValue });\n            // General case\n            else\n                store.setState({ [fieldName]: fieldValue });\n        }\n        previousFields.current = props;\n    }, \n    // Only re-run the effect if one of the fields we track changes\n    fieldsToTrack.map((fieldName) => props[fieldName]));\n    return null;\n}\n\nfunction getMediaQuery() {\n    if (typeof window === 'undefined' || !window.matchMedia) {\n        return null;\n    }\n    return window.matchMedia('(prefers-color-scheme: dark)');\n}\n/**\n * Hook for receiving the current color mode class 'dark' or 'light'.\n *\n * @internal\n * @param colorMode - The color mode to use ('dark', 'light' or 'system')\n */\nfunction useColorModeClass(colorMode) {\n    const [colorModeClass, setColorModeClass] = useState(colorMode === 'system' ? null : colorMode);\n    useEffect(() => {\n        if (colorMode !== 'system') {\n            setColorModeClass(colorMode);\n            return;\n        }\n        const mediaQuery = getMediaQuery();\n        const updateColorModeClass = () => setColorModeClass(mediaQuery?.matches ? 'dark' : 'light');\n        updateColorModeClass();\n        mediaQuery?.addEventListener('change', updateColorModeClass);\n        return () => {\n            mediaQuery?.removeEventListener('change', updateColorModeClass);\n        };\n    }, [colorMode]);\n    return colorModeClass !== null ? colorModeClass : getMediaQuery()?.matches ? 'dark' : 'light';\n}\n\nconst defaultDoc = typeof document !== 'undefined' ? document : null;\n/**\n * This hook lets you listen for specific key codes and tells you whether they are\n * currently pressed or not.\n *\n * @public\n * @param options - Options\n *\n * @example\n * ```tsx\n *import { useKeyPress } from '@xyflow/react';\n *\n *export default function () {\n *  const spacePressed = useKeyPress('Space');\n *  const cmdAndSPressed = useKeyPress(['Meta+s', 'Strg+s']);\n *\n *  return (\n *    <div>\n *     {spacePressed && <p>Space pressed!</p>}\n *     {cmdAndSPressed && <p>Cmd + S pressed!</p>}\n *    </div>\n *  );\n *}\n *```\n */\nfunction useKeyPress(\n/**\n * The key code (string or array of strings) specifies which key(s) should trigger\n * an action.\n *\n * A **string** can represent:\n * - A **single key**, e.g. `'a'`\n * - A **key combination**, using `'+'` to separate keys, e.g. `'a+d'`\n *\n * An  **array of strings** represents **multiple possible key inputs**. For example, `['a', 'd+s']`\n * means the user can press either the single key `'a'` or the combination of `'d'` and `'s'`.\n * @default null\n */\nkeyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true }) {\n    const [keyPressed, setKeyPressed] = useState(false);\n    // we need to remember if a modifier key is pressed in order to track it\n    const modifierPressed = useRef(false);\n    // we need to remember the pressed keys in order to support combinations\n    const pressedKeys = useRef(new Set([]));\n    /*\n     * keyCodes = array with single keys [['a']] or key combinations [['a', 's']]\n     * keysToWatch = array with all keys flattened ['a', 'd', 'ShiftLeft']\n     * used to check if we store event.code or event.key. When the code is in the list of keysToWatch\n     * we use the code otherwise the key. Explainer: When you press the left \"command\" key, the code is \"MetaLeft\"\n     * and the key is \"Meta\". We want users to be able to pass keys and codes so we assume that the key is meant when\n     * we can't find it in the list of keysToWatch.\n     */\n    const [keyCodes, keysToWatch] = useMemo(() => {\n        if (keyCode !== null) {\n            const keyCodeArr = Array.isArray(keyCode) ? keyCode : [keyCode];\n            const keys = keyCodeArr\n                .filter((kc) => typeof kc === 'string')\n                /*\n                 * we first replace all '+' with '\\n'  which we will use to split the keys on\n                 * then we replace '\\n\\n' with '\\n+', this way we can also support the combination 'key++'\n                 * in the end we simply split on '\\n' to get the key array\n                 */\n                .map((kc) => kc.replace('+', '\\n').replace('\\n\\n', '\\n+').split('\\n'));\n            const keysFlat = keys.reduce((res, item) => res.concat(...item), []);\n            return [keys, keysFlat];\n        }\n        return [[], []];\n    }, [keyCode]);\n    useEffect(() => {\n        const target = options?.target ?? defaultDoc;\n        const actInsideInputWithModifier = options?.actInsideInputWithModifier ?? true;\n        if (keyCode !== null) {\n            const downHandler = (event) => {\n                modifierPressed.current = event.ctrlKey || event.metaKey || event.shiftKey || event.altKey;\n                const preventAction = (!modifierPressed.current || (modifierPressed.current && !actInsideInputWithModifier)) &&\n                    isInputDOMNode(event);\n                if (preventAction) {\n                    return false;\n                }\n                const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n                pressedKeys.current.add(event[keyOrCode]);\n                if (isMatchingKey(keyCodes, pressedKeys.current, false)) {\n                    const target = (event.composedPath?.()?.[0] || event.target);\n                    const isInteractiveElement = target?.nodeName === 'BUTTON' || target?.nodeName === 'A';\n                    if (options.preventDefault !== false && (modifierPressed.current || !isInteractiveElement)) {\n                        event.preventDefault();\n                    }\n                    setKeyPressed(true);\n                }\n            };\n            const upHandler = (event) => {\n                const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n                if (isMatchingKey(keyCodes, pressedKeys.current, true)) {\n                    setKeyPressed(false);\n                    pressedKeys.current.clear();\n                }\n                else {\n                    pressedKeys.current.delete(event[keyOrCode]);\n                }\n                // fix for Mac: when cmd key is pressed, keyup is not triggered for any other key, see: https://stackoverflow.com/questions/27380018/when-cmd-key-is-kept-pressed-keyup-is-not-triggered-for-any-other-key\n                if (event.key === 'Meta') {\n                    pressedKeys.current.clear();\n                }\n                modifierPressed.current = false;\n            };\n            const resetHandler = () => {\n                pressedKeys.current.clear();\n                setKeyPressed(false);\n            };\n            target?.addEventListener('keydown', downHandler);\n            target?.addEventListener('keyup', upHandler);\n            window.addEventListener('blur', resetHandler);\n            window.addEventListener('contextmenu', resetHandler);\n            return () => {\n                target?.removeEventListener('keydown', downHandler);\n                target?.removeEventListener('keyup', upHandler);\n                window.removeEventListener('blur', resetHandler);\n                window.removeEventListener('contextmenu', resetHandler);\n            };\n        }\n    }, [keyCode, setKeyPressed]);\n    return keyPressed;\n}\n// utils\nfunction isMatchingKey(keyCodes, pressedKeys, isUp) {\n    return (keyCodes\n        /*\n         * we only want to compare same sizes of keyCode definitions\n         * and pressed keys. When the user specified 'Meta' as a key somewhere\n         * this would also be truthy without this filter when user presses 'Meta' + 'r'\n         */\n        .filter((keys) => isUp || keys.length === pressedKeys.size)\n        /*\n         * since we want to support multiple possibilities only one of the\n         * combinations need to be part of the pressed keys\n         */\n        .some((keys) => keys.every((k) => pressedKeys.has(k))));\n}\nfunction useKeyOrCode(eventCode, keysToWatch) {\n    return keysToWatch.includes(eventCode) ? 'code' : 'key';\n}\n\n/**\n * Hook for getting viewport helper functions.\n *\n * @internal\n * @returns viewport helper functions\n */\nconst useViewportHelper = () => {\n    const store = useStoreApi();\n    return useMemo(() => {\n        return {\n            zoomIn: (options) => {\n                const { panZoom } = store.getState();\n                return panZoom ? panZoom.scaleBy(1.2, options) : Promise.resolve(false);\n            },\n            zoomOut: (options) => {\n                const { panZoom } = store.getState();\n                return panZoom ? panZoom.scaleBy(1 / 1.2, options) : Promise.resolve(false);\n            },\n            zoomTo: (zoomLevel, options) => {\n                const { panZoom } = store.getState();\n                return panZoom ? panZoom.scaleTo(zoomLevel, options) : Promise.resolve(false);\n            },\n            getZoom: () => store.getState().transform[2],\n            setViewport: async (viewport, options) => {\n                const { transform: [tX, tY, tZoom], panZoom, } = store.getState();\n                if (!panZoom) {\n                    return Promise.resolve(false);\n                }\n                await panZoom.setViewport({\n                    x: viewport.x ?? tX,\n                    y: viewport.y ?? tY,\n                    zoom: viewport.zoom ?? tZoom,\n                }, options);\n                return Promise.resolve(true);\n            },\n            getViewport: () => {\n                const [x, y, zoom] = store.getState().transform;\n                return { x, y, zoom };\n            },\n            setCenter: async (x, y, options) => {\n                return store.getState().setCenter(x, y, options);\n            },\n            fitBounds: async (bounds, options) => {\n                const { width, height, minZoom, maxZoom, panZoom } = store.getState();\n                const viewport = getViewportForBounds(bounds, width, height, minZoom, maxZoom, options?.padding ?? 0.1);\n                if (!panZoom) {\n                    return Promise.resolve(false);\n                }\n                await panZoom.setViewport(viewport, {\n                    duration: options?.duration,\n                    ease: options?.ease,\n                    interpolate: options?.interpolate,\n                });\n                return Promise.resolve(true);\n            },\n            screenToFlowPosition: (clientPosition, options = {}) => {\n                const { transform, snapGrid, snapToGrid, domNode } = store.getState();\n                if (!domNode) {\n                    return clientPosition;\n                }\n                const { x: domX, y: domY } = domNode.getBoundingClientRect();\n                const correctedPosition = {\n                    x: clientPosition.x - domX,\n                    y: clientPosition.y - domY,\n                };\n                const _snapGrid = options.snapGrid ?? snapGrid;\n                const _snapToGrid = options.snapToGrid ?? snapToGrid;\n                return pointToRendererPoint(correctedPosition, transform, _snapToGrid, _snapGrid);\n            },\n            flowToScreenPosition: (flowPosition) => {\n                const { transform, domNode } = store.getState();\n                if (!domNode) {\n                    return flowPosition;\n                }\n                const { x: domX, y: domY } = domNode.getBoundingClientRect();\n                const rendererPosition = rendererPointToPoint(flowPosition, transform);\n                return {\n                    x: rendererPosition.x + domX,\n                    y: rendererPosition.y + domY,\n                };\n            },\n        };\n    }, []);\n};\n\n/*\n * This function applies changes to nodes or edges that are triggered by React Flow internally.\n * When you drag a node for example, React Flow will send a position change update.\n * This function then applies the changes and returns the updated elements.\n */\nfunction applyChanges(changes, elements) {\n    const updatedElements = [];\n    /*\n     * By storing a map of changes for each element, we can a quick lookup as we\n     * iterate over the elements array!\n     */\n    const changesMap = new Map();\n    const addItemChanges = [];\n    for (const change of changes) {\n        if (change.type === 'add') {\n            addItemChanges.push(change);\n            continue;\n        }\n        else if (change.type === 'remove' || change.type === 'replace') {\n            /*\n             * For a 'remove' change we can safely ignore any other changes queued for\n             * the same element, it's going to be removed anyway!\n             */\n            changesMap.set(change.id, [change]);\n        }\n        else {\n            const elementChanges = changesMap.get(change.id);\n            if (elementChanges) {\n                /*\n                 * If we have some changes queued already, we can do a mutable update of\n                 * that array and save ourselves some copying.\n                 */\n                elementChanges.push(change);\n            }\n            else {\n                changesMap.set(change.id, [change]);\n            }\n        }\n    }\n    for (const element of elements) {\n        const changes = changesMap.get(element.id);\n        /*\n         * When there are no changes for an element we can just push it unmodified,\n         * no need to copy it.\n         */\n        if (!changes) {\n            updatedElements.push(element);\n            continue;\n        }\n        // If we have a 'remove' change queued, it'll be the only change in the array\n        if (changes[0].type === 'remove') {\n            continue;\n        }\n        if (changes[0].type === 'replace') {\n            updatedElements.push({ ...changes[0].item });\n            continue;\n        }\n        /**\n         * For other types of changes, we want to start with a shallow copy of the\n         * object so React knows this element has changed. Sequential changes will\n         * each _mutate_ this object, so there's only ever one copy.\n         */\n        const updatedElement = { ...element };\n        for (const change of changes) {\n            applyChange(change, updatedElement);\n        }\n        updatedElements.push(updatedElement);\n    }\n    /*\n     * we need to wait for all changes to be applied before adding new items\n     * to be able to add them at the correct index\n     */\n    if (addItemChanges.length) {\n        addItemChanges.forEach((change) => {\n            if (change.index !== undefined) {\n                updatedElements.splice(change.index, 0, { ...change.item });\n            }\n            else {\n                updatedElements.push({ ...change.item });\n            }\n        });\n    }\n    return updatedElements;\n}\n// Applies a single change to an element. This is a *mutable* update.\nfunction applyChange(change, element) {\n    switch (change.type) {\n        case 'select': {\n            element.selected = change.selected;\n            break;\n        }\n        case 'position': {\n            if (typeof change.position !== 'undefined') {\n                element.position = change.position;\n            }\n            if (typeof change.dragging !== 'undefined') {\n                element.dragging = change.dragging;\n            }\n            break;\n        }\n        case 'dimensions': {\n            if (typeof change.dimensions !== 'undefined') {\n                element.measured = {\n                    ...change.dimensions,\n                };\n                if (change.setAttributes) {\n                    if (change.setAttributes === true || change.setAttributes === 'width') {\n                        element.width = change.dimensions.width;\n                    }\n                    if (change.setAttributes === true || change.setAttributes === 'height') {\n                        element.height = change.dimensions.height;\n                    }\n                }\n            }\n            if (typeof change.resizing === 'boolean') {\n                element.resizing = change.resizing;\n            }\n            break;\n        }\n    }\n}\n/**\n * Drop in function that applies node changes to an array of nodes.\n * @public\n * @param changes - Array of changes to apply.\n * @param nodes - Array of nodes to apply the changes to.\n * @returns Array of updated nodes.\n * @example\n *```tsx\n *import { useState, useCallback } from 'react';\n *import { ReactFlow, applyNodeChanges, type Node, type Edge, type OnNodesChange } from '@xyflow/react';\n *\n *export default function Flow() {\n *  const [nodes, setNodes] = useState<Node[]>([]);\n *  const [edges, setEdges] = useState<Edge[]>([]);\n *  const onNodesChange: OnNodesChange = useCallback(\n *    (changes) => {\n *      setNodes((oldNodes) => applyNodeChanges(changes, oldNodes));\n *    },\n *    [setNodes],\n *  );\n *\n *  return (\n *    <ReactFlow nodes={nodes} edges={edges} onNodesChange={onNodesChange} />\n *  );\n *}\n *```\n * @remarks Various events on the <ReactFlow /> component can produce an {@link NodeChange}\n * that describes how to update the edges of your flow in some way.\n * If you don't need any custom behaviour, this util can be used to take an array\n * of these changes and apply them to your edges.\n */\nfunction applyNodeChanges(changes, nodes) {\n    return applyChanges(changes, nodes);\n}\n/**\n * Drop in function that applies edge changes to an array of edges.\n * @public\n * @param changes - Array of changes to apply.\n * @param edges - Array of edge to apply the changes to.\n * @returns Array of updated edges.\n * @example\n * ```tsx\n *import { useState, useCallback } from 'react';\n *import { ReactFlow, applyEdgeChanges } from '@xyflow/react';\n *\n *export default function Flow() {\n *  const [nodes, setNodes] = useState([]);\n *  const [edges, setEdges] = useState([]);\n *  const onEdgesChange = useCallback(\n *    (changes) => {\n *      setEdges((oldEdges) => applyEdgeChanges(changes, oldEdges));\n *    },\n *    [setEdges],\n *  );\n *\n *  return (\n *    <ReactFlow nodes={nodes} edges={edges} onEdgesChange={onEdgesChange} />\n *  );\n *}\n *```\n * @remarks Various events on the <ReactFlow /> component can produce an {@link EdgeChange}\n * that describes how to update the edges of your flow in some way.\n * If you don't need any custom behaviour, this util can be used to take an array\n * of these changes and apply them to your edges.\n */\nfunction applyEdgeChanges(changes, edges) {\n    return applyChanges(changes, edges);\n}\nfunction createSelectionChange(id, selected) {\n    return {\n        id,\n        type: 'select',\n        selected,\n    };\n}\nfunction getSelectionChanges(items, selectedIds = new Set(), mutateItem = false) {\n    const changes = [];\n    for (const [id, item] of items) {\n        const willBeSelected = selectedIds.has(id);\n        // we don't want to set all items to selected=false on the first selection\n        if (!(item.selected === undefined && !willBeSelected) && item.selected !== willBeSelected) {\n            if (mutateItem) {\n                /*\n                 * this hack is needed for nodes. When the user dragged a node, it's selected.\n                 * When another node gets dragged, we need to deselect the previous one,\n                 * in order to have only one selected node at a time - the onNodesChange callback comes too late here :/\n                 */\n                item.selected = willBeSelected;\n            }\n            changes.push(createSelectionChange(item.id, willBeSelected));\n        }\n    }\n    return changes;\n}\nfunction getElementsDiffChanges({ items = [], lookup, }) {\n    const changes = [];\n    const itemsLookup = new Map(items.map((item) => [item.id, item]));\n    for (const [index, item] of items.entries()) {\n        const lookupItem = lookup.get(item.id);\n        const storeItem = lookupItem?.internals?.userNode ?? lookupItem;\n        if (storeItem !== undefined && storeItem !== item) {\n            changes.push({ id: item.id, item: item, type: 'replace' });\n        }\n        if (storeItem === undefined) {\n            changes.push({ item: item, type: 'add', index });\n        }\n    }\n    for (const [id] of lookup) {\n        const nextNode = itemsLookup.get(id);\n        if (nextNode === undefined) {\n            changes.push({ id, type: 'remove' });\n        }\n    }\n    return changes;\n}\nfunction elementToRemoveChange(item) {\n    return {\n        id: item.id,\n        type: 'remove',\n    };\n}\n\n/**\n * Test whether an object is usable as an [`Node`](/api-reference/types/node).\n * In TypeScript this is a type guard that will narrow the type of whatever you pass in to\n * [`Node`](/api-reference/types/node) if it returns `true`.\n *\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true\n * @param element - The element to test.\n * @returns Tests whether the provided value can be used as a `Node`. If you're using TypeScript,\n * this function acts as a type guard and will narrow the type of the value to `Node` if it returns\n * `true`.\n *\n * @example\n * ```js\n *import { isNode } from '@xyflow/react';\n *\n *if (isNode(node)) {\n * // ...\n *}\n *```\n */\nconst isNode = (element) => isNodeBase(element);\n/**\n * Test whether an object is usable as an [`Edge`](/api-reference/types/edge).\n * In TypeScript this is a type guard that will narrow the type of whatever you pass in to\n * [`Edge`](/api-reference/types/edge) if it returns `true`.\n *\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true\n * @param element - The element to test\n * @returns Tests whether the provided value can be used as an `Edge`. If you're using TypeScript,\n * this function acts as a type guard and will narrow the type of the value to `Edge` if it returns\n * `true`.\n *\n * @example\n * ```js\n *import { isEdge } from '@xyflow/react';\n *\n *if (isEdge(edge)) {\n * // ...\n *}\n *```\n */\nconst isEdge = (element) => isEdgeBase(element);\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nfunction fixedForwardRef(render) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return forwardRef(render);\n}\n\n/**\n * This hook returns a queue that can be used to batch updates.\n *\n * @param runQueue - a function that gets called when the queue is flushed\n * @internal\n *\n * @returns a Queue object\n */\nfunction useQueue(runQueue) {\n    /*\n     * Because we're using a ref above, we need some way to let React know when to\n     * actually process the queue. We increment this number any time we mutate the\n     * queue, creating a new state to trigger the layout effect below.\n     * Using a boolean dirty flag here instead would lead to issues related to\n     * automatic batching. (https://github.com/xyflow/xyflow/issues/4779)\n     */\n    const [serial, setSerial] = useState(BigInt(0));\n    /*\n     * A reference of all the batched updates to process before the next render. We\n     * want a reference here so multiple synchronous calls to `setNodes` etc can be\n     * batched together.\n     */\n    const [queue] = useState(() => createQueue(() => setSerial(n => n + BigInt(1))));\n    /*\n     * Layout effects are guaranteed to run before the next render which means we\n     * shouldn't run into any issues with stale state or weird issues that come from\n     * rendering things one frame later than expected (we used to use `setTimeout`).\n     */\n    useIsomorphicLayoutEffect(() => {\n        const queueItems = queue.get();\n        if (queueItems.length) {\n            runQueue(queueItems);\n            queue.reset();\n        }\n    }, [serial]);\n    return queue;\n}\nfunction createQueue(cb) {\n    let queue = [];\n    return {\n        get: () => queue,\n        reset: () => {\n            queue = [];\n        },\n        push: (item) => {\n            queue.push(item);\n            cb();\n        },\n    };\n}\n\nconst BatchContext = createContext(null);\n/**\n * This is a context provider that holds and processes the node and edge update queues\n * that are needed to handle setNodes, addNodes, setEdges and addEdges.\n *\n * @internal\n */\nfunction BatchProvider({ children, }) {\n    const store = useStoreApi();\n    const nodeQueueHandler = useCallback((queueItems) => {\n        const { nodes = [], setNodes, hasDefaultNodes, onNodesChange, nodeLookup, fitViewQueued, onNodesChangeMiddlewareMap, } = store.getState();\n        /*\n         * This is essentially an `Array.reduce` in imperative clothing. Processing\n         * this queue is a relatively hot path so we'd like to avoid the overhead of\n         * array methods where we can.\n         */\n        let next = nodes;\n        for (const payload of queueItems) {\n            next = typeof payload === 'function' ? payload(next) : payload;\n        }\n        let changes = getElementsDiffChanges({\n            items: next,\n            lookup: nodeLookup,\n        });\n        for (const middleware of onNodesChangeMiddlewareMap.values()) {\n            changes = middleware(changes);\n        }\n        if (hasDefaultNodes) {\n            setNodes(next);\n        }\n        // We only want to fire onNodesChange if there are changes to the nodes\n        if (changes.length > 0) {\n            onNodesChange?.(changes);\n        }\n        else if (fitViewQueued) {\n            // If there are no changes to the nodes, we still need to call setNodes\n            // to trigger a re-render and fitView.\n            window.requestAnimationFrame(() => {\n                const { fitViewQueued, nodes, setNodes } = store.getState();\n                if (fitViewQueued) {\n                    setNodes(nodes);\n                }\n            });\n        }\n    }, []);\n    const nodeQueue = useQueue(nodeQueueHandler);\n    const edgeQueueHandler = useCallback((queueItems) => {\n        const { edges = [], setEdges, hasDefaultEdges, onEdgesChange, edgeLookup } = store.getState();\n        let next = edges;\n        for (const payload of queueItems) {\n            next = typeof payload === 'function' ? payload(next) : payload;\n        }\n        if (hasDefaultEdges) {\n            setEdges(next);\n        }\n        else if (onEdgesChange) {\n            onEdgesChange(getElementsDiffChanges({\n                items: next,\n                lookup: edgeLookup,\n            }));\n        }\n    }, []);\n    const edgeQueue = useQueue(edgeQueueHandler);\n    const value = useMemo(() => ({ nodeQueue, edgeQueue }), []);\n    return jsx(BatchContext.Provider, { value: value, children: children });\n}\nfunction useBatchContext() {\n    const batchContext = useContext(BatchContext);\n    if (!batchContext) {\n        throw new Error('useBatchContext must be used within a BatchProvider');\n    }\n    return batchContext;\n}\n\nconst selector$k = (s) => !!s.panZoom;\n/**\n * This hook returns a ReactFlowInstance that can be used to update nodes and edges, manipulate the viewport, or query the current state of the flow.\n *\n * @public\n * @example\n * ```jsx\n *import { useCallback, useState } from 'react';\n *import { useReactFlow } from '@xyflow/react';\n *\n *export function NodeCounter() {\n *  const reactFlow = useReactFlow();\n *  const [count, setCount] = useState(0);\n *  const countNodes = useCallback(() => {\n *    setCount(reactFlow.getNodes().length);\n *    // you need to pass it as a dependency if you are using it with useEffect or useCallback\n *    // because at the first render, it's not initialized yet and some functions might not work.\n *  }, [reactFlow]);\n *\n *  return (\n *    <div>\n *      <button onClick={countNodes}>Update count</button>\n *      <p>There are {count} nodes in the flow.</p>\n *    </div>\n *  );\n *}\n *```\n */\nfunction useReactFlow() {\n    const viewportHelper = useViewportHelper();\n    const store = useStoreApi();\n    const batchContext = useBatchContext();\n    const viewportInitialized = useStore(selector$k);\n    const generalHelper = useMemo(() => {\n        const getInternalNode = (id) => store.getState().nodeLookup.get(id);\n        const setNodes = (payload) => {\n            batchContext.nodeQueue.push(payload);\n        };\n        const setEdges = (payload) => {\n            batchContext.edgeQueue.push(payload);\n        };\n        const getNodeRect = (node) => {\n            const { nodeLookup, nodeOrigin } = store.getState();\n            const nodeToUse = isNode(node) ? node : nodeLookup.get(node.id);\n            const position = nodeToUse.parentId\n                ? evaluateAbsolutePosition(nodeToUse.position, nodeToUse.measured, nodeToUse.parentId, nodeLookup, nodeOrigin)\n                : nodeToUse.position;\n            const nodeWithPosition = {\n                ...nodeToUse,\n                position,\n                width: nodeToUse.measured?.width ?? nodeToUse.width,\n                height: nodeToUse.measured?.height ?? nodeToUse.height,\n            };\n            return nodeToRect(nodeWithPosition);\n        };\n        const updateNode = (id, nodeUpdate, options = { replace: false }) => {\n            setNodes((prevNodes) => prevNodes.map((node) => {\n                if (node.id === id) {\n                    const nextNode = typeof nodeUpdate === 'function' ? nodeUpdate(node) : nodeUpdate;\n                    return options.replace && isNode(nextNode) ? nextNode : { ...node, ...nextNode };\n                }\n                return node;\n            }));\n        };\n        const updateEdge = (id, edgeUpdate, options = { replace: false }) => {\n            setEdges((prevEdges) => prevEdges.map((edge) => {\n                if (edge.id === id) {\n                    const nextEdge = typeof edgeUpdate === 'function' ? edgeUpdate(edge) : edgeUpdate;\n                    return options.replace && isEdge(nextEdge) ? nextEdge : { ...edge, ...nextEdge };\n                }\n                return edge;\n            }));\n        };\n        return {\n            getNodes: () => store.getState().nodes.map((n) => ({ ...n })),\n            getNode: (id) => getInternalNode(id)?.internals.userNode,\n            getInternalNode,\n            getEdges: () => {\n                const { edges = [] } = store.getState();\n                return edges.map((e) => ({ ...e }));\n            },\n            getEdge: (id) => store.getState().edgeLookup.get(id),\n            setNodes,\n            setEdges,\n            addNodes: (payload) => {\n                const newNodes = Array.isArray(payload) ? payload : [payload];\n                batchContext.nodeQueue.push((nodes) => [...nodes, ...newNodes]);\n            },\n            addEdges: (payload) => {\n                const newEdges = Array.isArray(payload) ? payload : [payload];\n                batchContext.edgeQueue.push((edges) => [...edges, ...newEdges]);\n            },\n            toObject: () => {\n                const { nodes = [], edges = [], transform } = store.getState();\n                const [x, y, zoom] = transform;\n                return {\n                    nodes: nodes.map((n) => ({ ...n })),\n                    edges: edges.map((e) => ({ ...e })),\n                    viewport: {\n                        x,\n                        y,\n                        zoom,\n                    },\n                };\n            },\n            deleteElements: async ({ nodes: nodesToRemove = [], edges: edgesToRemove = [] }) => {\n                const { nodes, edges, onNodesDelete, onEdgesDelete, triggerNodeChanges, triggerEdgeChanges, onDelete, onBeforeDelete, } = store.getState();\n                const { nodes: matchingNodes, edges: matchingEdges } = await getElementsToRemove({\n                    nodesToRemove,\n                    edgesToRemove,\n                    nodes,\n                    edges,\n                    onBeforeDelete,\n                });\n                const hasMatchingEdges = matchingEdges.length > 0;\n                const hasMatchingNodes = matchingNodes.length > 0;\n                if (hasMatchingEdges) {\n                    const edgeChanges = matchingEdges.map(elementToRemoveChange);\n                    onEdgesDelete?.(matchingEdges);\n                    triggerEdgeChanges(edgeChanges);\n                }\n                if (hasMatchingNodes) {\n                    const nodeChanges = matchingNodes.map(elementToRemoveChange);\n                    onNodesDelete?.(matchingNodes);\n                    triggerNodeChanges(nodeChanges);\n                }\n                if (hasMatchingNodes || hasMatchingEdges) {\n                    onDelete?.({ nodes: matchingNodes, edges: matchingEdges });\n                }\n                return { deletedNodes: matchingNodes, deletedEdges: matchingEdges };\n            },\n            /**\n             * Partial is defined as \"the 2 nodes/areas are intersecting partially\".\n             * If a is contained in b or b is contained in a, they are both\n             * considered fully intersecting.\n             */\n            getIntersectingNodes: (nodeOrRect, partially = true, nodes) => {\n                const isRect = isRectObject(nodeOrRect);\n                const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n                const hasNodesOption = nodes !== undefined;\n                if (!nodeRect) {\n                    return [];\n                }\n                return (nodes || store.getState().nodes).filter((n) => {\n                    const internalNode = store.getState().nodeLookup.get(n.id);\n                    if (internalNode && !isRect && (n.id === nodeOrRect.id || !internalNode.internals.positionAbsolute)) {\n                        return false;\n                    }\n                    const currNodeRect = nodeToRect(hasNodesOption ? n : internalNode);\n                    const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n                    const partiallyVisible = partially && overlappingArea > 0;\n                    return (partiallyVisible ||\n                        overlappingArea >= currNodeRect.width * currNodeRect.height ||\n                        overlappingArea >= nodeRect.width * nodeRect.height);\n                });\n            },\n            isNodeIntersecting: (nodeOrRect, area, partially = true) => {\n                const isRect = isRectObject(nodeOrRect);\n                const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n                if (!nodeRect) {\n                    return false;\n                }\n                const overlappingArea = getOverlappingArea(nodeRect, area);\n                const partiallyVisible = partially && overlappingArea > 0;\n                return (partiallyVisible ||\n                    overlappingArea >= area.width * area.height ||\n                    overlappingArea >= nodeRect.width * nodeRect.height);\n            },\n            updateNode,\n            updateNodeData: (id, dataUpdate, options = { replace: false }) => {\n                updateNode(id, (node) => {\n                    const nextData = typeof dataUpdate === 'function' ? dataUpdate(node) : dataUpdate;\n                    return options.replace ? { ...node, data: nextData } : { ...node, data: { ...node.data, ...nextData } };\n                }, options);\n            },\n            updateEdge,\n            updateEdgeData: (id, dataUpdate, options = { replace: false }) => {\n                updateEdge(id, (edge) => {\n                    const nextData = typeof dataUpdate === 'function' ? dataUpdate(edge) : dataUpdate;\n                    return options.replace ? { ...edge, data: nextData } : { ...edge, data: { ...edge.data, ...nextData } };\n                }, options);\n            },\n            getNodesBounds: (nodes) => {\n                const { nodeLookup, nodeOrigin } = store.getState();\n                return getNodesBounds(nodes, { nodeLookup, nodeOrigin });\n            },\n            getHandleConnections: ({ type, id, nodeId }) => Array.from(store\n                .getState()\n                .connectionLookup.get(`${nodeId}-${type}${id ? `-${id}` : ''}`)\n                ?.values() ?? []),\n            getNodeConnections: ({ type, handleId, nodeId }) => Array.from(store\n                .getState()\n                .connectionLookup.get(`${nodeId}${type ? (handleId ? `-${type}-${handleId}` : `-${type}`) : ''}`)\n                ?.values() ?? []),\n            fitView: async (options) => {\n                // We either create a new Promise or reuse the existing one\n                // Even if fitView is called multiple times in a row, we only end up with a single Promise\n                const fitViewResolver = store.getState().fitViewResolver ?? withResolvers();\n                // We schedule a fitView by setting fitViewQueued and triggering a setNodes\n                store.setState({ fitViewQueued: true, fitViewOptions: options, fitViewResolver });\n                batchContext.nodeQueue.push((nodes) => [...nodes]);\n                return fitViewResolver.promise;\n            },\n        };\n    }, []);\n    return useMemo(() => {\n        return {\n            ...generalHelper,\n            ...viewportHelper,\n            viewportInitialized,\n        };\n    }, [viewportInitialized]);\n}\n\nconst selected = (item) => item.selected;\nconst win$1 = typeof window !== 'undefined' ? window : undefined;\n/**\n * Hook for handling global key events.\n *\n * @internal\n */\nfunction useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode, }) {\n    const store = useStoreApi();\n    const { deleteElements } = useReactFlow();\n    const deleteKeyPressed = useKeyPress(deleteKeyCode, { actInsideInputWithModifier: false });\n    const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode, { target: win$1 });\n    useEffect(() => {\n        if (deleteKeyPressed) {\n            const { edges, nodes } = store.getState();\n            deleteElements({ nodes: nodes.filter(selected), edges: edges.filter(selected) });\n            store.setState({ nodesSelectionActive: false });\n        }\n    }, [deleteKeyPressed]);\n    useEffect(() => {\n        store.setState({ multiSelectionActive: multiSelectionKeyPressed });\n    }, [multiSelectionKeyPressed]);\n}\n\n/**\n * Hook for handling resize events.\n *\n * @internal\n */\nfunction useResizeHandler(domNode) {\n    const store = useStoreApi();\n    useEffect(() => {\n        const updateDimensions = () => {\n            if (!domNode.current || !(domNode.current.checkVisibility?.() ?? true)) {\n                return false;\n            }\n            const size = getDimensions(domNode.current);\n            if (size.height === 0 || size.width === 0) {\n                store.getState().onError?.('004', errorMessages['error004']());\n            }\n            store.setState({ width: size.width || 500, height: size.height || 500 });\n        };\n        if (domNode.current) {\n            updateDimensions();\n            window.addEventListener('resize', updateDimensions);\n            const resizeObserver = new ResizeObserver(() => updateDimensions());\n            resizeObserver.observe(domNode.current);\n            return () => {\n                window.removeEventListener('resize', updateDimensions);\n                if (resizeObserver && domNode.current) {\n                    resizeObserver.unobserve(domNode.current);\n                }\n            };\n        }\n    }, []);\n}\n\nconst containerStyle = {\n    position: 'absolute',\n    width: '100%',\n    height: '100%',\n    top: 0,\n    left: 0,\n};\n\nconst selector$j = (s) => ({\n    userSelectionActive: s.userSelectionActive,\n    lib: s.lib,\n    connectionInProgress: s.connection.inProgress,\n});\nfunction ZoomPane({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = true, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance, selectionOnDrag, }) {\n    const store = useStoreApi();\n    const zoomPane = useRef(null);\n    const { userSelectionActive, lib, connectionInProgress } = useStore(selector$j, shallow);\n    const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);\n    const panZoom = useRef();\n    useResizeHandler(zoomPane);\n    const onTransformChange = useCallback((transform) => {\n        onViewportChange?.({ x: transform[0], y: transform[1], zoom: transform[2] });\n        if (!isControlledViewport) {\n            store.setState({ transform });\n        }\n    }, [onViewportChange, isControlledViewport]);\n    useEffect(() => {\n        if (zoomPane.current) {\n            panZoom.current = XYPanZoom({\n                domNode: zoomPane.current,\n                minZoom,\n                maxZoom,\n                translateExtent,\n                viewport: defaultViewport,\n                onDraggingChange: (paneDragging) => store.setState((prevState) => prevState.paneDragging === paneDragging ? prevState : { paneDragging }),\n                onPanZoomStart: (event, vp) => {\n                    const { onViewportChangeStart, onMoveStart } = store.getState();\n                    onMoveStart?.(event, vp);\n                    onViewportChangeStart?.(vp);\n                },\n                onPanZoom: (event, vp) => {\n                    const { onViewportChange, onMove } = store.getState();\n                    onMove?.(event, vp);\n                    onViewportChange?.(vp);\n                },\n                onPanZoomEnd: (event, vp) => {\n                    const { onViewportChangeEnd, onMoveEnd } = store.getState();\n                    onMoveEnd?.(event, vp);\n                    onViewportChangeEnd?.(vp);\n                },\n            });\n            const { x, y, zoom } = panZoom.current.getViewport();\n            store.setState({\n                panZoom: panZoom.current,\n                transform: [x, y, zoom],\n                domNode: zoomPane.current.closest('.react-flow'),\n            });\n            return () => {\n                panZoom.current?.destroy();\n            };\n        }\n    }, []);\n    useEffect(() => {\n        panZoom.current?.update({\n            onPaneContextMenu,\n            zoomOnScroll,\n            zoomOnPinch,\n            panOnScroll,\n            panOnScrollSpeed,\n            panOnScrollMode,\n            zoomOnDoubleClick,\n            panOnDrag,\n            zoomActivationKeyPressed,\n            preventScrolling,\n            noPanClassName,\n            userSelectionActive,\n            noWheelClassName,\n            lib,\n            onTransformChange,\n            connectionInProgress,\n            selectionOnDrag,\n            paneClickDistance,\n        });\n    }, [\n        onPaneContextMenu,\n        zoomOnScroll,\n        zoomOnPinch,\n        panOnScroll,\n        panOnScrollSpeed,\n        panOnScrollMode,\n        zoomOnDoubleClick,\n        panOnDrag,\n        zoomActivationKeyPressed,\n        preventScrolling,\n        noPanClassName,\n        userSelectionActive,\n        noWheelClassName,\n        lib,\n        onTransformChange,\n        connectionInProgress,\n        selectionOnDrag,\n        paneClickDistance,\n    ]);\n    return (jsx(\"div\", { className: \"react-flow__renderer\", ref: zoomPane, style: containerStyle, children: children }));\n}\n\nconst selector$i = (s) => ({\n    userSelectionActive: s.userSelectionActive,\n    userSelectionRect: s.userSelectionRect,\n});\nfunction UserSelection() {\n    const { userSelectionActive, userSelectionRect } = useStore(selector$i, shallow);\n    const isActive = userSelectionActive && userSelectionRect;\n    if (!isActive) {\n        return null;\n    }\n    return (jsx(\"div\", { className: \"react-flow__selection react-flow__container\", style: {\n            width: userSelectionRect.width,\n            height: userSelectionRect.height,\n            transform: `translate(${userSelectionRect.x}px, ${userSelectionRect.y}px)`,\n        } }));\n}\n\nconst wrapHandler = (handler, containerRef) => {\n    return (event) => {\n        if (event.target !== containerRef.current) {\n            return;\n        }\n        handler?.(event);\n    };\n};\nconst selector$h = (s) => ({\n    userSelectionActive: s.userSelectionActive,\n    elementsSelectable: s.elementsSelectable,\n    connectionInProgress: s.connection.inProgress,\n    dragging: s.paneDragging,\n});\nfunction Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.Full, panOnDrag, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }) {\n    const store = useStoreApi();\n    const { userSelectionActive, elementsSelectable, dragging, connectionInProgress } = useStore(selector$h, shallow);\n    const isSelectionEnabled = elementsSelectable && (isSelecting || userSelectionActive);\n    const container = useRef(null);\n    const containerBounds = useRef();\n    const selectedNodeIds = useRef(new Set());\n    const selectedEdgeIds = useRef(new Set());\n    // Used to prevent click events when the user lets go of the selectionKey during a selection\n    const selectionInProgress = useRef(false);\n    const onClick = (event) => {\n        // We prevent click events when the user let go of the selectionKey during a selection\n        // We also prevent click events when a connection is in progress\n        if (selectionInProgress.current || connectionInProgress) {\n            selectionInProgress.current = false;\n            return;\n        }\n        onPaneClick?.(event);\n        store.getState().resetSelectedElements();\n        store.setState({ nodesSelectionActive: false });\n    };\n    const onContextMenu = (event) => {\n        if (Array.isArray(panOnDrag) && panOnDrag?.includes(2)) {\n            event.preventDefault();\n            return;\n        }\n        onPaneContextMenu?.(event);\n    };\n    const onWheel = onPaneScroll ? (event) => onPaneScroll(event) : undefined;\n    const onClickCapture = (event) => {\n        if (selectionInProgress.current) {\n            event.stopPropagation();\n            selectionInProgress.current = false;\n        }\n    };\n    // We are using capture here in order to prevent other pointer events\n    // to be able to create a selection above a node or an edge\n    const onPointerDownCapture = (event) => {\n        const { domNode } = store.getState();\n        containerBounds.current = domNode?.getBoundingClientRect();\n        if (!containerBounds.current)\n            return;\n        const eventTargetIsContainer = event.target === container.current;\n        // if a child element has the 'nokey' class, we don't want to swallow the event and don't start a selection\n        const isNoKeyEvent = !eventTargetIsContainer && !!event.target.closest('.nokey');\n        const isSelectionActive = (selectionOnDrag && eventTargetIsContainer) || selectionKeyPressed;\n        if (isNoKeyEvent || !isSelecting || !isSelectionActive || event.button !== 0 || !event.isPrimary) {\n            return;\n        }\n        event.target?.setPointerCapture?.(event.pointerId);\n        selectionInProgress.current = false;\n        const { x, y } = getEventPosition(event.nativeEvent, containerBounds.current);\n        store.setState({\n            userSelectionRect: {\n                width: 0,\n                height: 0,\n                startX: x,\n                startY: y,\n                x,\n                y,\n            },\n        });\n        if (!eventTargetIsContainer) {\n            event.stopPropagation();\n            event.preventDefault();\n        }\n    };\n    const onPointerMove = (event) => {\n        const { userSelectionRect, transform, nodeLookup, edgeLookup, connectionLookup, triggerNodeChanges, triggerEdgeChanges, defaultEdgeOptions, resetSelectedElements, } = store.getState();\n        if (!containerBounds.current || !userSelectionRect) {\n            return;\n        }\n        const { x: mouseX, y: mouseY } = getEventPosition(event.nativeEvent, containerBounds.current);\n        const { startX, startY } = userSelectionRect;\n        if (!selectionInProgress.current) {\n            const requiredDistance = selectionKeyPressed ? 0 : paneClickDistance;\n            const distance = Math.hypot(mouseX - startX, mouseY - startY);\n            if (distance <= requiredDistance) {\n                return;\n            }\n            resetSelectedElements();\n            onSelectionStart?.(event);\n        }\n        selectionInProgress.current = true;\n        const nextUserSelectRect = {\n            startX,\n            startY,\n            x: mouseX < startX ? mouseX : startX,\n            y: mouseY < startY ? mouseY : startY,\n            width: Math.abs(mouseX - startX),\n            height: Math.abs(mouseY - startY),\n        };\n        const prevSelectedNodeIds = selectedNodeIds.current;\n        const prevSelectedEdgeIds = selectedEdgeIds.current;\n        selectedNodeIds.current = new Set(getNodesInside(nodeLookup, nextUserSelectRect, transform, selectionMode === SelectionMode.Partial, true).map((node) => node.id));\n        selectedEdgeIds.current = new Set();\n        const edgesSelectable = defaultEdgeOptions?.selectable ?? true;\n        // We look for all edges connected to the selected nodes\n        for (const nodeId of selectedNodeIds.current) {\n            const connections = connectionLookup.get(nodeId);\n            if (!connections)\n                continue;\n            for (const { edgeId } of connections.values()) {\n                const edge = edgeLookup.get(edgeId);\n                if (edge && (edge.selectable ?? edgesSelectable)) {\n                    selectedEdgeIds.current.add(edgeId);\n                }\n            }\n        }\n        if (!areSetsEqual(prevSelectedNodeIds, selectedNodeIds.current)) {\n            const changes = getSelectionChanges(nodeLookup, selectedNodeIds.current, true);\n            triggerNodeChanges(changes);\n        }\n        if (!areSetsEqual(prevSelectedEdgeIds, selectedEdgeIds.current)) {\n            const changes = getSelectionChanges(edgeLookup, selectedEdgeIds.current);\n            triggerEdgeChanges(changes);\n        }\n        store.setState({\n            userSelectionRect: nextUserSelectRect,\n            userSelectionActive: true,\n            nodesSelectionActive: false,\n        });\n    };\n    const onPointerUp = (event) => {\n        if (event.button !== 0) {\n            return;\n        }\n        event.target?.releasePointerCapture?.(event.pointerId);\n        /*\n         * We only want to trigger click functions when in selection mode if\n         * the user did not move the mouse.\n         */\n        if (!userSelectionActive && event.target === container.current && store.getState().userSelectionRect) {\n            onClick?.(event);\n        }\n        store.setState({\n            userSelectionActive: false,\n            userSelectionRect: null,\n        });\n        if (selectionInProgress.current) {\n            onSelectionEnd?.(event);\n            store.setState({\n                nodesSelectionActive: selectedNodeIds.current.size > 0,\n            });\n        }\n    };\n    const draggable = panOnDrag === true || (Array.isArray(panOnDrag) && panOnDrag.includes(0));\n    return (jsxs(\"div\", { className: cc(['react-flow__pane', { draggable, dragging, selection: isSelecting }]), onClick: isSelectionEnabled ? undefined : wrapHandler(onClick, container), onContextMenu: wrapHandler(onContextMenu, container), onWheel: wrapHandler(onWheel, container), onPointerEnter: isSelectionEnabled ? undefined : onPaneMouseEnter, onPointerMove: isSelectionEnabled ? onPointerMove : onPaneMouseMove, onPointerUp: isSelectionEnabled ? onPointerUp : undefined, onPointerDownCapture: isSelectionEnabled ? onPointerDownCapture : undefined, onClickCapture: isSelectionEnabled ? onClickCapture : undefined, onPointerLeave: onPaneMouseLeave, ref: container, style: containerStyle, children: [children, jsx(UserSelection, {})] }));\n}\n\n/*\n * this handler is called by\n * 1. the click handler when node is not draggable or selectNodesOnDrag = false\n * or\n * 2. the on drag start handler when node is draggable and selectNodesOnDrag = true\n */\nfunction handleNodeClick({ id, store, unselect = false, nodeRef, }) {\n    const { addSelectedNodes, unselectNodesAndEdges, multiSelectionActive, nodeLookup, onError } = store.getState();\n    const node = nodeLookup.get(id);\n    if (!node) {\n        onError?.('012', errorMessages['error012'](id));\n        return;\n    }\n    store.setState({ nodesSelectionActive: false });\n    if (!node.selected) {\n        addSelectedNodes([id]);\n    }\n    else if (unselect || (node.selected && multiSelectionActive)) {\n        unselectNodesAndEdges({ nodes: [node], edges: [] });\n        requestAnimationFrame(() => nodeRef?.current?.blur());\n    }\n}\n\n/**\n * Hook for calling XYDrag helper from @xyflow/system.\n *\n * @internal\n */\nfunction useDrag({ nodeRef, disabled = false, noDragClassName, handleSelector, nodeId, isSelectable, nodeClickDistance, }) {\n    const store = useStoreApi();\n    const [dragging, setDragging] = useState(false);\n    const xyDrag = useRef();\n    useEffect(() => {\n        xyDrag.current = XYDrag({\n            getStoreItems: () => store.getState(),\n            onNodeMouseDown: (id) => {\n                handleNodeClick({\n                    id,\n                    store,\n                    nodeRef,\n                });\n            },\n            onDragStart: () => {\n                setDragging(true);\n            },\n            onDragStop: () => {\n                setDragging(false);\n            },\n        });\n    }, []);\n    useEffect(() => {\n        if (disabled || !nodeRef.current || !xyDrag.current) {\n            return;\n        }\n        xyDrag.current.update({\n            noDragClassName,\n            handleSelector,\n            domNode: nodeRef.current,\n            isSelectable,\n            nodeId,\n            nodeClickDistance,\n        });\n        return () => {\n            xyDrag.current?.destroy();\n        };\n    }, [noDragClassName, handleSelector, disabled, isSelectable, nodeRef, nodeId, nodeClickDistance]);\n    return dragging;\n}\n\nconst selectedAndDraggable = (nodesDraggable) => (n) => n.selected && (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined'));\n/**\n * Hook for updating node positions by passing a direction and factor\n *\n * @internal\n * @returns function for updating node positions\n */\nfunction useMoveSelectedNodes() {\n    const store = useStoreApi();\n    const moveSelectedNodes = useCallback((params) => {\n        const { nodeExtent, snapToGrid, snapGrid, nodesDraggable, onError, updateNodePositions, nodeLookup, nodeOrigin } = store.getState();\n        const nodeUpdates = new Map();\n        const isSelected = selectedAndDraggable(nodesDraggable);\n        /*\n         * by default a node moves 5px on each key press\n         * if snap grid is enabled, we use that for the velocity\n         */\n        const xVelo = snapToGrid ? snapGrid[0] : 5;\n        const yVelo = snapToGrid ? snapGrid[1] : 5;\n        const xDiff = params.direction.x * xVelo * params.factor;\n        const yDiff = params.direction.y * yVelo * params.factor;\n        for (const [, node] of nodeLookup) {\n            if (!isSelected(node)) {\n                continue;\n            }\n            let nextPosition = {\n                x: node.internals.positionAbsolute.x + xDiff,\n                y: node.internals.positionAbsolute.y + yDiff,\n            };\n            if (snapToGrid) {\n                nextPosition = snapPosition(nextPosition, snapGrid);\n            }\n            const { position, positionAbsolute } = calculateNodePosition({\n                nodeId: node.id,\n                nextPosition,\n                nodeLookup,\n                nodeExtent,\n                nodeOrigin,\n                onError,\n            });\n            node.position = position;\n            node.internals.positionAbsolute = positionAbsolute;\n            nodeUpdates.set(node.id, node);\n        }\n        updateNodePositions(nodeUpdates);\n    }, []);\n    return moveSelectedNodes;\n}\n\nconst NodeIdContext = createContext(null);\nconst Provider = NodeIdContext.Provider;\nNodeIdContext.Consumer;\n/**\n * You can use this hook to get the id of the node it is used inside. It is useful\n * if you need the node's id deeper in the render tree but don't want to manually\n * drill down the id as a prop.\n *\n * @public\n * @returns The id for a node in the flow.\n *\n * @example\n *```jsx\n *import { useNodeId } from '@xyflow/react';\n *\n *export default function CustomNode() {\n *  return (\n *    <div>\n *      <span>This node has an id of </span>\n *      <NodeIdDisplay />\n *    </div>\n *  );\n *}\n *\n *function NodeIdDisplay() {\n *  const nodeId = useNodeId();\n *\n *  return <span>{nodeId}</span>;\n *}\n *```\n */\nconst useNodeId = () => {\n    const nodeId = useContext(NodeIdContext);\n    return nodeId;\n};\n\nconst selector$g = (s) => ({\n    connectOnClick: s.connectOnClick,\n    noPanClassName: s.noPanClassName,\n    rfId: s.rfId,\n});\nconst connectingSelector = (nodeId, handleId, type) => (state) => {\n    const { connectionClickStartHandle: clickHandle, connectionMode, connection } = state;\n    const { fromHandle, toHandle, isValid } = connection;\n    const connectingTo = toHandle?.nodeId === nodeId && toHandle?.id === handleId && toHandle?.type === type;\n    return {\n        connectingFrom: fromHandle?.nodeId === nodeId && fromHandle?.id === handleId && fromHandle?.type === type,\n        connectingTo,\n        clickConnecting: clickHandle?.nodeId === nodeId && clickHandle?.id === handleId && clickHandle?.type === type,\n        isPossibleEndHandle: connectionMode === ConnectionMode.Strict\n            ? fromHandle?.type !== type\n            : nodeId !== fromHandle?.nodeId || handleId !== fromHandle?.id,\n        connectionInProcess: !!fromHandle,\n        clickConnectionInProcess: !!clickHandle,\n        valid: connectingTo && isValid,\n    };\n};\nfunction HandleComponent({ type = 'source', position = Position.Top, isValidConnection, isConnectable = true, isConnectableStart = true, isConnectableEnd = true, id, onConnect, children, className, onMouseDown, onTouchStart, ...rest }, ref) {\n    const handleId = id || null;\n    const isTarget = type === 'target';\n    const store = useStoreApi();\n    const nodeId = useNodeId();\n    const { connectOnClick, noPanClassName, rfId } = useStore(selector$g, shallow);\n    const { connectingFrom, connectingTo, clickConnecting, isPossibleEndHandle, connectionInProcess, clickConnectionInProcess, valid, } = useStore(connectingSelector(nodeId, handleId, type), shallow);\n    if (!nodeId) {\n        store.getState().onError?.('010', errorMessages['error010']());\n    }\n    const onConnectExtended = (params) => {\n        const { defaultEdgeOptions, onConnect: onConnectAction, hasDefaultEdges } = store.getState();\n        const edgeParams = {\n            ...defaultEdgeOptions,\n            ...params,\n        };\n        if (hasDefaultEdges) {\n            const { edges, setEdges } = store.getState();\n            setEdges(addEdge(edgeParams, edges));\n        }\n        onConnectAction?.(edgeParams);\n        onConnect?.(edgeParams);\n    };\n    const onPointerDown = (event) => {\n        if (!nodeId) {\n            return;\n        }\n        const isMouseTriggered = isMouseEvent(event.nativeEvent);\n        if (isConnectableStart &&\n            ((isMouseTriggered && event.button === 0) || !isMouseTriggered)) {\n            const currentStore = store.getState();\n            XYHandle.onPointerDown(event.nativeEvent, {\n                handleDomNode: event.currentTarget,\n                autoPanOnConnect: currentStore.autoPanOnConnect,\n                connectionMode: currentStore.connectionMode,\n                connectionRadius: currentStore.connectionRadius,\n                domNode: currentStore.domNode,\n                nodeLookup: currentStore.nodeLookup,\n                lib: currentStore.lib,\n                isTarget,\n                handleId,\n                nodeId,\n                flowId: currentStore.rfId,\n                panBy: currentStore.panBy,\n                cancelConnection: currentStore.cancelConnection,\n                onConnectStart: currentStore.onConnectStart,\n                onConnectEnd: (...args) => store.getState().onConnectEnd?.(...args),\n                updateConnection: currentStore.updateConnection,\n                onConnect: onConnectExtended,\n                isValidConnection: isValidConnection || ((...args) => store.getState().isValidConnection?.(...args) ?? true),\n                getTransform: () => store.getState().transform,\n                getFromHandle: () => store.getState().connection.fromHandle,\n                autoPanSpeed: currentStore.autoPanSpeed,\n                dragThreshold: currentStore.connectionDragThreshold,\n            });\n        }\n        if (isMouseTriggered) {\n            onMouseDown?.(event);\n        }\n        else {\n            onTouchStart?.(event);\n        }\n    };\n    const onClick = (event) => {\n        const { onClickConnectStart, onClickConnectEnd, connectionClickStartHandle, connectionMode, isValidConnection: isValidConnectionStore, lib, rfId: flowId, nodeLookup, connection: connectionState, } = store.getState();\n        if (!nodeId || (!connectionClickStartHandle && !isConnectableStart)) {\n            return;\n        }\n        if (!connectionClickStartHandle) {\n            onClickConnectStart?.(event.nativeEvent, { nodeId, handleId, handleType: type });\n            store.setState({ connectionClickStartHandle: { nodeId, type, id: handleId } });\n            return;\n        }\n        const doc = getHostForElement(event.target);\n        const isValidConnectionHandler = isValidConnection || isValidConnectionStore;\n        const { connection, isValid } = XYHandle.isValid(event.nativeEvent, {\n            handle: {\n                nodeId,\n                id: handleId,\n                type,\n            },\n            connectionMode,\n            fromNodeId: connectionClickStartHandle.nodeId,\n            fromHandleId: connectionClickStartHandle.id || null,\n            fromType: connectionClickStartHandle.type,\n            isValidConnection: isValidConnectionHandler,\n            flowId,\n            doc,\n            lib,\n            nodeLookup,\n        });\n        if (isValid && connection) {\n            onConnectExtended(connection);\n        }\n        const connectionClone = structuredClone(connectionState);\n        delete connectionClone.inProgress;\n        connectionClone.toPosition = connectionClone.toHandle ? connectionClone.toHandle.position : null;\n        onClickConnectEnd?.(event, connectionClone);\n        store.setState({ connectionClickStartHandle: null });\n    };\n    return (jsx(\"div\", { \"data-handleid\": handleId, \"data-nodeid\": nodeId, \"data-handlepos\": position, \"data-id\": `${rfId}-${nodeId}-${handleId}-${type}`, className: cc([\n            'react-flow__handle',\n            `react-flow__handle-${position}`,\n            'nodrag',\n            noPanClassName,\n            className,\n            {\n                source: !isTarget,\n                target: isTarget,\n                connectable: isConnectable,\n                connectablestart: isConnectableStart,\n                connectableend: isConnectableEnd,\n                clickconnecting: clickConnecting,\n                connectingfrom: connectingFrom,\n                connectingto: connectingTo,\n                valid,\n                /*\n                 * shows where you can start a connection from\n                 * and where you can end it while connecting\n                 */\n                connectionindicator: isConnectable &&\n                    (!connectionInProcess || isPossibleEndHandle) &&\n                    (connectionInProcess || clickConnectionInProcess ? isConnectableEnd : isConnectableStart),\n            },\n        ]), onMouseDown: onPointerDown, onTouchStart: onPointerDown, onClick: connectOnClick ? onClick : undefined, ref: ref, ...rest, children: children }));\n}\n/**\n * The `<Handle />` component is used in your [custom nodes](/learn/customization/custom-nodes)\n * to define connection points.\n *\n *@public\n *\n *@example\n *\n *```jsx\n *import { Handle, Position } from '@xyflow/react';\n *\n *export function CustomNode({ data }) {\n *  return (\n *    <>\n *      <div style={{ padding: '10px 20px' }}>\n *        {data.label}\n *      </div>\n *\n *      <Handle type=\"target\" position={Position.Left} />\n *      <Handle type=\"source\" position={Position.Right} />\n *    </>\n *  );\n *};\n *```\n */\nconst Handle = memo(fixedForwardRef(HandleComponent));\n\nfunction InputNode({ data, isConnectable, sourcePosition = Position.Bottom }) {\n    return (jsxs(Fragment, { children: [data?.label, jsx(Handle, { type: \"source\", position: sourcePosition, isConnectable: isConnectable })] }));\n}\n\nfunction DefaultNode({ data, isConnectable, targetPosition = Position.Top, sourcePosition = Position.Bottom, }) {\n    return (jsxs(Fragment, { children: [jsx(Handle, { type: \"target\", position: targetPosition, isConnectable: isConnectable }), data?.label, jsx(Handle, { type: \"source\", position: sourcePosition, isConnectable: isConnectable })] }));\n}\n\nfunction GroupNode() {\n    return null;\n}\n\nfunction OutputNode({ data, isConnectable, targetPosition = Position.Top }) {\n    return (jsxs(Fragment, { children: [jsx(Handle, { type: \"target\", position: targetPosition, isConnectable: isConnectable }), data?.label] }));\n}\n\nconst arrowKeyDiffs = {\n    ArrowUp: { x: 0, y: -1 },\n    ArrowDown: { x: 0, y: 1 },\n    ArrowLeft: { x: -1, y: 0 },\n    ArrowRight: { x: 1, y: 0 },\n};\nconst builtinNodeTypes = {\n    input: InputNode,\n    default: DefaultNode,\n    output: OutputNode,\n    group: GroupNode,\n};\nfunction getNodeInlineStyleDimensions(node) {\n    if (node.internals.handleBounds === undefined) {\n        return {\n            width: node.width ?? node.initialWidth ?? node.style?.width,\n            height: node.height ?? node.initialHeight ?? node.style?.height,\n        };\n    }\n    return {\n        width: node.width ?? node.style?.width,\n        height: node.height ?? node.style?.height,\n    };\n}\n\nconst selector$f = (s) => {\n    const { width, height, x, y } = getInternalNodesBounds(s.nodeLookup, {\n        filter: (node) => !!node.selected,\n    });\n    return {\n        width: isNumeric(width) ? width : null,\n        height: isNumeric(height) ? height : null,\n        userSelectionActive: s.userSelectionActive,\n        transformString: `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]}) translate(${x}px,${y}px)`,\n    };\n};\nfunction NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboardA11y, }) {\n    const store = useStoreApi();\n    const { width, height, transformString, userSelectionActive } = useStore(selector$f, shallow);\n    const moveSelectedNodes = useMoveSelectedNodes();\n    const nodeRef = useRef(null);\n    useEffect(() => {\n        if (!disableKeyboardA11y) {\n            nodeRef.current?.focus({\n                preventScroll: true,\n            });\n        }\n    }, [disableKeyboardA11y]);\n    const shouldRender = !userSelectionActive && width !== null && height !== null;\n    useDrag({\n        nodeRef,\n        disabled: !shouldRender,\n    });\n    if (!shouldRender) {\n        return null;\n    }\n    const onContextMenu = onSelectionContextMenu\n        ? (event) => {\n            const selectedNodes = store.getState().nodes.filter((n) => n.selected);\n            onSelectionContextMenu(event, selectedNodes);\n        }\n        : undefined;\n    const onKeyDown = (event) => {\n        if (Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) {\n            event.preventDefault();\n            moveSelectedNodes({\n                direction: arrowKeyDiffs[event.key],\n                factor: event.shiftKey ? 4 : 1,\n            });\n        }\n    };\n    return (jsx(\"div\", { className: cc(['react-flow__nodesselection', 'react-flow__container', noPanClassName]), style: {\n            transform: transformString,\n        }, children: jsx(\"div\", { ref: nodeRef, className: \"react-flow__nodesselection-rect\", onContextMenu: onContextMenu, tabIndex: disableKeyboardA11y ? undefined : -1, onKeyDown: disableKeyboardA11y ? undefined : onKeyDown, style: {\n                width,\n                height,\n            } }) }));\n}\n\nconst win = typeof window !== 'undefined' ? window : undefined;\nconst selector$e = (s) => {\n    return { nodesSelectionActive: s.nodesSelectionActive, userSelectionActive: s.userSelectionActive };\n};\nfunction FlowRendererComponent({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport, }) {\n    const { nodesSelectionActive, userSelectionActive } = useStore(selector$e, shallow);\n    const selectionKeyPressed = useKeyPress(selectionKeyCode, { target: win });\n    const panActivationKeyPressed = useKeyPress(panActivationKeyCode, { target: win });\n    const panOnDrag = panActivationKeyPressed || _panOnDrag;\n    const panOnScroll = panActivationKeyPressed || _panOnScroll;\n    const _selectionOnDrag = selectionOnDrag && panOnDrag !== true;\n    const isSelecting = selectionKeyPressed || userSelectionActive || _selectionOnDrag;\n    useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode });\n    return (jsx(ZoomPane, { onPaneContextMenu: onPaneContextMenu, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, zoomOnDoubleClick: zoomOnDoubleClick, panOnDrag: !selectionKeyPressed && panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, zoomActivationKeyCode: zoomActivationKeyCode, preventScrolling: preventScrolling, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, onViewportChange: onViewportChange, isControlledViewport: isControlledViewport, paneClickDistance: paneClickDistance, selectionOnDrag: _selectionOnDrag, children: jsxs(Pane, { onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, panOnDrag: panOnDrag, isSelecting: !!isSelecting, selectionMode: selectionMode, selectionKeyPressed: selectionKeyPressed, paneClickDistance: paneClickDistance, selectionOnDrag: _selectionOnDrag, children: [children, nodesSelectionActive && (jsx(NodesSelection, { onSelectionContextMenu: onSelectionContextMenu, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y }))] }) }));\n}\nFlowRendererComponent.displayName = 'FlowRenderer';\nconst FlowRenderer = memo(FlowRendererComponent);\n\nconst selector$d = (onlyRenderVisible) => (s) => {\n    return onlyRenderVisible\n        ? getNodesInside(s.nodeLookup, { x: 0, y: 0, width: s.width, height: s.height }, s.transform, true).map((node) => node.id)\n        : Array.from(s.nodeLookup.keys());\n};\n/**\n * Hook for getting the visible node ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible node ids\n */\nfunction useVisibleNodeIds(onlyRenderVisible) {\n    const nodeIds = useStore(useCallback(selector$d(onlyRenderVisible), [onlyRenderVisible]), shallow);\n    return nodeIds;\n}\n\nconst selector$c = (s) => s.updateNodeInternals;\nfunction useResizeObserver() {\n    const updateNodeInternals = useStore(selector$c);\n    const [resizeObserver] = useState(() => {\n        if (typeof ResizeObserver === 'undefined') {\n            return null;\n        }\n        return new ResizeObserver((entries) => {\n            const updates = new Map();\n            entries.forEach((entry) => {\n                const id = entry.target.getAttribute('data-id');\n                updates.set(id, {\n                    id,\n                    nodeElement: entry.target,\n                    force: true,\n                });\n            });\n            updateNodeInternals(updates);\n        });\n    });\n    useEffect(() => {\n        return () => {\n            resizeObserver?.disconnect();\n        };\n    }, [resizeObserver]);\n    return resizeObserver;\n}\n\n/**\n * Hook to handle the resize observation + internal updates for the passed node.\n *\n * @internal\n * @returns nodeRef - reference to the node element\n */\nfunction useNodeObserver({ node, nodeType, hasDimensions, resizeObserver, }) {\n    const store = useStoreApi();\n    const nodeRef = useRef(null);\n    const observedNode = useRef(null);\n    const prevSourcePosition = useRef(node.sourcePosition);\n    const prevTargetPosition = useRef(node.targetPosition);\n    const prevType = useRef(nodeType);\n    const isInitialized = hasDimensions && !!node.internals.handleBounds;\n    useEffect(() => {\n        if (nodeRef.current && !node.hidden && (!isInitialized || observedNode.current !== nodeRef.current)) {\n            if (observedNode.current) {\n                resizeObserver?.unobserve(observedNode.current);\n            }\n            resizeObserver?.observe(nodeRef.current);\n            observedNode.current = nodeRef.current;\n        }\n    }, [isInitialized, node.hidden]);\n    useEffect(() => {\n        return () => {\n            if (observedNode.current) {\n                resizeObserver?.unobserve(observedNode.current);\n                observedNode.current = null;\n            }\n        };\n    }, []);\n    useEffect(() => {\n        if (nodeRef.current) {\n            /*\n             * when the user programmatically changes the source or handle position, we need to update the internals\n             * to make sure the edges are updated correctly\n             */\n            const typeChanged = prevType.current !== nodeType;\n            const sourcePosChanged = prevSourcePosition.current !== node.sourcePosition;\n            const targetPosChanged = prevTargetPosition.current !== node.targetPosition;\n            if (typeChanged || sourcePosChanged || targetPosChanged) {\n                prevType.current = nodeType;\n                prevSourcePosition.current = node.sourcePosition;\n                prevTargetPosition.current = node.targetPosition;\n                store\n                    .getState()\n                    .updateNodeInternals(new Map([[node.id, { id: node.id, nodeElement: nodeRef.current, force: true }]]));\n            }\n        }\n    }, [node.id, nodeType, node.sourcePosition, node.targetPosition]);\n    return nodeRef;\n}\n\nfunction NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, nodesDraggable, elementsSelectable, nodesConnectable, nodesFocusable, resizeObserver, noDragClassName, noPanClassName, disableKeyboardA11y, rfId, nodeTypes, nodeClickDistance, onError, }) {\n    const { node, internals, isParent } = useStore((s) => {\n        const node = s.nodeLookup.get(id);\n        const isParent = s.parentLookup.has(id);\n        return {\n            node,\n            internals: node.internals,\n            isParent,\n        };\n    }, shallow);\n    let nodeType = node.type || 'default';\n    let NodeComponent = nodeTypes?.[nodeType] || builtinNodeTypes[nodeType];\n    if (NodeComponent === undefined) {\n        onError?.('003', errorMessages['error003'](nodeType));\n        nodeType = 'default';\n        NodeComponent = nodeTypes?.['default'] || builtinNodeTypes.default;\n    }\n    const isDraggable = !!(node.draggable || (nodesDraggable && typeof node.draggable === 'undefined'));\n    const isSelectable = !!(node.selectable || (elementsSelectable && typeof node.selectable === 'undefined'));\n    const isConnectable = !!(node.connectable || (nodesConnectable && typeof node.connectable === 'undefined'));\n    const isFocusable = !!(node.focusable || (nodesFocusable && typeof node.focusable === 'undefined'));\n    const store = useStoreApi();\n    const hasDimensions = nodeHasDimensions(node);\n    const nodeRef = useNodeObserver({ node, nodeType, hasDimensions, resizeObserver });\n    const dragging = useDrag({\n        nodeRef,\n        disabled: node.hidden || !isDraggable,\n        noDragClassName,\n        handleSelector: node.dragHandle,\n        nodeId: id,\n        isSelectable,\n        nodeClickDistance,\n    });\n    const moveSelectedNodes = useMoveSelectedNodes();\n    if (node.hidden) {\n        return null;\n    }\n    const nodeDimensions = getNodeDimensions(node);\n    const inlineDimensions = getNodeInlineStyleDimensions(node);\n    const hasPointerEvents = isSelectable || isDraggable || onClick || onMouseEnter || onMouseMove || onMouseLeave;\n    const onMouseEnterHandler = onMouseEnter\n        ? (event) => onMouseEnter(event, { ...internals.userNode })\n        : undefined;\n    const onMouseMoveHandler = onMouseMove\n        ? (event) => onMouseMove(event, { ...internals.userNode })\n        : undefined;\n    const onMouseLeaveHandler = onMouseLeave\n        ? (event) => onMouseLeave(event, { ...internals.userNode })\n        : undefined;\n    const onContextMenuHandler = onContextMenu\n        ? (event) => onContextMenu(event, { ...internals.userNode })\n        : undefined;\n    const onDoubleClickHandler = onDoubleClick\n        ? (event) => onDoubleClick(event, { ...internals.userNode })\n        : undefined;\n    const onSelectNodeHandler = (event) => {\n        const { selectNodesOnDrag, nodeDragThreshold } = store.getState();\n        if (isSelectable && (!selectNodesOnDrag || !isDraggable || nodeDragThreshold > 0)) {\n            /*\n             * this handler gets called by XYDrag on drag start when selectNodesOnDrag=true\n             * here we only need to call it when selectNodesOnDrag=false\n             */\n            handleNodeClick({\n                id,\n                store,\n                nodeRef,\n            });\n        }\n        if (onClick) {\n            onClick(event, { ...internals.userNode });\n        }\n    };\n    const onKeyDown = (event) => {\n        if (isInputDOMNode(event.nativeEvent) || disableKeyboardA11y) {\n            return;\n        }\n        if (elementSelectionKeys.includes(event.key) && isSelectable) {\n            const unselect = event.key === 'Escape';\n            handleNodeClick({\n                id,\n                store,\n                unselect,\n                nodeRef,\n            });\n        }\n        else if (isDraggable && node.selected && Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) {\n            // prevent default scrolling behavior on arrow key press when node is moved\n            event.preventDefault();\n            const { ariaLabelConfig } = store.getState();\n            store.setState({\n                ariaLiveMessage: ariaLabelConfig['node.a11yDescription.ariaLiveMessage']({\n                    direction: event.key.replace('Arrow', '').toLowerCase(),\n                    x: ~~internals.positionAbsolute.x,\n                    y: ~~internals.positionAbsolute.y,\n                }),\n            });\n            moveSelectedNodes({\n                direction: arrowKeyDiffs[event.key],\n                factor: event.shiftKey ? 4 : 1,\n            });\n        }\n    };\n    const onFocus = () => {\n        if (disableKeyboardA11y || !nodeRef.current?.matches(':focus-visible')) {\n            return;\n        }\n        const { transform, width, height, autoPanOnNodeFocus, setCenter } = store.getState();\n        if (!autoPanOnNodeFocus) {\n            return;\n        }\n        const withinViewport = getNodesInside(new Map([[id, node]]), { x: 0, y: 0, width, height }, transform, true).length > 0;\n        if (!withinViewport) {\n            setCenter(node.position.x + nodeDimensions.width / 2, node.position.y + nodeDimensions.height / 2, {\n                zoom: transform[2],\n            });\n        }\n    };\n    return (jsx(\"div\", { className: cc([\n            'react-flow__node',\n            `react-flow__node-${nodeType}`,\n            {\n                // this is overwritable by passing `nopan` as a class name\n                [noPanClassName]: isDraggable,\n            },\n            node.className,\n            {\n                selected: node.selected,\n                selectable: isSelectable,\n                parent: isParent,\n                draggable: isDraggable,\n                dragging,\n            },\n        ]), ref: nodeRef, style: {\n            zIndex: internals.z,\n            transform: `translate(${internals.positionAbsolute.x}px,${internals.positionAbsolute.y}px)`,\n            pointerEvents: hasPointerEvents ? 'all' : 'none',\n            visibility: hasDimensions ? 'visible' : 'hidden',\n            ...node.style,\n            ...inlineDimensions,\n        }, \"data-id\": id, \"data-testid\": `rf__node-${id}`, onMouseEnter: onMouseEnterHandler, onMouseMove: onMouseMoveHandler, onMouseLeave: onMouseLeaveHandler, onContextMenu: onContextMenuHandler, onClick: onSelectNodeHandler, onDoubleClick: onDoubleClickHandler, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, onFocus: isFocusable ? onFocus : undefined, role: node.ariaRole ?? (isFocusable ? 'group' : undefined), \"aria-roledescription\": \"node\", \"aria-describedby\": disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`, \"aria-label\": node.ariaLabel, ...node.domAttributes, children: jsx(Provider, { value: id, children: jsx(NodeComponent, { id: id, data: node.data, type: nodeType, positionAbsoluteX: internals.positionAbsolute.x, positionAbsoluteY: internals.positionAbsolute.y, selected: node.selected ?? false, selectable: isSelectable, draggable: isDraggable, deletable: node.deletable ?? true, isConnectable: isConnectable, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition, dragging: dragging, dragHandle: node.dragHandle, zIndex: internals.z, parentId: node.parentId, ...nodeDimensions }) }) }));\n}\nvar NodeWrapper$1 = memo(NodeWrapper);\n\nconst selector$b = (s) => ({\n    nodesDraggable: s.nodesDraggable,\n    nodesConnectable: s.nodesConnectable,\n    nodesFocusable: s.nodesFocusable,\n    elementsSelectable: s.elementsSelectable,\n    onError: s.onError,\n});\nfunction NodeRendererComponent(props) {\n    const { nodesDraggable, nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$b, shallow);\n    const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements);\n    const resizeObserver = useResizeObserver();\n    return (jsx(\"div\", { className: \"react-flow__nodes\", style: containerStyle, children: nodeIds.map((nodeId) => {\n            return (\n            /*\n             * The split of responsibilities between NodeRenderer and\n             * NodeComponentWrapper may appear weird. However, it’s designed to\n             * minimize the cost of updates when individual nodes change.\n             *\n             * For example, when you’re dragging a single node, that node gets\n             * updated multiple times per second. If `NodeRenderer` were to update\n             * every time, it would have to re-run the `nodes.map()` loop every\n             * time. This gets pricey with hundreds of nodes, especially if every\n             * loop cycle does more than just rendering a JSX element!\n             *\n             * As a result of this choice, we took the following implementation\n             * decisions:\n             * - NodeRenderer subscribes *only* to node IDs – and therefore\n             *   rerender *only* when visible nodes are added or removed.\n             * - NodeRenderer performs all operations the result of which can be\n             *   shared between nodes (such as creating the `ResizeObserver`\n             *   instance, or subscribing to `selector`). This means extra prop\n             *   drilling into `NodeComponentWrapper`, but it means we need to run\n             *   these operations only once – instead of once per node.\n             * - Any operations that you’d normally write inside `nodes.map` are\n             *   moved into `NodeComponentWrapper`. This ensures they are\n             *   memorized – so if `NodeRenderer` *has* to rerender, it only\n             *   needs to regenerate the list of nodes, nothing else.\n             */\n            jsx(NodeWrapper$1, { id: nodeId, nodeTypes: props.nodeTypes, nodeExtent: props.nodeExtent, onClick: props.onNodeClick, onMouseEnter: props.onNodeMouseEnter, onMouseMove: props.onNodeMouseMove, onMouseLeave: props.onNodeMouseLeave, onContextMenu: props.onNodeContextMenu, onDoubleClick: props.onNodeDoubleClick, noDragClassName: props.noDragClassName, noPanClassName: props.noPanClassName, rfId: props.rfId, disableKeyboardA11y: props.disableKeyboardA11y, resizeObserver: resizeObserver, nodesDraggable: nodesDraggable, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, elementsSelectable: elementsSelectable, nodeClickDistance: props.nodeClickDistance, onError: onError }, nodeId));\n        }) }));\n}\nNodeRendererComponent.displayName = 'NodeRenderer';\nconst NodeRenderer = memo(NodeRendererComponent);\n\n/**\n * Hook for getting the visible edge ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible edge ids\n */\nfunction useVisibleEdgeIds(onlyRenderVisible) {\n    const edgeIds = useStore(useCallback((s) => {\n        if (!onlyRenderVisible) {\n            return s.edges.map((edge) => edge.id);\n        }\n        const visibleEdgeIds = [];\n        if (s.width && s.height) {\n            for (const edge of s.edges) {\n                const sourceNode = s.nodeLookup.get(edge.source);\n                const targetNode = s.nodeLookup.get(edge.target);\n                if (sourceNode &&\n                    targetNode &&\n                    isEdgeVisible({\n                        sourceNode,\n                        targetNode,\n                        width: s.width,\n                        height: s.height,\n                        transform: s.transform,\n                    })) {\n                    visibleEdgeIds.push(edge.id);\n                }\n            }\n        }\n        return visibleEdgeIds;\n    }, [onlyRenderVisible]), shallow);\n    return edgeIds;\n}\n\nconst ArrowSymbol = ({ color = 'none', strokeWidth = 1 }) => {\n    const style = {\n        strokeWidth,\n        ...(color && { stroke: color }),\n    };\n    return (jsx(\"polyline\", { className: \"arrow\", style: style, strokeLinecap: \"round\", fill: \"none\", strokeLinejoin: \"round\", points: \"-5,-4 0,0 -5,4\" }));\n};\nconst ArrowClosedSymbol = ({ color = 'none', strokeWidth = 1 }) => {\n    const style = {\n        strokeWidth,\n        ...(color && { stroke: color, fill: color }),\n    };\n    return (jsx(\"polyline\", { className: \"arrowclosed\", style: style, strokeLinecap: \"round\", strokeLinejoin: \"round\", points: \"-5,-4 0,0 -5,4 -5,-4\" }));\n};\nconst MarkerSymbols = {\n    [MarkerType.Arrow]: ArrowSymbol,\n    [MarkerType.ArrowClosed]: ArrowClosedSymbol,\n};\nfunction useMarkerSymbol(type) {\n    const store = useStoreApi();\n    const symbol = useMemo(() => {\n        const symbolExists = Object.prototype.hasOwnProperty.call(MarkerSymbols, type);\n        if (!symbolExists) {\n            store.getState().onError?.('009', errorMessages['error009'](type));\n            return null;\n        }\n        return MarkerSymbols[type];\n    }, [type]);\n    return symbol;\n}\n\nconst Marker = ({ id, type, color, width = 12.5, height = 12.5, markerUnits = 'strokeWidth', strokeWidth, orient = 'auto-start-reverse', }) => {\n    const Symbol = useMarkerSymbol(type);\n    if (!Symbol) {\n        return null;\n    }\n    return (jsx(\"marker\", { className: \"react-flow__arrowhead\", id: id, markerWidth: `${width}`, markerHeight: `${height}`, viewBox: \"-10 -10 20 20\", markerUnits: markerUnits, orient: orient, refX: \"0\", refY: \"0\", children: jsx(Symbol, { color: color, strokeWidth: strokeWidth }) }));\n};\n/*\n * when you have multiple flows on a page and you hide the first one, the other ones have no markers anymore\n * when they do have markers with the same ids. To prevent this the user can pass a unique id to the react flow wrapper\n * that we can then use for creating our unique marker ids\n */\nconst MarkerDefinitions = ({ defaultColor, rfId }) => {\n    const edges = useStore((s) => s.edges);\n    const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);\n    const markers = useMemo(() => {\n        const markers = createMarkerIds(edges, {\n            id: rfId,\n            defaultColor,\n            defaultMarkerStart: defaultEdgeOptions?.markerStart,\n            defaultMarkerEnd: defaultEdgeOptions?.markerEnd,\n        });\n        return markers;\n    }, [edges, defaultEdgeOptions, rfId, defaultColor]);\n    if (!markers.length) {\n        return null;\n    }\n    return (jsx(\"svg\", { className: \"react-flow__marker\", \"aria-hidden\": \"true\", children: jsx(\"defs\", { children: markers.map((marker) => (jsx(Marker, { id: marker.id, type: marker.type, color: marker.color, width: marker.width, height: marker.height, markerUnits: marker.markerUnits, strokeWidth: marker.strokeWidth, orient: marker.orient }, marker.id))) }) }));\n};\nMarkerDefinitions.displayName = 'MarkerDefinitions';\nvar MarkerDefinitions$1 = memo(MarkerDefinitions);\n\nfunction EdgeTextComponent({ x, y, label, labelStyle, labelShowBg = true, labelBgStyle, labelBgPadding = [2, 4], labelBgBorderRadius = 2, children, className, ...rest }) {\n    const [edgeTextBbox, setEdgeTextBbox] = useState({ x: 1, y: 0, width: 0, height: 0 });\n    const edgeTextClasses = cc(['react-flow__edge-textwrapper', className]);\n    const edgeTextRef = useRef(null);\n    useEffect(() => {\n        if (edgeTextRef.current) {\n            const textBbox = edgeTextRef.current.getBBox();\n            setEdgeTextBbox({\n                x: textBbox.x,\n                y: textBbox.y,\n                width: textBbox.width,\n                height: textBbox.height,\n            });\n        }\n    }, [label]);\n    if (!label) {\n        return null;\n    }\n    return (jsxs(\"g\", { transform: `translate(${x - edgeTextBbox.width / 2} ${y - edgeTextBbox.height / 2})`, className: edgeTextClasses, visibility: edgeTextBbox.width ? 'visible' : 'hidden', ...rest, children: [labelShowBg && (jsx(\"rect\", { width: edgeTextBbox.width + 2 * labelBgPadding[0], x: -labelBgPadding[0], y: -labelBgPadding[1], height: edgeTextBbox.height + 2 * labelBgPadding[1], className: \"react-flow__edge-textbg\", style: labelBgStyle, rx: labelBgBorderRadius, ry: labelBgBorderRadius })), jsx(\"text\", { className: \"react-flow__edge-text\", y: edgeTextBbox.height / 2, dy: \"0.3em\", ref: edgeTextRef, style: labelStyle, children: label }), children] }));\n}\nEdgeTextComponent.displayName = 'EdgeText';\n/**\n * You can use the `<EdgeText />` component as a helper component to display text\n * within your custom edges.\n *\n * @public\n *\n * @example\n * ```jsx\n * import { EdgeText } from '@xyflow/react';\n *\n * export function CustomEdgeLabel({ label }) {\n *   return (\n *     <EdgeText\n *       x={100}\n *       y={100}\n *       label={label}\n *       labelStyle={{ fill: 'white' }}\n *       labelShowBg\n *       labelBgStyle={{ fill: 'red' }}\n *       labelBgPadding={[2, 4]}\n *       labelBgBorderRadius={2}\n *     />\n *   );\n * }\n *```\n */\nconst EdgeText = memo(EdgeTextComponent);\n\n/**\n * The `<BaseEdge />` component gets used internally for all the edges. It can be\n * used inside a custom edge and handles the invisible helper edge and the edge label\n * for you.\n *\n * @public\n * @example\n * ```jsx\n *import { BaseEdge } from '@xyflow/react';\n *\n *export function CustomEdge({ sourceX, sourceY, targetX, targetY, ...props }) {\n *  const [edgePath] = getStraightPath({\n *    sourceX,\n *    sourceY,\n *    targetX,\n *    targetY,\n *  });\n *\n *  return <BaseEdge path={edgePath} {...props} />;\n *}\n *```\n *\n * @remarks If you want to use an edge marker with the [`<BaseEdge />`](/api-reference/components/base-edge) component,\n * you can pass the `markerStart` or `markerEnd` props passed to your custom edge\n * through to the [`<BaseEdge />`](/api-reference/components/base-edge) component.\n * You can see all the props passed to a custom edge by looking at the [`EdgeProps`](/api-reference/types/edge-props) type.\n */\nfunction BaseEdge({ path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, interactionWidth = 20, ...props }) {\n    return (jsxs(Fragment, { children: [jsx(\"path\", { ...props, d: path, fill: \"none\", className: cc(['react-flow__edge-path', props.className]) }), interactionWidth ? (jsx(\"path\", { d: path, fill: \"none\", strokeOpacity: 0, strokeWidth: interactionWidth, className: \"react-flow__edge-interaction\" })) : null, label && isNumeric(labelX) && isNumeric(labelY) ? (jsx(EdgeText, { x: labelX, y: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius })) : null] }));\n}\n\nfunction getControl({ pos, x1, y1, x2, y2 }) {\n    if (pos === Position.Left || pos === Position.Right) {\n        return [0.5 * (x1 + x2), y1];\n    }\n    return [x1, 0.5 * (y1 + y2)];\n}\n/**\n * The `getSimpleBezierPath` util returns everything you need to render a simple\n * bezier edge between two nodes.\n * @public\n * @returns\n * - `path`: the path to use in an SVG `<path>` element.\n * - `labelX`: the `x` position you can use to render a label for this edge.\n * - `labelY`: the `y` position you can use to render a label for this edge.\n * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the\n * middle of this path.\n * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the\n * middle of this path.\n */\nfunction getSimpleBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, }) {\n    const [sourceControlX, sourceControlY] = getControl({\n        pos: sourcePosition,\n        x1: sourceX,\n        y1: sourceY,\n        x2: targetX,\n        y2: targetY,\n    });\n    const [targetControlX, targetControlY] = getControl({\n        pos: targetPosition,\n        x1: targetX,\n        y1: targetY,\n        x2: sourceX,\n        y2: sourceY,\n    });\n    const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n        sourceX,\n        sourceY,\n        targetX,\n        targetY,\n        sourceControlX,\n        sourceControlY,\n        targetControlX,\n        targetControlY,\n    });\n    return [\n        `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n        labelX,\n        labelY,\n        offsetX,\n        offsetY,\n    ];\n}\nfunction createSimpleBezierEdge(params) {\n    // eslint-disable-next-line react/display-name\n    return memo(({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => {\n        const [path, labelX, labelY] = getSimpleBezierPath({\n            sourceX,\n            sourceY,\n            sourcePosition,\n            targetX,\n            targetY,\n            targetPosition,\n        });\n        const _id = params.isInternal ? undefined : id;\n        return (jsx(BaseEdge, { id: _id, path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n    });\n}\nconst SimpleBezierEdge = createSimpleBezierEdge({ isInternal: false });\nconst SimpleBezierEdgeInternal = createSimpleBezierEdge({ isInternal: true });\nSimpleBezierEdge.displayName = 'SimpleBezierEdge';\nSimpleBezierEdgeInternal.displayName = 'SimpleBezierEdgeInternal';\n\nfunction createSmoothStepEdge(params) {\n    // eslint-disable-next-line react/display-name\n    return memo(({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, sourcePosition = Position.Bottom, targetPosition = Position.Top, markerEnd, markerStart, pathOptions, interactionWidth, }) => {\n        const [path, labelX, labelY] = getSmoothStepPath({\n            sourceX,\n            sourceY,\n            sourcePosition,\n            targetX,\n            targetY,\n            targetPosition,\n            borderRadius: pathOptions?.borderRadius,\n            offset: pathOptions?.offset,\n            stepPosition: pathOptions?.stepPosition,\n        });\n        const _id = params.isInternal ? undefined : id;\n        return (jsx(BaseEdge, { id: _id, path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n    });\n}\n/**\n * Component that can be used inside a custom edge to render a smooth step edge.\n *\n * @public\n * @example\n *\n * ```tsx\n * import { SmoothStepEdge } from '@xyflow/react';\n *\n * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) {\n *   return (\n *     <SmoothStepEdge\n *       sourceX={sourceX}\n *       sourceY={sourceY}\n *       targetX={targetX}\n *       targetY={targetY}\n *       sourcePosition={sourcePosition}\n *       targetPosition={targetPosition}\n *     />\n *   );\n * }\n * ```\n */\nconst SmoothStepEdge = createSmoothStepEdge({ isInternal: false });\n/**\n * @internal\n */\nconst SmoothStepEdgeInternal = createSmoothStepEdge({ isInternal: true });\nSmoothStepEdge.displayName = 'SmoothStepEdge';\nSmoothStepEdgeInternal.displayName = 'SmoothStepEdgeInternal';\n\nfunction createStepEdge(params) {\n    // eslint-disable-next-line react/display-name\n    return memo(({ id, ...props }) => {\n        const _id = params.isInternal ? undefined : id;\n        return (jsx(SmoothStepEdge, { ...props, id: _id, pathOptions: useMemo(() => ({ borderRadius: 0, offset: props.pathOptions?.offset }), [props.pathOptions?.offset]) }));\n    });\n}\n/**\n * Component that can be used inside a custom edge to render a step edge.\n *\n * @public\n * @example\n *\n * ```tsx\n * import { StepEdge } from '@xyflow/react';\n *\n * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) {\n *   return (\n *     <StepEdge\n *       sourceX={sourceX}\n *       sourceY={sourceY}\n *       targetX={targetX}\n *       targetY={targetY}\n *       sourcePosition={sourcePosition}\n *       targetPosition={targetPosition}\n *     />\n *   );\n * }\n * ```\n */\nconst StepEdge = createStepEdge({ isInternal: false });\n/**\n * @internal\n */\nconst StepEdgeInternal = createStepEdge({ isInternal: true });\nStepEdge.displayName = 'StepEdge';\nStepEdgeInternal.displayName = 'StepEdgeInternal';\n\nfunction createStraightEdge(params) {\n    // eslint-disable-next-line react/display-name\n    return memo(({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => {\n        const [path, labelX, labelY] = getStraightPath({ sourceX, sourceY, targetX, targetY });\n        const _id = params.isInternal ? undefined : id;\n        return (jsx(BaseEdge, { id: _id, path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n    });\n}\n/**\n * Component that can be used inside a custom edge to render a straight line.\n *\n * @public\n * @example\n *\n * ```tsx\n * import { StraightEdge } from '@xyflow/react';\n *\n * function CustomEdge({ sourceX, sourceY, targetX, targetY }) {\n *   return (\n *     <StraightEdge\n *       sourceX={sourceX}\n *       sourceY={sourceY}\n *       targetX={targetX}\n *       targetY={targetY}\n *     />\n *   );\n * }\n * ```\n */\nconst StraightEdge = createStraightEdge({ isInternal: false });\n/**\n * @internal\n */\nconst StraightEdgeInternal = createStraightEdge({ isInternal: true });\nStraightEdge.displayName = 'StraightEdge';\nStraightEdgeInternal.displayName = 'StraightEdgeInternal';\n\nfunction createBezierEdge(params) {\n    // eslint-disable-next-line react/display-name\n    return memo(({ id, sourceX, sourceY, targetX, targetY, sourcePosition = Position.Bottom, targetPosition = Position.Top, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, pathOptions, interactionWidth, }) => {\n        const [path, labelX, labelY] = getBezierPath({\n            sourceX,\n            sourceY,\n            sourcePosition,\n            targetX,\n            targetY,\n            targetPosition,\n            curvature: pathOptions?.curvature,\n        });\n        const _id = params.isInternal ? undefined : id;\n        return (jsx(BaseEdge, { id: _id, path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n    });\n}\n/**\n * Component that can be used inside a custom edge to render a bezier curve.\n *\n * @public\n * @example\n *\n * ```tsx\n * import { BezierEdge } from '@xyflow/react';\n *\n * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) {\n *   return (\n *     <BezierEdge\n *       sourceX={sourceX}\n *       sourceY={sourceY}\n *       targetX={targetX}\n *       targetY={targetY}\n *       sourcePosition={sourcePosition}\n *       targetPosition={targetPosition}\n *     />\n *   );\n * }\n * ```\n */\nconst BezierEdge = createBezierEdge({ isInternal: false });\n/**\n * @internal\n */\nconst BezierEdgeInternal = createBezierEdge({ isInternal: true });\nBezierEdge.displayName = 'BezierEdge';\nBezierEdgeInternal.displayName = 'BezierEdgeInternal';\n\nconst builtinEdgeTypes = {\n    default: BezierEdgeInternal,\n    straight: StraightEdgeInternal,\n    step: StepEdgeInternal,\n    smoothstep: SmoothStepEdgeInternal,\n    simplebezier: SimpleBezierEdgeInternal,\n};\nconst nullPosition = {\n    sourceX: null,\n    sourceY: null,\n    targetX: null,\n    targetY: null,\n    sourcePosition: null,\n    targetPosition: null,\n};\n\nconst shiftX = (x, shift, position) => {\n    if (position === Position.Left)\n        return x - shift;\n    if (position === Position.Right)\n        return x + shift;\n    return x;\n};\nconst shiftY = (y, shift, position) => {\n    if (position === Position.Top)\n        return y - shift;\n    if (position === Position.Bottom)\n        return y + shift;\n    return y;\n};\nconst EdgeUpdaterClassName = 'react-flow__edgeupdater';\n/**\n * @internal\n */\nfunction EdgeAnchor({ position, centerX, centerY, radius = 10, onMouseDown, onMouseEnter, onMouseOut, type, }) {\n    return (jsx(\"circle\", { onMouseDown: onMouseDown, onMouseEnter: onMouseEnter, onMouseOut: onMouseOut, className: cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`]), cx: shiftX(centerX, radius, position), cy: shiftY(centerY, radius, position), r: radius, stroke: \"transparent\", fill: \"transparent\" }));\n}\n\nfunction EdgeUpdateAnchors({ isReconnectable, reconnectRadius, edge, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onReconnect, onReconnectStart, onReconnectEnd, setReconnecting, setUpdateHover, }) {\n    const store = useStoreApi();\n    const handleEdgeUpdater = (event, oppositeHandle) => {\n        // avoid triggering edge updater if mouse btn is not left\n        if (event.button !== 0) {\n            return;\n        }\n        const { autoPanOnConnect, domNode, connectionMode, connectionRadius, lib, onConnectStart, cancelConnection, nodeLookup, rfId: flowId, panBy, updateConnection, } = store.getState();\n        const isTarget = oppositeHandle.type === 'target';\n        const _onReconnectEnd = (evt, connectionState) => {\n            setReconnecting(false);\n            onReconnectEnd?.(evt, edge, oppositeHandle.type, connectionState);\n        };\n        const onConnectEdge = (connection) => onReconnect?.(edge, connection);\n        const _onConnectStart = (_event, params) => {\n            setReconnecting(true);\n            onReconnectStart?.(event, edge, oppositeHandle.type);\n            onConnectStart?.(_event, params);\n        };\n        XYHandle.onPointerDown(event.nativeEvent, {\n            autoPanOnConnect,\n            connectionMode,\n            connectionRadius,\n            domNode,\n            handleId: oppositeHandle.id,\n            nodeId: oppositeHandle.nodeId,\n            nodeLookup,\n            isTarget,\n            edgeUpdaterType: oppositeHandle.type,\n            lib,\n            flowId,\n            cancelConnection,\n            panBy,\n            isValidConnection: (...args) => store.getState().isValidConnection?.(...args) ?? true,\n            onConnect: onConnectEdge,\n            onConnectStart: _onConnectStart,\n            onConnectEnd: (...args) => store.getState().onConnectEnd?.(...args),\n            onReconnectEnd: _onReconnectEnd,\n            updateConnection,\n            getTransform: () => store.getState().transform,\n            getFromHandle: () => store.getState().connection.fromHandle,\n            dragThreshold: store.getState().connectionDragThreshold,\n            handleDomNode: event.currentTarget,\n        });\n    };\n    const onReconnectSourceMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.target, id: edge.targetHandle ?? null, type: 'target' });\n    const onReconnectTargetMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.source, id: edge.sourceHandle ?? null, type: 'source' });\n    const onReconnectMouseEnter = () => setUpdateHover(true);\n    const onReconnectMouseOut = () => setUpdateHover(false);\n    return (jsxs(Fragment, { children: [(isReconnectable === true || isReconnectable === 'source') && (jsx(EdgeAnchor, { position: sourcePosition, centerX: sourceX, centerY: sourceY, radius: reconnectRadius, onMouseDown: onReconnectSourceMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: \"source\" })), (isReconnectable === true || isReconnectable === 'target') && (jsx(EdgeAnchor, { position: targetPosition, centerX: targetX, centerY: targetY, radius: reconnectRadius, onMouseDown: onReconnectTargetMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: \"target\" }))] }));\n}\n\nfunction EdgeWrapper({ id, edgesFocusable, edgesReconnectable, elementsSelectable, onClick, onDoubleClick, onContextMenu, onMouseEnter, onMouseMove, onMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, rfId, edgeTypes, noPanClassName, onError, disableKeyboardA11y, }) {\n    let edge = useStore((s) => s.edgeLookup.get(id));\n    const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);\n    edge = defaultEdgeOptions ? { ...defaultEdgeOptions, ...edge } : edge;\n    let edgeType = edge.type || 'default';\n    let EdgeComponent = edgeTypes?.[edgeType] || builtinEdgeTypes[edgeType];\n    if (EdgeComponent === undefined) {\n        onError?.('011', errorMessages['error011'](edgeType));\n        edgeType = 'default';\n        EdgeComponent = edgeTypes?.['default'] || builtinEdgeTypes.default;\n    }\n    const isFocusable = !!(edge.focusable || (edgesFocusable && typeof edge.focusable === 'undefined'));\n    const isReconnectable = typeof onReconnect !== 'undefined' &&\n        (edge.reconnectable || (edgesReconnectable && typeof edge.reconnectable === 'undefined'));\n    const isSelectable = !!(edge.selectable || (elementsSelectable && typeof edge.selectable === 'undefined'));\n    const edgeRef = useRef(null);\n    const [updateHover, setUpdateHover] = useState(false);\n    const [reconnecting, setReconnecting] = useState(false);\n    const store = useStoreApi();\n    const { zIndex, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition } = useStore(useCallback((store) => {\n        const sourceNode = store.nodeLookup.get(edge.source);\n        const targetNode = store.nodeLookup.get(edge.target);\n        if (!sourceNode || !targetNode) {\n            return {\n                zIndex: edge.zIndex,\n                ...nullPosition,\n            };\n        }\n        const edgePosition = getEdgePosition({\n            id,\n            sourceNode,\n            targetNode,\n            sourceHandle: edge.sourceHandle || null,\n            targetHandle: edge.targetHandle || null,\n            connectionMode: store.connectionMode,\n            onError,\n        });\n        const zIndex = getElevatedEdgeZIndex({\n            selected: edge.selected,\n            zIndex: edge.zIndex,\n            sourceNode,\n            targetNode,\n            elevateOnSelect: store.elevateEdgesOnSelect,\n            zIndexMode: store.zIndexMode,\n        });\n        return {\n            zIndex,\n            ...(edgePosition || nullPosition),\n        };\n    }, [edge.source, edge.target, edge.sourceHandle, edge.targetHandle, edge.selected, edge.zIndex]), shallow);\n    const markerStartUrl = useMemo(() => (edge.markerStart ? `url('#${getMarkerId(edge.markerStart, rfId)}')` : undefined), [edge.markerStart, rfId]);\n    const markerEndUrl = useMemo(() => (edge.markerEnd ? `url('#${getMarkerId(edge.markerEnd, rfId)}')` : undefined), [edge.markerEnd, rfId]);\n    if (edge.hidden || sourceX === null || sourceY === null || targetX === null || targetY === null) {\n        return null;\n    }\n    const onEdgeClick = (event) => {\n        const { addSelectedEdges, unselectNodesAndEdges, multiSelectionActive } = store.getState();\n        if (isSelectable) {\n            store.setState({ nodesSelectionActive: false });\n            if (edge.selected && multiSelectionActive) {\n                unselectNodesAndEdges({ nodes: [], edges: [edge] });\n                edgeRef.current?.blur();\n            }\n            else {\n                addSelectedEdges([id]);\n            }\n        }\n        if (onClick) {\n            onClick(event, edge);\n        }\n    };\n    const onEdgeDoubleClick = onDoubleClick\n        ? (event) => {\n            onDoubleClick(event, { ...edge });\n        }\n        : undefined;\n    const onEdgeContextMenu = onContextMenu\n        ? (event) => {\n            onContextMenu(event, { ...edge });\n        }\n        : undefined;\n    const onEdgeMouseEnter = onMouseEnter\n        ? (event) => {\n            onMouseEnter(event, { ...edge });\n        }\n        : undefined;\n    const onEdgeMouseMove = onMouseMove\n        ? (event) => {\n            onMouseMove(event, { ...edge });\n        }\n        : undefined;\n    const onEdgeMouseLeave = onMouseLeave\n        ? (event) => {\n            onMouseLeave(event, { ...edge });\n        }\n        : undefined;\n    const onKeyDown = (event) => {\n        if (!disableKeyboardA11y && elementSelectionKeys.includes(event.key) && isSelectable) {\n            const { unselectNodesAndEdges, addSelectedEdges } = store.getState();\n            const unselect = event.key === 'Escape';\n            if (unselect) {\n                edgeRef.current?.blur();\n                unselectNodesAndEdges({ edges: [edge] });\n            }\n            else {\n                addSelectedEdges([id]);\n            }\n        }\n    };\n    return (jsx(\"svg\", { style: { zIndex }, children: jsxs(\"g\", { className: cc([\n                'react-flow__edge',\n                `react-flow__edge-${edgeType}`,\n                edge.className,\n                noPanClassName,\n                {\n                    selected: edge.selected,\n                    animated: edge.animated,\n                    inactive: !isSelectable && !onClick,\n                    updating: updateHover,\n                    selectable: isSelectable,\n                },\n            ]), onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: edge.ariaRole ?? (isFocusable ? 'group' : 'img'), \"aria-roledescription\": \"edge\", \"data-id\": id, \"data-testid\": `rf__edge-${id}`, \"aria-label\": edge.ariaLabel === null ? undefined : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`, \"aria-describedby\": isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined, ref: edgeRef, ...edge.domAttributes, children: [!reconnecting && (jsx(EdgeComponent, { id: id, source: edge.source, target: edge.target, type: edge.type, selected: edge.selected, animated: edge.animated, selectable: isSelectable, deletable: edge.deletable ?? true, label: edge.label, labelStyle: edge.labelStyle, labelShowBg: edge.labelShowBg, labelBgStyle: edge.labelBgStyle, labelBgPadding: edge.labelBgPadding, labelBgBorderRadius: edge.labelBgBorderRadius, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, data: edge.data, style: edge.style, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle, markerStart: markerStartUrl, markerEnd: markerEndUrl, pathOptions: 'pathOptions' in edge ? edge.pathOptions : undefined, interactionWidth: edge.interactionWidth })), isReconnectable && (jsx(EdgeUpdateAnchors, { edge: edge, isReconnectable: isReconnectable, reconnectRadius: reconnectRadius, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, setUpdateHover: setUpdateHover, setReconnecting: setReconnecting }))] }) }));\n}\nvar EdgeWrapper$1 = memo(EdgeWrapper);\n\nconst selector$a = (s) => ({\n    edgesFocusable: s.edgesFocusable,\n    edgesReconnectable: s.edgesReconnectable,\n    elementsSelectable: s.elementsSelectable,\n    connectionMode: s.connectionMode,\n    onError: s.onError,\n});\nfunction EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onReconnect, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, reconnectRadius, onEdgeDoubleClick, onReconnectStart, onReconnectEnd, disableKeyboardA11y, }) {\n    const { edgesFocusable, edgesReconnectable, elementsSelectable, onError } = useStore(selector$a, shallow);\n    const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements);\n    return (jsxs(\"div\", { className: \"react-flow__edges\", children: [jsx(MarkerDefinitions$1, { defaultColor: defaultMarkerColor, rfId: rfId }), edgeIds.map((id) => {\n                return (jsx(EdgeWrapper$1, { id: id, edgesFocusable: edgesFocusable, edgesReconnectable: edgesReconnectable, elementsSelectable: elementsSelectable, noPanClassName: noPanClassName, onReconnect: onReconnect, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onClick: onEdgeClick, reconnectRadius: reconnectRadius, onDoubleClick: onEdgeDoubleClick, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, rfId: rfId, onError: onError, edgeTypes: edgeTypes, disableKeyboardA11y: disableKeyboardA11y }, id));\n            })] }));\n}\nEdgeRendererComponent.displayName = 'EdgeRenderer';\nconst EdgeRenderer = memo(EdgeRendererComponent);\n\nconst selector$9 = (s) => `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;\nfunction Viewport({ children }) {\n    const transform = useStore(selector$9);\n    return (jsx(\"div\", { className: \"react-flow__viewport xyflow__viewport react-flow__container\", style: { transform }, children: children }));\n}\n\n/**\n * Hook for calling onInit handler.\n *\n * @internal\n */\nfunction useOnInitHandler(onInit) {\n    const rfInstance = useReactFlow();\n    const isInitialized = useRef(false);\n    useEffect(() => {\n        if (!isInitialized.current && rfInstance.viewportInitialized && onInit) {\n            setTimeout(() => onInit(rfInstance), 1);\n            isInitialized.current = true;\n        }\n    }, [onInit, rfInstance.viewportInitialized]);\n}\n\nconst selector$8 = (state) => state.panZoom?.syncViewport;\n/**\n * Hook for syncing the viewport with the panzoom instance.\n *\n * @internal\n * @param viewport\n */\nfunction useViewportSync(viewport) {\n    const syncViewport = useStore(selector$8);\n    const store = useStoreApi();\n    useEffect(() => {\n        if (viewport) {\n            syncViewport?.(viewport);\n            store.setState({ transform: [viewport.x, viewport.y, viewport.zoom] });\n        }\n    }, [viewport, syncViewport]);\n    return null;\n}\n\nfunction storeSelector$1(s) {\n    return s.connection.inProgress\n        ? { ...s.connection, to: pointToRendererPoint(s.connection.to, s.transform) }\n        : { ...s.connection };\n}\nfunction getSelector(connectionSelector) {\n    if (connectionSelector) {\n        const combinedSelector = (s) => {\n            const connection = storeSelector$1(s);\n            return connectionSelector(connection);\n        };\n        return combinedSelector;\n    }\n    return storeSelector$1;\n}\n/**\n * The `useConnection` hook returns the current connection when there is an active\n * connection interaction. If no connection interaction is active, it returns null\n * for every property. A typical use case for this hook is to colorize handles\n * based on a certain condition (e.g. if the connection is valid or not).\n *\n * @public\n * @param connectionSelector - An optional selector function used to extract a slice of the\n * `ConnectionState` data. Using a selector can prevent component re-renders where data you don't\n * otherwise care about might change. If a selector is not provided, the entire `ConnectionState`\n * object is returned unchanged.\n * @example\n *\n * ```tsx\n *import { useConnection } from '@xyflow/react';\n *\n *function App() {\n *  const connection = useConnection();\n *\n *  return (\n *    <div> {connection ? `Someone is trying to make a connection from ${connection.fromNode} to this one.` : 'There are currently no incoming connections!'}\n *\n *   </div>\n *   );\n * }\n * ```\n *\n * @returns ConnectionState\n */\nfunction useConnection(connectionSelector) {\n    const combinedSelector = getSelector(connectionSelector);\n    return useStore(combinedSelector, shallow);\n}\n\nconst selector$7 = (s) => ({\n    nodesConnectable: s.nodesConnectable,\n    isValid: s.connection.isValid,\n    inProgress: s.connection.inProgress,\n    width: s.width,\n    height: s.height,\n});\nfunction ConnectionLineWrapper({ containerStyle, style, type, component, }) {\n    const { nodesConnectable, width, height, isValid, inProgress } = useStore(selector$7, shallow);\n    const renderConnection = !!(width && nodesConnectable && inProgress);\n    if (!renderConnection) {\n        return null;\n    }\n    return (jsx(\"svg\", { style: containerStyle, width: width, height: height, className: \"react-flow__connectionline react-flow__container\", children: jsx(\"g\", { className: cc(['react-flow__connection', getConnectionStatus(isValid)]), children: jsx(ConnectionLine, { style: style, type: type, CustomComponent: component, isValid: isValid }) }) }));\n}\nconst ConnectionLine = ({ style, type = ConnectionLineType.Bezier, CustomComponent, isValid, }) => {\n    const { inProgress, from, fromNode, fromHandle, fromPosition, to, toNode, toHandle, toPosition, pointer } = useConnection();\n    if (!inProgress) {\n        return;\n    }\n    if (CustomComponent) {\n        return (jsx(CustomComponent, { connectionLineType: type, connectionLineStyle: style, fromNode: fromNode, fromHandle: fromHandle, fromX: from.x, fromY: from.y, toX: to.x, toY: to.y, fromPosition: fromPosition, toPosition: toPosition, connectionStatus: getConnectionStatus(isValid), toNode: toNode, toHandle: toHandle, pointer: pointer }));\n    }\n    let path = '';\n    const pathParams = {\n        sourceX: from.x,\n        sourceY: from.y,\n        sourcePosition: fromPosition,\n        targetX: to.x,\n        targetY: to.y,\n        targetPosition: toPosition,\n    };\n    switch (type) {\n        case ConnectionLineType.Bezier:\n            [path] = getBezierPath(pathParams);\n            break;\n        case ConnectionLineType.SimpleBezier:\n            [path] = getSimpleBezierPath(pathParams);\n            break;\n        case ConnectionLineType.Step:\n            [path] = getSmoothStepPath({\n                ...pathParams,\n                borderRadius: 0,\n            });\n            break;\n        case ConnectionLineType.SmoothStep:\n            [path] = getSmoothStepPath(pathParams);\n            break;\n        default:\n            [path] = getStraightPath(pathParams);\n    }\n    return jsx(\"path\", { d: path, fill: \"none\", className: \"react-flow__connection-path\", style: style });\n};\nConnectionLine.displayName = 'ConnectionLine';\n\nconst emptyTypes = {};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction useNodeOrEdgeTypesWarning(nodeOrEdgeTypes = emptyTypes) {\n    const typesRef = useRef(nodeOrEdgeTypes);\n    const store = useStoreApi();\n    useEffect(() => {\n        if (process.env.NODE_ENV === 'development') {\n            const usedKeys = new Set([...Object.keys(typesRef.current), ...Object.keys(nodeOrEdgeTypes)]);\n            for (const key of usedKeys) {\n                if (typesRef.current[key] !== nodeOrEdgeTypes[key]) {\n                    store.getState().onError?.('002', errorMessages['error002']());\n                    break;\n                }\n            }\n            typesRef.current = nodeOrEdgeTypes;\n        }\n    }, [nodeOrEdgeTypes]);\n}\n\nfunction useStylesLoadedWarning() {\n    const store = useStoreApi();\n    const checked = useRef(false);\n    useEffect(() => {\n        if (process.env.NODE_ENV === 'development') {\n            if (!checked.current) {\n                const pane = document.querySelector('.react-flow__pane');\n                if (pane && !(window.getComputedStyle(pane).zIndex === '1')) {\n                    store.getState().onError?.('013', errorMessages['error013']('react'));\n                }\n                checked.current = true;\n            }\n        }\n    }, []);\n}\n\nfunction GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange, }) {\n    useNodeOrEdgeTypesWarning(nodeTypes);\n    useNodeOrEdgeTypesWarning(edgeTypes);\n    useStylesLoadedWarning();\n    useOnInitHandler(onInit);\n    useViewportSync(viewport);\n    return (jsx(FlowRenderer, { onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, paneClickDistance: paneClickDistance, deleteKeyCode: deleteKeyCode, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, onSelectionContextMenu: onSelectionContextMenu, preventScrolling: preventScrolling, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, onViewportChange: onViewportChange, isControlledViewport: !!viewport, children: jsxs(Viewport, { children: [jsx(EdgeRenderer, { edgeTypes: edgeTypes, onEdgeClick: onEdgeClick, onEdgeDoubleClick: onEdgeDoubleClick, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, onlyRenderVisibleElements: onlyRenderVisibleElements, onEdgeContextMenu: onEdgeContextMenu, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, reconnectRadius: reconnectRadius, defaultMarkerColor: defaultMarkerColor, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, rfId: rfId }), jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsx(\"div\", { className: \"react-flow__edgelabel-renderer\" }), jsx(NodeRenderer, { nodeTypes: nodeTypes, onNodeClick: onNodeClick, onNodeDoubleClick: onNodeDoubleClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, nodeClickDistance: nodeClickDistance, onlyRenderVisibleElements: onlyRenderVisibleElements, noPanClassName: noPanClassName, noDragClassName: noDragClassName, disableKeyboardA11y: disableKeyboardA11y, nodeExtent: nodeExtent, rfId: rfId }), jsx(\"div\", { className: \"react-flow__viewport-portal\" })] }) }));\n}\nGraphViewComponent.displayName = 'GraphView';\nconst GraphView = memo(GraphViewComponent);\n\nconst getInitialState = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom = 0.5, maxZoom = 2, nodeOrigin, nodeExtent, zIndexMode = 'basic', } = {}) => {\n    const nodeLookup = new Map();\n    const parentLookup = new Map();\n    const connectionLookup = new Map();\n    const edgeLookup = new Map();\n    const storeEdges = defaultEdges ?? edges ?? [];\n    const storeNodes = defaultNodes ?? nodes ?? [];\n    const storeNodeOrigin = nodeOrigin ?? [0, 0];\n    const storeNodeExtent = nodeExtent ?? infiniteExtent;\n    updateConnectionLookup(connectionLookup, edgeLookup, storeEdges);\n    const { nodesInitialized } = adoptUserNodes(storeNodes, nodeLookup, parentLookup, {\n        nodeOrigin: storeNodeOrigin,\n        nodeExtent: storeNodeExtent,\n        zIndexMode,\n    });\n    let transform = [0, 0, 1];\n    if (fitView && width && height) {\n        const bounds = getInternalNodesBounds(nodeLookup, {\n            filter: (node) => !!((node.width || node.initialWidth) && (node.height || node.initialHeight)),\n        });\n        const { x, y, zoom } = getViewportForBounds(bounds, width, height, minZoom, maxZoom, fitViewOptions?.padding ?? 0.1);\n        transform = [x, y, zoom];\n    }\n    return {\n        rfId: '1',\n        width: width ?? 0,\n        height: height ?? 0,\n        transform,\n        nodes: storeNodes,\n        nodesInitialized,\n        nodeLookup,\n        parentLookup,\n        edges: storeEdges,\n        edgeLookup,\n        connectionLookup,\n        onNodesChange: null,\n        onEdgesChange: null,\n        hasDefaultNodes: defaultNodes !== undefined,\n        hasDefaultEdges: defaultEdges !== undefined,\n        panZoom: null,\n        minZoom,\n        maxZoom,\n        translateExtent: infiniteExtent,\n        nodeExtent: storeNodeExtent,\n        nodesSelectionActive: false,\n        userSelectionActive: false,\n        userSelectionRect: null,\n        connectionMode: ConnectionMode.Strict,\n        domNode: null,\n        paneDragging: false,\n        noPanClassName: 'nopan',\n        nodeOrigin: storeNodeOrigin,\n        nodeDragThreshold: 1,\n        connectionDragThreshold: 1,\n        snapGrid: [15, 15],\n        snapToGrid: false,\n        nodesDraggable: true,\n        nodesConnectable: true,\n        nodesFocusable: true,\n        edgesFocusable: true,\n        edgesReconnectable: true,\n        elementsSelectable: true,\n        elevateNodesOnSelect: true,\n        elevateEdgesOnSelect: true,\n        selectNodesOnDrag: true,\n        multiSelectionActive: false,\n        fitViewQueued: fitView ?? false,\n        fitViewOptions,\n        fitViewResolver: null,\n        connection: { ...initialConnection },\n        connectionClickStartHandle: null,\n        connectOnClick: true,\n        ariaLiveMessage: '',\n        autoPanOnConnect: true,\n        autoPanOnNodeDrag: true,\n        autoPanOnNodeFocus: true,\n        autoPanSpeed: 15,\n        connectionRadius: 20,\n        onError: devWarn,\n        isValidConnection: undefined,\n        onSelectionChangeHandlers: [],\n        lib: 'react',\n        debug: false,\n        ariaLabelConfig: defaultAriaLabelConfig,\n        zIndexMode,\n        onNodesChangeMiddlewareMap: new Map(),\n        onEdgesChangeMiddlewareMap: new Map(),\n    };\n};\n\nconst createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }) => createWithEqualityFn((set, get) => {\n    async function resolveFitView() {\n        const { nodeLookup, panZoom, fitViewOptions, fitViewResolver, width, height, minZoom, maxZoom } = get();\n        if (!panZoom) {\n            return;\n        }\n        await fitViewport({\n            nodes: nodeLookup,\n            width,\n            height,\n            panZoom,\n            minZoom,\n            maxZoom,\n        }, fitViewOptions);\n        fitViewResolver?.resolve(true);\n        /**\n         * wait for the fitViewport to resolve before deleting the resolver,\n         * we want to reuse the old resolver if the user calls fitView again in the mean time\n         */\n        set({ fitViewResolver: null });\n    }\n    return {\n        ...getInitialState({\n            nodes,\n            edges,\n            width,\n            height,\n            fitView,\n            fitViewOptions,\n            minZoom,\n            maxZoom,\n            nodeOrigin,\n            nodeExtent,\n            defaultNodes,\n            defaultEdges,\n            zIndexMode,\n        }),\n        setNodes: (nodes) => {\n            const { nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect, fitViewQueued, zIndexMode, nodesSelectionActive, } = get();\n            /*\n             * setNodes() is called exclusively in response to user actions:\n             * - either when the `<ReactFlow nodes>` prop is updated in the controlled ReactFlow setup,\n             * - or when the user calls something like `reactFlowInstance.setNodes()` in an uncontrolled ReactFlow setup.\n             *\n             * When this happens, we take the note objects passed by the user and extend them with fields\n             * relevant for internal React Flow operations.\n             */\n            const { nodesInitialized, hasSelectedNodes } = adoptUserNodes(nodes, nodeLookup, parentLookup, {\n                nodeOrigin,\n                nodeExtent,\n                elevateNodesOnSelect,\n                checkEquality: true,\n                zIndexMode,\n            });\n            const nextNodesSelectionActive = nodesSelectionActive && hasSelectedNodes;\n            if (fitViewQueued && nodesInitialized) {\n                resolveFitView();\n                set({\n                    nodes,\n                    nodesInitialized,\n                    fitViewQueued: false,\n                    fitViewOptions: undefined,\n                    nodesSelectionActive: nextNodesSelectionActive\n                });\n            }\n            else {\n                set({ nodes, nodesInitialized, nodesSelectionActive: nextNodesSelectionActive });\n            }\n        },\n        setEdges: (edges) => {\n            const { connectionLookup, edgeLookup } = get();\n            updateConnectionLookup(connectionLookup, edgeLookup, edges);\n            set({ edges });\n        },\n        setDefaultNodesAndEdges: (nodes, edges) => {\n            if (nodes) {\n                const { setNodes } = get();\n                setNodes(nodes);\n                set({ hasDefaultNodes: true });\n            }\n            if (edges) {\n                const { setEdges } = get();\n                setEdges(edges);\n                set({ hasDefaultEdges: true });\n            }\n        },\n        /*\n         * Every node gets registered at a ResizeObserver. Whenever a node\n         * changes its dimensions, this function is called to measure the\n         * new dimensions and update the nodes.\n         */\n        updateNodeInternals: (updates) => {\n            const { triggerNodeChanges, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, debug, fitViewQueued, zIndexMode, } = get();\n            const { changes, updatedInternals } = updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode);\n            if (!updatedInternals) {\n                return;\n            }\n            updateAbsolutePositions(nodeLookup, parentLookup, { nodeOrigin, nodeExtent, zIndexMode });\n            if (fitViewQueued) {\n                resolveFitView();\n                set({ fitViewQueued: false, fitViewOptions: undefined });\n            }\n            else {\n                // we always want to trigger useStore calls whenever updateNodeInternals is called\n                set({});\n            }\n            if (changes?.length > 0) {\n                if (debug) {\n                    console.log('React Flow: trigger node changes', changes);\n                }\n                triggerNodeChanges?.(changes);\n            }\n        },\n        updateNodePositions: (nodeDragItems, dragging = false) => {\n            const parentExpandChildren = [];\n            let changes = [];\n            const { nodeLookup, triggerNodeChanges, connection, updateConnection, onNodesChangeMiddlewareMap } = get();\n            for (const [id, dragItem] of nodeDragItems) {\n                // we are using the nodelookup to be sure to use the current expandParent and parentId value\n                const node = nodeLookup.get(id);\n                const expandParent = !!(node?.expandParent && node?.parentId && dragItem?.position);\n                const change = {\n                    id,\n                    type: 'position',\n                    position: expandParent\n                        ? {\n                            x: Math.max(0, dragItem.position.x),\n                            y: Math.max(0, dragItem.position.y),\n                        }\n                        : dragItem.position,\n                    dragging,\n                };\n                if (node && connection.inProgress && connection.fromNode.id === node.id) {\n                    const updatedFrom = getHandlePosition(node, connection.fromHandle, Position.Left, true);\n                    updateConnection({ ...connection, from: updatedFrom });\n                }\n                if (expandParent && node.parentId) {\n                    parentExpandChildren.push({\n                        id,\n                        parentId: node.parentId,\n                        rect: {\n                            ...dragItem.internals.positionAbsolute,\n                            width: dragItem.measured.width ?? 0,\n                            height: dragItem.measured.height ?? 0,\n                        },\n                    });\n                }\n                changes.push(change);\n            }\n            if (parentExpandChildren.length > 0) {\n                const { parentLookup, nodeOrigin } = get();\n                const parentExpandChanges = handleExpandParent(parentExpandChildren, nodeLookup, parentLookup, nodeOrigin);\n                changes.push(...parentExpandChanges);\n            }\n            for (const middleware of onNodesChangeMiddlewareMap.values()) {\n                changes = middleware(changes);\n            }\n            triggerNodeChanges(changes);\n        },\n        triggerNodeChanges: (changes) => {\n            const { onNodesChange, setNodes, nodes, hasDefaultNodes, debug } = get();\n            if (changes?.length) {\n                if (hasDefaultNodes) {\n                    const updatedNodes = applyNodeChanges(changes, nodes);\n                    setNodes(updatedNodes);\n                }\n                if (debug) {\n                    console.log('React Flow: trigger node changes', changes);\n                }\n                onNodesChange?.(changes);\n            }\n        },\n        triggerEdgeChanges: (changes) => {\n            const { onEdgesChange, setEdges, edges, hasDefaultEdges, debug } = get();\n            if (changes?.length) {\n                if (hasDefaultEdges) {\n                    const updatedEdges = applyEdgeChanges(changes, edges);\n                    setEdges(updatedEdges);\n                }\n                if (debug) {\n                    console.log('React Flow: trigger edge changes', changes);\n                }\n                onEdgesChange?.(changes);\n            }\n        },\n        addSelectedNodes: (selectedNodeIds) => {\n            const { multiSelectionActive, edgeLookup, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get();\n            if (multiSelectionActive) {\n                const nodeChanges = selectedNodeIds.map((nodeId) => createSelectionChange(nodeId, true));\n                triggerNodeChanges(nodeChanges);\n                return;\n            }\n            triggerNodeChanges(getSelectionChanges(nodeLookup, new Set([...selectedNodeIds]), true));\n            triggerEdgeChanges(getSelectionChanges(edgeLookup));\n        },\n        addSelectedEdges: (selectedEdgeIds) => {\n            const { multiSelectionActive, edgeLookup, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get();\n            if (multiSelectionActive) {\n                const changedEdges = selectedEdgeIds.map((edgeId) => createSelectionChange(edgeId, true));\n                triggerEdgeChanges(changedEdges);\n                return;\n            }\n            triggerEdgeChanges(getSelectionChanges(edgeLookup, new Set([...selectedEdgeIds])));\n            triggerNodeChanges(getSelectionChanges(nodeLookup, new Set(), true));\n        },\n        unselectNodesAndEdges: ({ nodes, edges } = {}) => {\n            const { edges: storeEdges, nodes: storeNodes, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get();\n            const nodesToUnselect = nodes ? nodes : storeNodes;\n            const edgesToUnselect = edges ? edges : storeEdges;\n            const nodeChanges = [];\n            for (const node of nodesToUnselect) {\n                if (!node.selected) {\n                    continue; // skip changing nodes that are not selected\n                }\n                const internalNode = nodeLookup.get(node.id);\n                if (internalNode) {\n                    /*\n                     * we need to unselect the internal node that was selected previously before we\n                     * send the change to the user to prevent it to be selected while dragging the new node\n                     */\n                    internalNode.selected = false;\n                }\n                nodeChanges.push(createSelectionChange(node.id, false));\n            }\n            const edgeChanges = [];\n            for (const edge of edgesToUnselect) {\n                if (!edge.selected) {\n                    continue; // skip changing edges that are not selected\n                }\n                edgeChanges.push(createSelectionChange(edge.id, false));\n            }\n            triggerNodeChanges(nodeChanges);\n            triggerEdgeChanges(edgeChanges);\n        },\n        setMinZoom: (minZoom) => {\n            const { panZoom, maxZoom } = get();\n            panZoom?.setScaleExtent([minZoom, maxZoom]);\n            set({ minZoom });\n        },\n        setMaxZoom: (maxZoom) => {\n            const { panZoom, minZoom } = get();\n            panZoom?.setScaleExtent([minZoom, maxZoom]);\n            set({ maxZoom });\n        },\n        setTranslateExtent: (translateExtent) => {\n            get().panZoom?.setTranslateExtent(translateExtent);\n            set({ translateExtent });\n        },\n        resetSelectedElements: () => {\n            const { edges, nodes, triggerNodeChanges, triggerEdgeChanges, elementsSelectable } = get();\n            if (!elementsSelectable) {\n                return;\n            }\n            const nodeChanges = nodes.reduce((res, node) => (node.selected ? [...res, createSelectionChange(node.id, false)] : res), []);\n            const edgeChanges = edges.reduce((res, edge) => (edge.selected ? [...res, createSelectionChange(edge.id, false)] : res), []);\n            triggerNodeChanges(nodeChanges);\n            triggerEdgeChanges(edgeChanges);\n        },\n        setNodeExtent: (nextNodeExtent) => {\n            const { nodes, nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect, nodeExtent, zIndexMode } = get();\n            if (nextNodeExtent[0][0] === nodeExtent[0][0] &&\n                nextNodeExtent[0][1] === nodeExtent[0][1] &&\n                nextNodeExtent[1][0] === nodeExtent[1][0] &&\n                nextNodeExtent[1][1] === nodeExtent[1][1]) {\n                return;\n            }\n            adoptUserNodes(nodes, nodeLookup, parentLookup, {\n                nodeOrigin,\n                nodeExtent: nextNodeExtent,\n                elevateNodesOnSelect,\n                checkEquality: false,\n                zIndexMode,\n            });\n            set({ nodeExtent: nextNodeExtent });\n        },\n        panBy: (delta) => {\n            const { transform, width, height, panZoom, translateExtent } = get();\n            return panBy({ delta, panZoom, transform, translateExtent, width, height });\n        },\n        setCenter: async (x, y, options) => {\n            const { width, height, maxZoom, panZoom } = get();\n            if (!panZoom) {\n                return Promise.resolve(false);\n            }\n            const nextZoom = typeof options?.zoom !== 'undefined' ? options.zoom : maxZoom;\n            await panZoom.setViewport({\n                x: width / 2 - x * nextZoom,\n                y: height / 2 - y * nextZoom,\n                zoom: nextZoom,\n            }, { duration: options?.duration, ease: options?.ease, interpolate: options?.interpolate });\n            return Promise.resolve(true);\n        },\n        cancelConnection: () => {\n            set({\n                connection: { ...initialConnection },\n            });\n        },\n        updateConnection: (connection) => {\n            set({ connection });\n        },\n        reset: () => set({ ...getInitialState() }),\n    };\n}, Object.is);\n\n/**\n * The `<ReactFlowProvider />` component is a [context provider](https://react.dev/learn/passing-data-deeply-with-context#)\n * that makes it possible to access a flow's internal state outside of the\n * [`<ReactFlow />`](/api-reference/react-flow) component. Many of the hooks we\n * provide rely on this component to work.\n * @public\n *\n * @example\n * ```tsx\n *import { ReactFlow, ReactFlowProvider, useNodes } from '@xyflow/react'\n *\n *export default function Flow() {\n *  return (\n *    <ReactFlowProvider>\n *      <ReactFlow nodes={...} edges={...} />\n *      <Sidebar />\n *    </ReactFlowProvider>\n *  );\n *}\n *\n *function Sidebar() {\n *  // This hook will only work if the component it's used in is a child of a\n *  // <ReactFlowProvider />.\n *  const nodes = useNodes()\n *\n *  return <aside>do something with nodes</aside>;\n *}\n *```\n *\n * @remarks If you're using a router and want your flow's state to persist across routes,\n * it's vital that you place the `<ReactFlowProvider />` component _outside_ of\n * your router. If you have multiple flows on the same page you will need to use a separate\n * `<ReactFlowProvider />` for each flow.\n */\nfunction ReactFlowProvider({ initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, initialMinZoom: minZoom, initialMaxZoom: maxZoom, initialFitViewOptions: fitViewOptions, fitView, nodeOrigin, nodeExtent, zIndexMode, children, }) {\n    const [store] = useState(() => createStore({\n        nodes,\n        edges,\n        defaultNodes,\n        defaultEdges,\n        width,\n        height,\n        fitView,\n        minZoom,\n        maxZoom,\n        fitViewOptions,\n        nodeOrigin,\n        nodeExtent,\n        zIndexMode,\n    }));\n    return (jsx(Provider$1, { value: store, children: jsx(BatchProvider, { children: children }) }));\n}\n\nfunction Wrapper({ children, nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }) {\n    const isWrapped = useContext(StoreContext);\n    if (isWrapped) {\n        /*\n         * we need to wrap it with a fragment because it's not allowed for children to be a ReactNode\n         * https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18051\n         */\n        return jsx(Fragment, { children: children });\n    }\n    return (jsx(ReactFlowProvider, { initialNodes: nodes, initialEdges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, initialWidth: width, initialHeight: height, fitView: fitView, initialFitViewOptions: fitViewOptions, initialMinZoom: minZoom, initialMaxZoom: maxZoom, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, zIndexMode: zIndexMode, children: children }));\n}\n\nconst wrapperStyle = {\n    width: '100%',\n    height: '100%',\n    overflow: 'hidden',\n    position: 'relative',\n    zIndex: 0,\n};\nfunction ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes, edgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onBeforeDelete, connectionMode, connectionLineType = ConnectionLineType.Bezier, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, deleteKeyCode = 'Backspace', selectionKeyCode = 'Shift', selectionOnDrag = false, selectionMode = SelectionMode.Full, panActivationKeyCode = 'Space', multiSelectionKeyCode = isMacOs() ? 'Meta' : 'Control', zoomActivationKeyCode = isMacOs() ? 'Meta' : 'Control', snapToGrid, snapGrid, onlyRenderVisibleElements = false, selectNodesOnDrag, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, nodeOrigin = defaultNodeOrigin, edgesFocusable, edgesReconnectable, elementsSelectable = true, defaultViewport: defaultViewport$1 = defaultViewport, minZoom = 0.5, maxZoom = 2, translateExtent = infiniteExtent, preventScrolling = true, nodeExtent, defaultMarkerColor = '#b1b1b7', zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance = 1, nodeClickDistance = 0, children, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius = 10, onNodesChange, onEdgesChange, noDragClassName = 'nodrag', noWheelClassName = 'nowheel', noPanClassName = 'nopan', fitView, fitViewOptions, connectOnClick, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect = true, elevateEdgesOnSelect = false, disableKeyboardA11y = false, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, connectionRadius, isValidConnection, onError, style, id, nodeDragThreshold, connectionDragThreshold, viewport, onViewportChange, width, height, colorMode = 'light', debug, onScroll, ariaLabelConfig, zIndexMode = 'basic', ...rest }, ref) {\n    const rfId = id || '1';\n    const colorModeClassName = useColorModeClass(colorMode);\n    // Undo scroll events, preventing viewport from shifting when nodes outside of it are focused\n    const wrapperOnScroll = useCallback((e) => {\n        e.currentTarget.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n        onScroll?.(e);\n    }, [onScroll]);\n    return (jsx(\"div\", { \"data-testid\": \"rf__wrapper\", ...rest, onScroll: wrapperOnScroll, style: { ...style, ...wrapperStyle }, ref: ref, className: cc(['react-flow', className, colorModeClassName]), id: id, role: \"application\", children: jsxs(Wrapper, { nodes: nodes, edges: edges, width: width, height: height, fitView: fitView, fitViewOptions: fitViewOptions, minZoom: minZoom, maxZoom: maxZoom, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, zIndexMode: zIndexMode, children: [jsx(StoreUpdater, { nodes: nodes, edges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, onConnect: onConnect, onConnectStart: onConnectStart, onConnectEnd: onConnectEnd, onClickConnectStart: onClickConnectStart, onClickConnectEnd: onClickConnectEnd, nodesDraggable: nodesDraggable, autoPanOnNodeFocus: autoPanOnNodeFocus, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, edgesFocusable: edgesFocusable, edgesReconnectable: edgesReconnectable, elementsSelectable: elementsSelectable, elevateNodesOnSelect: elevateNodesOnSelect, elevateEdgesOnSelect: elevateEdgesOnSelect, minZoom: minZoom, maxZoom: maxZoom, nodeExtent: nodeExtent, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, snapToGrid: snapToGrid, snapGrid: snapGrid, connectionMode: connectionMode, translateExtent: translateExtent, connectOnClick: connectOnClick, defaultEdgeOptions: defaultEdgeOptions, fitView: fitView, fitViewOptions: fitViewOptions, onNodesDelete: onNodesDelete, onEdgesDelete: onEdgesDelete, onDelete: onDelete, onNodeDragStart: onNodeDragStart, onNodeDrag: onNodeDrag, onNodeDragStop: onNodeDragStop, onSelectionDrag: onSelectionDrag, onSelectionDragStart: onSelectionDragStart, onSelectionDragStop: onSelectionDragStop, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, noPanClassName: noPanClassName, nodeOrigin: nodeOrigin, rfId: rfId, autoPanOnConnect: autoPanOnConnect, autoPanOnNodeDrag: autoPanOnNodeDrag, autoPanSpeed: autoPanSpeed, onError: onError, connectionRadius: connectionRadius, isValidConnection: isValidConnection, selectNodesOnDrag: selectNodesOnDrag, nodeDragThreshold: nodeDragThreshold, connectionDragThreshold: connectionDragThreshold, onBeforeDelete: onBeforeDelete, debug: debug, ariaLabelConfig: ariaLabelConfig, zIndexMode: zIndexMode }), jsx(GraphView, { onInit: onInit, onNodeClick: onNodeClick, onEdgeClick: onEdgeClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, onNodeDoubleClick: onNodeDoubleClick, nodeTypes: nodeTypes, edgeTypes: edgeTypes, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle, connectionLineComponent: connectionLineComponent, connectionLineContainerStyle: connectionLineContainerStyle, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, deleteKeyCode: deleteKeyCode, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, onlyRenderVisibleElements: onlyRenderVisibleElements, defaultViewport: defaultViewport$1, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, preventScrolling: preventScrolling, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneScroll: onPaneScroll, onPaneContextMenu: onPaneContextMenu, paneClickDistance: paneClickDistance, nodeClickDistance: nodeClickDistance, onSelectionContextMenu: onSelectionContextMenu, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, onEdgeContextMenu: onEdgeContextMenu, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, reconnectRadius: reconnectRadius, defaultMarkerColor: defaultMarkerColor, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, rfId: rfId, disableKeyboardA11y: disableKeyboardA11y, nodeExtent: nodeExtent, viewport: viewport, onViewportChange: onViewportChange }), jsx(SelectionListener, { onSelectionChange: onSelectionChange }), children, jsx(Attribution, { proOptions: proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId: rfId, disableKeyboardA11y: disableKeyboardA11y })] }) }));\n}\n/**\n * The `<ReactFlow />` component is the heart of your React Flow application.\n * It renders your nodes and edges and handles user interaction\n *\n * @public\n *\n * @example\n * ```tsx\n *import { ReactFlow } from '@xyflow/react'\n *\n *export default function Flow() {\n *  return (<ReactFlow\n *    nodes={...}\n *    edges={...}\n *    onNodesChange={...}\n *    ...\n *  />);\n *}\n *```\n */\nvar index = fixedForwardRef(ReactFlow);\n\nconst selector$6 = (s) => s.domNode?.querySelector('.react-flow__edgelabel-renderer');\n/**\n * Edges are SVG-based. If you want to render more complex labels you can use the\n * `<EdgeLabelRenderer />` component to access a div based renderer. This component\n * is a portal that renders the label in a `<div />` that is positioned on top of\n * the edges. You can see an example usage of the component in the\n * [edge label renderer example](/examples/edges/edge-label-renderer).\n * @public\n *\n * @example\n * ```jsx\n * import React from 'react';\n * import { getBezierPath, EdgeLabelRenderer, BaseEdge } from '@xyflow/react';\n *\n * export function CustomEdge({ id, data, ...props }) {\n *   const [edgePath, labelX, labelY] = getBezierPath(props);\n *\n *   return (\n *     <>\n *       <BaseEdge id={id} path={edgePath} />\n *       <EdgeLabelRenderer>\n *         <div\n *           style={{\n *             position: 'absolute',\n *             transform: `translate(-50%, -50%) translate(${labelX}px,${labelY}px)`,\n *             background: '#ffcc00',\n *             padding: 10,\n *         }}\n *           className=\"nodrag nopan\"\n *         >\n *          {data.label}\n *         </div>\n *       </EdgeLabelRenderer>\n *     </>\n *   );\n * };\n * ```\n *\n * @remarks The `<EdgeLabelRenderer />` has no pointer events by default. If you want to\n * add mouse interactions you need to set the style `pointerEvents: all` and add\n * the `nopan` class on the label or the element you want to interact with.\n */\nfunction EdgeLabelRenderer({ children }) {\n    const edgeLabelRenderer = useStore(selector$6);\n    if (!edgeLabelRenderer) {\n        return null;\n    }\n    return createPortal(children, edgeLabelRenderer);\n}\n\nconst selector$5 = (s) => s.domNode?.querySelector('.react-flow__viewport-portal');\n/**\n * The `<ViewportPortal />` component can be used to add components to the same viewport\n * of the flow where nodes and edges are rendered. This is useful when you want to render\n * your own components that are adhere to the same coordinate system as the nodes & edges\n * and are also affected by zooming and panning\n * @public\n * @example\n *\n * ```jsx\n *import React from 'react';\n *import { ViewportPortal } from '@xyflow/react';\n *\n *export default function () {\n *  return (\n *    <ViewportPortal>\n *      <div\n *        style={{ transform: 'translate(100px, 100px)', position: 'absolute' }}\n *      >\n *        This div is positioned at [100, 100] on the flow.\n *      </div>\n *    </ViewportPortal>\n *  );\n *}\n *```\n */\nfunction ViewportPortal({ children }) {\n    const viewPortalDiv = useStore(selector$5);\n    if (!viewPortalDiv) {\n        return null;\n    }\n    return createPortal(children, viewPortalDiv);\n}\n\n/**\n * When you programmatically add or remove handles to a node or update a node's\n * handle position, you need to let React Flow know about it using this hook. This\n * will update the internal dimensions of the node and properly reposition handles\n * on the canvas if necessary.\n *\n * @public\n * @returns Use this function to tell React Flow to update the internal state of one or more nodes\n * that you have changed programmatically.\n *\n * @example\n * ```jsx\n *import { useCallback, useState } from 'react';\n *import { Handle, useUpdateNodeInternals } from '@xyflow/react';\n *\n *export default function RandomHandleNode({ id }) {\n *  const updateNodeInternals = useUpdateNodeInternals();\n *  const [handleCount, setHandleCount] = useState(0);\n *  const randomizeHandleCount = useCallback(() => {\n *   setHandleCount(Math.floor(Math.random() * 10));\n *    updateNodeInternals(id);\n *  }, [id, updateNodeInternals]);\n *\n *  return (\n *    <>\n *      {Array.from({ length: handleCount }).map((_, index) => (\n *        <Handle\n *          key={index}\n *          type=\"target\"\n *          position=\"left\"\n *          id={`handle-${index}`}\n *        />\n *      ))}\n *\n *      <div>\n *        <button onClick={randomizeHandleCount}>Randomize handle count</button>\n *        <p>There are {handleCount} handles on this node.</p>\n *      </div>\n *    </>\n *  );\n *}\n *```\n * @remarks This hook can only be used in a component that is a child of a\n *{@link ReactFlowProvider} or a {@link ReactFlow} component.\n */\nfunction useUpdateNodeInternals() {\n    const store = useStoreApi();\n    return useCallback((id) => {\n        const { domNode, updateNodeInternals } = store.getState();\n        const updateIds = Array.isArray(id) ? id : [id];\n        const updates = new Map();\n        updateIds.forEach((updateId) => {\n            const nodeElement = domNode?.querySelector(`.react-flow__node[data-id=\"${updateId}\"]`);\n            if (nodeElement) {\n                updates.set(updateId, { id: updateId, nodeElement, force: true });\n            }\n        });\n        requestAnimationFrame(() => updateNodeInternals(updates, { triggerFitView: false }));\n    }, []);\n}\n\nconst nodesSelector = (state) => state.nodes;\n/**\n * This hook returns an array of the current nodes. Components that use this hook\n * will re-render **whenever any node changes**, including when a node is selected\n * or moved.\n *\n * @public\n * @returns An array of all nodes currently in the flow.\n *\n * @example\n * ```jsx\n *import { useNodes } from '@xyflow/react';\n *\n *export default function() {\n *  const nodes = useNodes();\n *\n *  return <div>There are currently {nodes.length} nodes!</div>;\n *}\n *```\n */\nfunction useNodes() {\n    const nodes = useStore(nodesSelector, shallow);\n    return nodes;\n}\n\nconst edgesSelector = (state) => state.edges;\n/**\n * This hook returns an array of the current edges. Components that use this hook\n * will re-render **whenever any edge changes**.\n *\n * @public\n * @returns An array of all edges currently in the flow.\n *\n * @example\n * ```tsx\n *import { useEdges } from '@xyflow/react';\n *\n *export default function () {\n *  const edges = useEdges();\n *\n *  return <div>There are currently {edges.length} edges!</div>;\n *}\n *```\n */\nfunction useEdges() {\n    const edges = useStore(edgesSelector, shallow);\n    return edges;\n}\n\nconst viewportSelector = (state) => ({\n    x: state.transform[0],\n    y: state.transform[1],\n    zoom: state.transform[2],\n});\n/**\n * The `useViewport` hook is a convenient way to read the current state of the\n * {@link Viewport} in a component. Components that use this hook\n * will re-render **whenever the viewport changes**.\n *\n * @public\n * @returns The current viewport.\n *\n * @example\n *\n *```jsx\n *import { useViewport } from '@xyflow/react';\n *\n *export default function ViewportDisplay() {\n *  const { x, y, zoom } = useViewport();\n *\n *  return (\n *    <div>\n *      <p>\n *        The viewport is currently at ({x}, {y}) and zoomed to {zoom}.\n *      </p>\n *    </div>\n *  );\n *}\n *```\n *\n * @remarks This hook can only be used in a component that is a child of a\n *{@link ReactFlowProvider} or a {@link ReactFlow} component.\n */\nfunction useViewport() {\n    const viewport = useStore(viewportSelector, shallow);\n    return viewport;\n}\n\n/**\n * This hook makes it easy to prototype a controlled flow where you manage the\n * state of nodes and edges outside the `ReactFlowInstance`. You can think of it\n * like React's `useState` hook with an additional helper callback.\n *\n * @public\n * @returns\n * - `nodes`: The current array of nodes. You might pass this directly to the `nodes` prop of your\n * `<ReactFlow />` component, or you may want to manipulate it first to perform some layouting,\n * for example.\n * - `setNodes`: A function that you can use to update the nodes. You can pass it a new array of\n * nodes or a callback that receives the current array of nodes and returns a new array of nodes.\n * This is the same as the second element of the tuple returned by React's `useState` hook.\n * - `onNodesChange`: A handy callback that can take an array of `NodeChanges` and update the nodes\n * state accordingly. You'll typically pass this directly to the `onNodesChange` prop of your\n * `<ReactFlow />` component.\n * @example\n *\n *```tsx\n *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react';\n *\n *const initialNodes = [];\n *const initialEdges = [];\n *\n *export default function () {\n *  const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);\n *  const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);\n *\n *  return (\n *    <ReactFlow\n *      nodes={nodes}\n *      edges={edges}\n *      onNodesChange={onNodesChange}\n *      onEdgesChange={onEdgesChange}\n *    />\n *  );\n *}\n *```\n *\n * @remarks This hook was created to make prototyping easier and our documentation\n * examples clearer. Although it is OK to use this hook in production, in\n * practice you may want to use a more sophisticated state management solution\n * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead.\n *\n */\nfunction useNodesState(initialNodes) {\n    const [nodes, setNodes] = useState(initialNodes);\n    const onNodesChange = useCallback((changes) => setNodes((nds) => applyNodeChanges(changes, nds)), []);\n    return [nodes, setNodes, onNodesChange];\n}\n/**\n * This hook makes it easy to prototype a controlled flow where you manage the\n * state of nodes and edges outside the `ReactFlowInstance`. You can think of it\n * like React's `useState` hook with an additional helper callback.\n *\n * @public\n * @returns\n * - `edges`: The current array of edges. You might pass this directly to the `edges` prop of your\n * `<ReactFlow />` component, or you may want to manipulate it first to perform some layouting,\n * for example.\n *\n * - `setEdges`: A function that you can use to update the edges. You can pass it a new array of\n * edges or a callback that receives the current array of edges and returns a new array of edges.\n * This is the same as the second element of the tuple returned by React's `useState` hook.\n *\n * - `onEdgesChange`: A handy callback that can take an array of `EdgeChanges` and update the edges\n * state accordingly. You'll typically pass this directly to the `onEdgesChange` prop of your\n * `<ReactFlow />` component.\n * @example\n *\n *```tsx\n *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react';\n *\n *const initialNodes = [];\n *const initialEdges = [];\n *\n *export default function () {\n *  const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);\n *  const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);\n *\n *  return (\n *    <ReactFlow\n *      nodes={nodes}\n *      edges={edges}\n *      onNodesChange={onNodesChange}\n *      onEdgesChange={onEdgesChange}\n *    />\n *  );\n *}\n *```\n *\n * @remarks This hook was created to make prototyping easier and our documentation\n * examples clearer. Although it is OK to use this hook in production, in\n * practice you may want to use a more sophisticated state management solution\n * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead.\n *\n */\nfunction useEdgesState(initialEdges) {\n    const [edges, setEdges] = useState(initialEdges);\n    const onEdgesChange = useCallback((changes) => setEdges((eds) => applyEdgeChanges(changes, eds)), []);\n    return [edges, setEdges, onEdgesChange];\n}\n\n/**\n * The `useOnViewportChange` hook lets you listen for changes to the viewport such\n * as panning and zooming. You can provide a callback for each phase of a viewport\n * change: `onStart`, `onChange`, and `onEnd`.\n *\n * @public\n * @example\n * ```jsx\n *import { useCallback } from 'react';\n *import { useOnViewportChange } from '@xyflow/react';\n *\n *function ViewportChangeLogger() {\n *  useOnViewportChange({\n *    onStart: (viewport: Viewport) => console.log('start', viewport),\n *    onChange: (viewport: Viewport) => console.log('change', viewport),\n *    onEnd: (viewport: Viewport) => console.log('end', viewport),\n *  });\n *\n *  return null;\n *}\n *```\n */\nfunction useOnViewportChange({ onStart, onChange, onEnd }) {\n    const store = useStoreApi();\n    useEffect(() => {\n        store.setState({ onViewportChangeStart: onStart });\n    }, [onStart]);\n    useEffect(() => {\n        store.setState({ onViewportChange: onChange });\n    }, [onChange]);\n    useEffect(() => {\n        store.setState({ onViewportChangeEnd: onEnd });\n    }, [onEnd]);\n}\n\n/**\n * This hook lets you listen for changes to both node and edge selection. As the\n *name implies, the callback you provide will be called whenever the selection of\n *_either_ nodes or edges changes.\n *\n * @public\n * @example\n * ```jsx\n *import { useState } from 'react';\n *import { ReactFlow, useOnSelectionChange } from '@xyflow/react';\n *\n *function SelectionDisplay() {\n *  const [selectedNodes, setSelectedNodes] = useState([]);\n *  const [selectedEdges, setSelectedEdges] = useState([]);\n *\n *  // the passed handler has to be memoized, otherwise the hook will not work correctly\n *  const onChange = useCallback(({ nodes, edges }) => {\n *    setSelectedNodes(nodes.map((node) => node.id));\n *    setSelectedEdges(edges.map((edge) => edge.id));\n *  }, []);\n *\n *  useOnSelectionChange({\n *    onChange,\n *  });\n *\n *  return (\n *    <div>\n *      <p>Selected nodes: {selectedNodes.join(', ')}</p>\n *      <p>Selected edges: {selectedEdges.join(', ')}</p>\n *    </div>\n *  );\n *}\n *```\n *\n * @remarks You need to memoize the passed `onChange` handler, otherwise the hook will not work correctly.\n */\nfunction useOnSelectionChange({ onChange, }) {\n    const store = useStoreApi();\n    useEffect(() => {\n        const nextOnSelectionChangeHandlers = [...store.getState().onSelectionChangeHandlers, onChange];\n        store.setState({ onSelectionChangeHandlers: nextOnSelectionChangeHandlers });\n        return () => {\n            const nextHandlers = store.getState().onSelectionChangeHandlers.filter((fn) => fn !== onChange);\n            store.setState({ onSelectionChangeHandlers: nextHandlers });\n        };\n    }, [onChange]);\n}\n\nconst selector$4 = (options) => (s) => {\n    if (!options.includeHiddenNodes) {\n        return s.nodesInitialized;\n    }\n    if (s.nodeLookup.size === 0) {\n        return false;\n    }\n    for (const [, { internals }] of s.nodeLookup) {\n        if (internals.handleBounds === undefined || !nodeHasDimensions(internals.userNode)) {\n            return false;\n        }\n    }\n    return true;\n};\n/**\n * This hook tells you whether all the nodes in a flow have been measured and given\n *a width and height. When you add a node to the flow, this hook will return\n *`false` and then `true` again once the node has been measured.\n *\n * @public\n * @returns Whether or not the nodes have been initialized by the `<ReactFlow />` component and\n * given a width and height.\n *\n * @example\n * ```jsx\n *import { useReactFlow, useNodesInitialized } from '@xyflow/react';\n *import { useEffect, useState } from 'react';\n *\n *const options = {\n *  includeHiddenNodes: false,\n *};\n *\n *export default function useLayout() {\n *  const { getNodes } = useReactFlow();\n *  const nodesInitialized = useNodesInitialized(options);\n *  const [layoutedNodes, setLayoutedNodes] = useState(getNodes());\n *\n *  useEffect(() => {\n *    if (nodesInitialized) {\n *      setLayoutedNodes(yourLayoutingFunction(getNodes()));\n *    }\n *  }, [nodesInitialized]);\n *\n *  return layoutedNodes;\n *}\n *```\n */\nfunction useNodesInitialized(options = {\n    includeHiddenNodes: false,\n}) {\n    const initialized = useStore(selector$4(options));\n    return initialized;\n}\n\n/**\n * Hook to check if a <Handle /> is connected to another <Handle /> and get the connections.\n *\n * @public\n * @deprecated Use `useNodeConnections` instead.\n * @returns An array with handle connections.\n */\nfunction useHandleConnections({ type, id, nodeId, onConnect, onDisconnect, }) {\n    console.warn('[DEPRECATED] `useHandleConnections` is deprecated. Instead use `useNodeConnections` https://reactflow.dev/api-reference/hooks/useNodeConnections');\n    const _nodeId = useNodeId();\n    const currentNodeId = nodeId ?? _nodeId;\n    const prevConnections = useRef(null);\n    const connections = useStore((state) => state.connectionLookup.get(`${currentNodeId}-${type}${id ? `-${id}` : ''}`), areConnectionMapsEqual);\n    useEffect(() => {\n        // @todo discuss if onConnect/onDisconnect should be called when the component mounts/unmounts\n        if (prevConnections.current && prevConnections.current !== connections) {\n            const _connections = connections ?? new Map();\n            handleConnectionChange(prevConnections.current, _connections, onDisconnect);\n            handleConnectionChange(_connections, prevConnections.current, onConnect);\n        }\n        prevConnections.current = connections ?? new Map();\n    }, [connections, onConnect, onDisconnect]);\n    return useMemo(() => Array.from(connections?.values() ?? []), [connections]);\n}\n\nconst error014 = errorMessages['error014']();\n/**\n * This hook returns an array of connections on a specific node, handle type ('source', 'target') or handle ID.\n *\n * @public\n * @returns An array with connections.\n *\n * @example\n * ```jsx\n *import { useNodeConnections } from '@xyflow/react';\n *\n *export default function () {\n *  const connections = useNodeConnections({\n *    handleType: 'target',\n *    handleId: 'my-handle',\n *  });\n *\n *  return (\n *    <div>There are currently {connections.length} incoming connections!</div>\n *  );\n *}\n *```\n */\nfunction useNodeConnections({ id, handleType, handleId, onConnect, onDisconnect, } = {}) {\n    const nodeId = useNodeId();\n    const currentNodeId = id ?? nodeId;\n    if (!currentNodeId) {\n        throw new Error(error014);\n    }\n    const prevConnections = useRef(null);\n    const connections = useStore((state) => state.connectionLookup.get(`${currentNodeId}${handleType ? (handleId ? `-${handleType}-${handleId}` : `-${handleType}`) : ''}`), areConnectionMapsEqual);\n    useEffect(() => {\n        // @todo discuss if onConnect/onDisconnect should be called when the component mounts/unmounts\n        if (prevConnections.current && prevConnections.current !== connections) {\n            const _connections = connections ?? new Map();\n            handleConnectionChange(prevConnections.current, _connections, onDisconnect);\n            handleConnectionChange(_connections, prevConnections.current, onConnect);\n        }\n        prevConnections.current = connections ?? new Map();\n    }, [connections, onConnect, onDisconnect]);\n    return useMemo(() => Array.from(connections?.values() ?? []), [connections]);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction useNodesData(nodeIds) {\n    const nodesData = useStore(useCallback((s) => {\n        const data = [];\n        const isArrayOfIds = Array.isArray(nodeIds);\n        const _nodeIds = isArrayOfIds ? nodeIds : [nodeIds];\n        for (const nodeId of _nodeIds) {\n            const node = s.nodeLookup.get(nodeId);\n            if (node) {\n                data.push({\n                    id: node.id,\n                    type: node.type,\n                    data: node.data,\n                });\n            }\n        }\n        return isArrayOfIds ? data : data[0] ?? null;\n    }, [nodeIds]), shallowNodeData);\n    return nodesData;\n}\n\n/**\n * This hook returns the internal representation of a specific node.\n * Components that use this hook will re-render **whenever the node changes**,\n * including when a node is selected or moved.\n *\n * @public\n * @param id - The ID of a node you want to observe.\n * @returns The `InternalNode` object for the node with the given ID.\n *\n * @example\n * ```tsx\n *import { useInternalNode } from '@xyflow/react';\n *\n *export default function () {\n *  const internalNode = useInternalNode('node-1');\n *  const absolutePosition = internalNode.internals.positionAbsolute;\n *\n *  return (\n *    <div>\n *      The absolute position of the node is at:\n *      <p>x: {absolutePosition.x}</p>\n *      <p>y: {absolutePosition.y}</p>\n *    </div>\n *  );\n *}\n *```\n */\nfunction useInternalNode(id) {\n    const node = useStore(useCallback((s) => s.nodeLookup.get(id), [id]), shallow);\n    return node;\n}\n\n/**\n * Registers a middleware function to transform node changes.\n *\n * @public\n * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration.\n */\nfunction experimental_useOnNodesChangeMiddleware(fn) {\n    const store = useStoreApi();\n    const [symbol] = useState(() => Symbol());\n    useEffect(() => {\n        const { onNodesChangeMiddlewareMap } = store.getState();\n        onNodesChangeMiddlewareMap.set(symbol, fn);\n    }, [fn]);\n    useEffect(() => {\n        const { onNodesChangeMiddlewareMap } = store.getState();\n        return () => {\n            onNodesChangeMiddlewareMap.delete(symbol);\n        };\n    }, []);\n}\n\n/**\n * Registers a middleware function to transform edge changes.\n *\n * @public\n * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration.\n */\nfunction experimental_useOnEdgesChangeMiddleware(fn) {\n    const store = useStoreApi();\n    const [symbol] = useState(() => Symbol());\n    useEffect(() => {\n        const { onEdgesChangeMiddlewareMap } = store.getState();\n        onEdgesChangeMiddlewareMap.set(symbol, fn);\n    }, [fn]);\n    useEffect(() => {\n        const { onEdgesChangeMiddlewareMap } = store.getState();\n        return () => {\n            onEdgesChangeMiddlewareMap.delete(symbol);\n        };\n    }, []);\n}\n\nfunction LinePattern({ dimensions, lineWidth, variant, className }) {\n    return (jsx(\"path\", { strokeWidth: lineWidth, d: `M${dimensions[0] / 2} 0 V${dimensions[1]} M0 ${dimensions[1] / 2} H${dimensions[0]}`, className: cc(['react-flow__background-pattern', variant, className]) }));\n}\nfunction DotPattern({ radius, className }) {\n    return (jsx(\"circle\", { cx: radius, cy: radius, r: radius, className: cc(['react-flow__background-pattern', 'dots', className]) }));\n}\n\n/**\n * The three variants are exported as an enum for convenience. You can either import\n * the enum and use it like `BackgroundVariant.Lines` or you can use the raw string\n * value directly.\n * @public\n */\nvar BackgroundVariant;\n(function (BackgroundVariant) {\n    BackgroundVariant[\"Lines\"] = \"lines\";\n    BackgroundVariant[\"Dots\"] = \"dots\";\n    BackgroundVariant[\"Cross\"] = \"cross\";\n})(BackgroundVariant || (BackgroundVariant = {}));\n\nconst defaultSize = {\n    [BackgroundVariant.Dots]: 1,\n    [BackgroundVariant.Lines]: 1,\n    [BackgroundVariant.Cross]: 6,\n};\nconst selector$3 = (s) => ({ transform: s.transform, patternId: `pattern-${s.rfId}` });\nfunction BackgroundComponent({ id, variant = BackgroundVariant.Dots, \n// only used for dots and cross\ngap = 20, \n// only used for lines and cross\nsize, lineWidth = 1, offset = 0, color, bgColor, style, className, patternClassName, }) {\n    const ref = useRef(null);\n    const { transform, patternId } = useStore(selector$3, shallow);\n    const patternSize = size || defaultSize[variant];\n    const isDots = variant === BackgroundVariant.Dots;\n    const isCross = variant === BackgroundVariant.Cross;\n    const gapXY = Array.isArray(gap) ? gap : [gap, gap];\n    const scaledGap = [gapXY[0] * transform[2] || 1, gapXY[1] * transform[2] || 1];\n    const scaledSize = patternSize * transform[2];\n    const offsetXY = Array.isArray(offset) ? offset : [offset, offset];\n    const patternDimensions = isCross ? [scaledSize, scaledSize] : scaledGap;\n    const scaledOffset = [\n        offsetXY[0] * transform[2] || 1 + patternDimensions[0] / 2,\n        offsetXY[1] * transform[2] || 1 + patternDimensions[1] / 2,\n    ];\n    const _patternId = `${patternId}${id ? id : ''}`;\n    return (jsxs(\"svg\", { className: cc(['react-flow__background', className]), style: {\n            ...style,\n            ...containerStyle,\n            '--xy-background-color-props': bgColor,\n            '--xy-background-pattern-color-props': color,\n        }, ref: ref, \"data-testid\": \"rf__background\", children: [jsx(\"pattern\", { id: _patternId, x: transform[0] % scaledGap[0], y: transform[1] % scaledGap[1], width: scaledGap[0], height: scaledGap[1], patternUnits: \"userSpaceOnUse\", patternTransform: `translate(-${scaledOffset[0]},-${scaledOffset[1]})`, children: isDots ? (jsx(DotPattern, { radius: scaledSize / 2, className: patternClassName })) : (jsx(LinePattern, { dimensions: patternDimensions, lineWidth: lineWidth, variant: variant, className: patternClassName })) }), jsx(\"rect\", { x: \"0\", y: \"0\", width: \"100%\", height: \"100%\", fill: `url(#${_patternId})` })] }));\n}\nBackgroundComponent.displayName = 'Background';\n/**\n * The `<Background />` component makes it convenient to render different types of backgrounds common in node-based UIs. It comes with three variants: lines, dots and cross.\n *\n * @example\n *\n * A simple example of how to use the Background component.\n *\n * ```tsx\n * import { useState } from 'react';\n * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react';\n *\n * export default function Flow() {\n *   return (\n *     <ReactFlow defaultNodes={[...]} defaultEdges={[...]}>\n *       <Background color=\"#ccc\" variant={BackgroundVariant.Dots} />\n *     </ReactFlow>\n *   );\n * }\n * ```\n *\n * @example\n *\n * In this example you can see how to combine multiple backgrounds\n *\n * ```tsx\n * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react';\n * import '@xyflow/react/dist/style.css';\n *\n * export default function Flow() {\n *   return (\n *     <ReactFlow defaultNodes={[...]} defaultEdges={[...]}>\n *       <Background\n *         id=\"1\"\n *         gap={10}\n *         color=\"#f1f1f1\"\n *         variant={BackgroundVariant.Lines}\n *       />\n *       <Background\n *         id=\"2\"\n *         gap={100}\n *         color=\"#ccc\"\n *         variant={BackgroundVariant.Lines}\n *       />\n *     </ReactFlow>\n *   );\n * }\n * ```\n *\n * @remarks\n *\n * When combining multiple <Background /> components it’s important to give each of them a unique id prop!\n *\n */\nconst Background = memo(BackgroundComponent);\n\nfunction PlusIcon() {\n    return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 32 32\", children: jsx(\"path\", { d: \"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z\" }) }));\n}\n\nfunction MinusIcon() {\n    return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 32 5\", children: jsx(\"path\", { d: \"M0 0h32v4.2H0z\" }) }));\n}\n\nfunction FitViewIcon() {\n    return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 32 30\", children: jsx(\"path\", { d: \"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z\" }) }));\n}\n\nfunction LockIcon() {\n    return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 25 32\", children: jsx(\"path\", { d: \"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z\" }) }));\n}\n\nfunction UnlockIcon() {\n    return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 25 32\", children: jsx(\"path\", { d: \"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z\" }) }));\n}\n\n/**\n * You can add buttons to the control panel by using the `<ControlButton />` component\n * and pass it as a child to the [`<Controls />`](/api-reference/components/controls) component.\n *\n * @public\n * @example\n *```jsx\n *import { MagicWand } from '@radix-ui/react-icons'\n *import { ReactFlow, Controls, ControlButton } from '@xyflow/react'\n *\n *export default function Flow() {\n *  return (\n *    <ReactFlow nodes={[...]} edges={[...]}>\n *      <Controls>\n *        <ControlButton onClick={() => alert('Something magical just happened. ✨')}>\n *          <MagicWand />\n *        </ControlButton>\n *      </Controls>\n *    </ReactFlow>\n *  )\n *}\n *```\n */\nfunction ControlButton({ children, className, ...rest }) {\n    return (jsx(\"button\", { type: \"button\", className: cc(['react-flow__controls-button', className]), ...rest, children: children }));\n}\n\nconst selector$2 = (s) => ({\n    isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable,\n    minZoomReached: s.transform[2] <= s.minZoom,\n    maxZoomReached: s.transform[2] >= s.maxZoom,\n    ariaLabelConfig: s.ariaLabelConfig,\n});\nfunction ControlsComponent({ style, showZoom = true, showFitView = true, showInteractive = true, fitViewOptions, onZoomIn, onZoomOut, onFitView, onInteractiveChange, className, children, position = 'bottom-left', orientation = 'vertical', 'aria-label': ariaLabel, }) {\n    const store = useStoreApi();\n    const { isInteractive, minZoomReached, maxZoomReached, ariaLabelConfig } = useStore(selector$2, shallow);\n    const { zoomIn, zoomOut, fitView } = useReactFlow();\n    const onZoomInHandler = () => {\n        zoomIn();\n        onZoomIn?.();\n    };\n    const onZoomOutHandler = () => {\n        zoomOut();\n        onZoomOut?.();\n    };\n    const onFitViewHandler = () => {\n        fitView(fitViewOptions);\n        onFitView?.();\n    };\n    const onToggleInteractivity = () => {\n        store.setState({\n            nodesDraggable: !isInteractive,\n            nodesConnectable: !isInteractive,\n            elementsSelectable: !isInteractive,\n        });\n        onInteractiveChange?.(!isInteractive);\n    };\n    const orientationClass = orientation === 'horizontal' ? 'horizontal' : 'vertical';\n    return (jsxs(Panel, { className: cc(['react-flow__controls', orientationClass, className]), position: position, style: style, \"data-testid\": \"rf__controls\", \"aria-label\": ariaLabel ?? ariaLabelConfig['controls.ariaLabel'], children: [showZoom && (jsxs(Fragment, { children: [jsx(ControlButton, { onClick: onZoomInHandler, className: \"react-flow__controls-zoomin\", title: ariaLabelConfig['controls.zoomIn.ariaLabel'], \"aria-label\": ariaLabelConfig['controls.zoomIn.ariaLabel'], disabled: maxZoomReached, children: jsx(PlusIcon, {}) }), jsx(ControlButton, { onClick: onZoomOutHandler, className: \"react-flow__controls-zoomout\", title: ariaLabelConfig['controls.zoomOut.ariaLabel'], \"aria-label\": ariaLabelConfig['controls.zoomOut.ariaLabel'], disabled: minZoomReached, children: jsx(MinusIcon, {}) })] })), showFitView && (jsx(ControlButton, { className: \"react-flow__controls-fitview\", onClick: onFitViewHandler, title: ariaLabelConfig['controls.fitView.ariaLabel'], \"aria-label\": ariaLabelConfig['controls.fitView.ariaLabel'], children: jsx(FitViewIcon, {}) })), showInteractive && (jsx(ControlButton, { className: \"react-flow__controls-interactive\", onClick: onToggleInteractivity, title: ariaLabelConfig['controls.interactive.ariaLabel'], \"aria-label\": ariaLabelConfig['controls.interactive.ariaLabel'], children: isInteractive ? jsx(UnlockIcon, {}) : jsx(LockIcon, {}) })), children] }));\n}\nControlsComponent.displayName = 'Controls';\n/**\n * The `<Controls />` component renders a small panel that contains convenient\n * buttons to zoom in, zoom out, fit the view, and lock the viewport.\n *\n * @public\n * @example\n *```tsx\n *import { ReactFlow, Controls } from '@xyflow/react'\n *\n *export default function Flow() {\n *  return (\n *    <ReactFlow nodes={[...]} edges={[...]}>\n *      <Controls />\n *    </ReactFlow>\n *  )\n *}\n *```\n *\n * @remarks To extend or customise the controls, you can use the [`<ControlButton />`](/api-reference/components/control-button) component\n *\n */\nconst Controls = memo(ControlsComponent);\n\nfunction MiniMapNodeComponent({ id, x, y, width, height, style, color, strokeColor, strokeWidth, className, borderRadius, shapeRendering, selected, onClick, }) {\n    const { background, backgroundColor } = style || {};\n    const fill = (color || background || backgroundColor);\n    return (jsx(\"rect\", { className: cc(['react-flow__minimap-node', { selected }, className]), x: x, y: y, rx: borderRadius, ry: borderRadius, width: width, height: height, style: {\n            fill,\n            stroke: strokeColor,\n            strokeWidth,\n        }, shapeRendering: shapeRendering, onClick: onClick ? (event) => onClick(event, id) : undefined }));\n}\nconst MiniMapNode = memo(MiniMapNodeComponent);\n\nconst selectorNodeIds = (s) => s.nodes.map((node) => node.id);\nconst getAttrFunction = (func) => func instanceof Function ? func : () => func;\nfunction MiniMapNodes({ nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, \n/*\n * We need to rename the prop to be `CapitalCase` so that JSX will render it as\n * a component properly.\n */\nnodeComponent: NodeComponent = MiniMapNode, onClick, }) {\n    const nodeIds = useStore(selectorNodeIds, shallow);\n    const nodeColorFunc = getAttrFunction(nodeColor);\n    const nodeStrokeColorFunc = getAttrFunction(nodeStrokeColor);\n    const nodeClassNameFunc = getAttrFunction(nodeClassName);\n    const shapeRendering = typeof window === 'undefined' || !!window.chrome ? 'crispEdges' : 'geometricPrecision';\n    return (jsx(Fragment, { children: nodeIds.map((nodeId) => (\n        /*\n         * The split of responsibilities between MiniMapNodes and\n         * NodeComponentWrapper may appear weird. However, it’s designed to\n         * minimize the cost of updates when individual nodes change.\n         *\n         * For more details, see a similar commit in `NodeRenderer/index.tsx`.\n         */\n        jsx(NodeComponentWrapper, { id: nodeId, nodeColorFunc: nodeColorFunc, nodeStrokeColorFunc: nodeStrokeColorFunc, nodeClassNameFunc: nodeClassNameFunc, nodeBorderRadius: nodeBorderRadius, nodeStrokeWidth: nodeStrokeWidth, NodeComponent: NodeComponent, onClick: onClick, shapeRendering: shapeRendering }, nodeId))) }));\n}\nfunction NodeComponentWrapperInner({ id, nodeColorFunc, nodeStrokeColorFunc, nodeClassNameFunc, nodeBorderRadius, nodeStrokeWidth, shapeRendering, NodeComponent, onClick, }) {\n    const { node, x, y, width, height } = useStore((s) => {\n        const node = s.nodeLookup.get(id);\n        if (!node) {\n            return { node: undefined, x: 0, y: 0, width: 0, height: 0 };\n        }\n        const userNode = node.internals.userNode;\n        const { x, y } = node.internals.positionAbsolute;\n        const { width, height } = getNodeDimensions(userNode);\n        return {\n            node: userNode,\n            x,\n            y,\n            width,\n            height,\n        };\n    }, shallow);\n    if (!node || node.hidden || !nodeHasDimensions(node)) {\n        return null;\n    }\n    return (jsx(NodeComponent, { x: x, y: y, width: width, height: height, style: node.style, selected: !!node.selected, className: nodeClassNameFunc(node), color: nodeColorFunc(node), borderRadius: nodeBorderRadius, strokeColor: nodeStrokeColorFunc(node), strokeWidth: nodeStrokeWidth, shapeRendering: shapeRendering, onClick: onClick, id: node.id }));\n}\nconst NodeComponentWrapper = memo(NodeComponentWrapperInner);\nvar MiniMapNodes$1 = memo(MiniMapNodes);\n\nconst defaultWidth = 200;\nconst defaultHeight = 150;\nconst filterHidden = (node) => !node.hidden;\nconst selector$1 = (s) => {\n    const viewBB = {\n        x: -s.transform[0] / s.transform[2],\n        y: -s.transform[1] / s.transform[2],\n        width: s.width / s.transform[2],\n        height: s.height / s.transform[2],\n    };\n    return {\n        viewBB,\n        boundingRect: s.nodeLookup.size > 0\n            ? getBoundsOfRects(getInternalNodesBounds(s.nodeLookup, { filter: filterHidden }), viewBB)\n            : viewBB,\n        rfId: s.rfId,\n        panZoom: s.panZoom,\n        translateExtent: s.translateExtent,\n        flowWidth: s.width,\n        flowHeight: s.height,\n        ariaLabelConfig: s.ariaLabelConfig,\n    };\n};\nconst ARIA_LABEL_KEY = 'react-flow__minimap-desc';\nfunction MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, \n/*\n * We need to rename the prop to be `CapitalCase` so that JSX will render it as\n * a component properly.\n */\nnodeComponent, bgColor, maskColor, maskStrokeColor, maskStrokeWidth, position = 'bottom-right', onClick, onNodeClick, pannable = false, zoomable = false, ariaLabel, inversePan, zoomStep = 1, offsetScale = 5, }) {\n    const store = useStoreApi();\n    const svg = useRef(null);\n    const { boundingRect, viewBB, rfId, panZoom, translateExtent, flowWidth, flowHeight, ariaLabelConfig } = useStore(selector$1, shallow);\n    const elementWidth = style?.width ?? defaultWidth;\n    const elementHeight = style?.height ?? defaultHeight;\n    const scaledWidth = boundingRect.width / elementWidth;\n    const scaledHeight = boundingRect.height / elementHeight;\n    const viewScale = Math.max(scaledWidth, scaledHeight);\n    const viewWidth = viewScale * elementWidth;\n    const viewHeight = viewScale * elementHeight;\n    const offset = offsetScale * viewScale;\n    const x = boundingRect.x - (viewWidth - boundingRect.width) / 2 - offset;\n    const y = boundingRect.y - (viewHeight - boundingRect.height) / 2 - offset;\n    const width = viewWidth + offset * 2;\n    const height = viewHeight + offset * 2;\n    const labelledBy = `${ARIA_LABEL_KEY}-${rfId}`;\n    const viewScaleRef = useRef(0);\n    const minimapInstance = useRef();\n    viewScaleRef.current = viewScale;\n    useEffect(() => {\n        if (svg.current && panZoom) {\n            minimapInstance.current = XYMinimap({\n                domNode: svg.current,\n                panZoom,\n                getTransform: () => store.getState().transform,\n                getViewScale: () => viewScaleRef.current,\n            });\n            return () => {\n                minimapInstance.current?.destroy();\n            };\n        }\n    }, [panZoom]);\n    useEffect(() => {\n        minimapInstance.current?.update({\n            translateExtent,\n            width: flowWidth,\n            height: flowHeight,\n            inversePan,\n            pannable,\n            zoomStep,\n            zoomable,\n        });\n    }, [pannable, zoomable, inversePan, zoomStep, translateExtent, flowWidth, flowHeight]);\n    const onSvgClick = onClick\n        ? (event) => {\n            const [x, y] = minimapInstance.current?.pointer(event) || [0, 0];\n            onClick(event, { x, y });\n        }\n        : undefined;\n    const onSvgNodeClick = onNodeClick\n        ? useCallback((event, nodeId) => {\n            const node = store.getState().nodeLookup.get(nodeId).internals.userNode;\n            onNodeClick(event, node);\n        }, [])\n        : undefined;\n    const _ariaLabel = ariaLabel ?? ariaLabelConfig['minimap.ariaLabel'];\n    return (jsx(Panel, { position: position, style: {\n            ...style,\n            '--xy-minimap-background-color-props': typeof bgColor === 'string' ? bgColor : undefined,\n            '--xy-minimap-mask-background-color-props': typeof maskColor === 'string' ? maskColor : undefined,\n            '--xy-minimap-mask-stroke-color-props': typeof maskStrokeColor === 'string' ? maskStrokeColor : undefined,\n            '--xy-minimap-mask-stroke-width-props': typeof maskStrokeWidth === 'number' ? maskStrokeWidth * viewScale : undefined,\n            '--xy-minimap-node-background-color-props': typeof nodeColor === 'string' ? nodeColor : undefined,\n            '--xy-minimap-node-stroke-color-props': typeof nodeStrokeColor === 'string' ? nodeStrokeColor : undefined,\n            '--xy-minimap-node-stroke-width-props': typeof nodeStrokeWidth === 'number' ? nodeStrokeWidth : undefined,\n        }, className: cc(['react-flow__minimap', className]), \"data-testid\": \"rf__minimap\", children: jsxs(\"svg\", { width: elementWidth, height: elementHeight, viewBox: `${x} ${y} ${width} ${height}`, className: \"react-flow__minimap-svg\", role: \"img\", \"aria-labelledby\": labelledBy, ref: svg, onClick: onSvgClick, children: [_ariaLabel && jsx(\"title\", { id: labelledBy, children: _ariaLabel }), jsx(MiniMapNodes$1, { onClick: onSvgNodeClick, nodeColor: nodeColor, nodeStrokeColor: nodeStrokeColor, nodeBorderRadius: nodeBorderRadius, nodeClassName: nodeClassName, nodeStrokeWidth: nodeStrokeWidth, nodeComponent: nodeComponent }), jsx(\"path\", { className: \"react-flow__minimap-mask\", d: `M${x - offset},${y - offset}h${width + offset * 2}v${height + offset * 2}h${-width - offset * 2}z\n        M${viewBB.x},${viewBB.y}h${viewBB.width}v${viewBB.height}h${-viewBB.width}z`, fillRule: \"evenodd\", pointerEvents: \"none\" })] }) }));\n}\nMiniMapComponent.displayName = 'MiniMap';\n/**\n * The `<MiniMap />` component can be used to render an overview of your flow. It\n * renders each node as an SVG element and visualizes where the current viewport is\n * in relation to the rest of the flow.\n *\n * @public\n * @example\n *\n * ```jsx\n *import { ReactFlow, MiniMap } from '@xyflow/react';\n *\n *export default function Flow() {\n *  return (\n *    <ReactFlow nodes={[...]} edges={[...]}>\n *      <MiniMap nodeStrokeWidth={3} />\n *    </ReactFlow>\n *  );\n *}\n *```\n */\nconst MiniMap = memo(MiniMapComponent);\n\nconst scaleSelector = (calculateScale) => (store) => calculateScale ? `${Math.max(1 / store.transform[2], 1)}` : undefined;\nconst defaultPositions = {\n    [ResizeControlVariant.Line]: 'right',\n    [ResizeControlVariant.Handle]: 'bottom-right',\n};\nfunction ResizeControl({ nodeId, position, variant = ResizeControlVariant.Handle, className, style = undefined, children, color, minWidth = 10, minHeight = 10, maxWidth = Number.MAX_VALUE, maxHeight = Number.MAX_VALUE, keepAspectRatio = false, resizeDirection, autoScale = true, shouldResize, onResizeStart, onResize, onResizeEnd, }) {\n    const contextNodeId = useNodeId();\n    const id = typeof nodeId === 'string' ? nodeId : contextNodeId;\n    const store = useStoreApi();\n    const resizeControlRef = useRef(null);\n    const isHandleControl = variant === ResizeControlVariant.Handle;\n    const scale = useStore(useCallback(scaleSelector(isHandleControl && autoScale), [isHandleControl, autoScale]), shallow);\n    const resizer = useRef(null);\n    const controlPosition = position ?? defaultPositions[variant];\n    useEffect(() => {\n        if (!resizeControlRef.current || !id) {\n            return;\n        }\n        if (!resizer.current) {\n            resizer.current = XYResizer({\n                domNode: resizeControlRef.current,\n                nodeId: id,\n                getStoreItems: () => {\n                    const { nodeLookup, transform, snapGrid, snapToGrid, nodeOrigin, domNode } = store.getState();\n                    return {\n                        nodeLookup,\n                        transform,\n                        snapGrid,\n                        snapToGrid,\n                        nodeOrigin,\n                        paneDomNode: domNode,\n                    };\n                },\n                onChange: (change, childChanges) => {\n                    const { triggerNodeChanges, nodeLookup, parentLookup, nodeOrigin } = store.getState();\n                    const changes = [];\n                    const nextPosition = { x: change.x, y: change.y };\n                    const node = nodeLookup.get(id);\n                    if (node && node.expandParent && node.parentId) {\n                        const origin = node.origin ?? nodeOrigin;\n                        const width = change.width ?? node.measured.width ?? 0;\n                        const height = change.height ?? node.measured.height ?? 0;\n                        const child = {\n                            id: node.id,\n                            parentId: node.parentId,\n                            rect: {\n                                width,\n                                height,\n                                ...evaluateAbsolutePosition({\n                                    x: change.x ?? node.position.x,\n                                    y: change.y ?? node.position.y,\n                                }, { width, height }, node.parentId, nodeLookup, origin),\n                            },\n                        };\n                        const parentExpandChanges = handleExpandParent([child], nodeLookup, parentLookup, nodeOrigin);\n                        changes.push(...parentExpandChanges);\n                        /*\n                         * when the parent was expanded by the child node, its position will be clamped at\n                         * 0,0 when node origin is 0,0 and to width, height if it's 1,1\n                         */\n                        nextPosition.x = change.x ? Math.max(origin[0] * width, change.x) : undefined;\n                        nextPosition.y = change.y ? Math.max(origin[1] * height, change.y) : undefined;\n                    }\n                    if (nextPosition.x !== undefined && nextPosition.y !== undefined) {\n                        const positionChange = {\n                            id,\n                            type: 'position',\n                            position: { ...nextPosition },\n                        };\n                        changes.push(positionChange);\n                    }\n                    if (change.width !== undefined && change.height !== undefined) {\n                        const setAttributes = !resizeDirection ? true : resizeDirection === 'horizontal' ? 'width' : 'height';\n                        const dimensionChange = {\n                            id,\n                            type: 'dimensions',\n                            resizing: true,\n                            setAttributes,\n                            dimensions: {\n                                width: change.width,\n                                height: change.height,\n                            },\n                        };\n                        changes.push(dimensionChange);\n                    }\n                    for (const childChange of childChanges) {\n                        const positionChange = {\n                            ...childChange,\n                            type: 'position',\n                        };\n                        changes.push(positionChange);\n                    }\n                    triggerNodeChanges(changes);\n                },\n                onEnd: ({ width, height }) => {\n                    const dimensionChange = {\n                        id: id,\n                        type: 'dimensions',\n                        resizing: false,\n                        dimensions: {\n                            width,\n                            height,\n                        },\n                    };\n                    store.getState().triggerNodeChanges([dimensionChange]);\n                },\n            });\n        }\n        resizer.current.update({\n            controlPosition,\n            boundaries: {\n                minWidth,\n                minHeight,\n                maxWidth,\n                maxHeight,\n            },\n            keepAspectRatio,\n            resizeDirection,\n            onResizeStart,\n            onResize,\n            onResizeEnd,\n            shouldResize,\n        });\n        return () => {\n            resizer.current?.destroy();\n        };\n    }, [\n        controlPosition,\n        minWidth,\n        minHeight,\n        maxWidth,\n        maxHeight,\n        keepAspectRatio,\n        onResizeStart,\n        onResize,\n        onResizeEnd,\n        shouldResize,\n    ]);\n    const positionClassNames = controlPosition.split('-');\n    return (jsx(\"div\", { className: cc(['react-flow__resize-control', 'nodrag', ...positionClassNames, variant, className]), ref: resizeControlRef, style: {\n            ...style,\n            scale,\n            ...(color && { [isHandleControl ? 'backgroundColor' : 'borderColor']: color }),\n        }, children: children }));\n}\n/**\n * To create your own resizing UI, you can use the `NodeResizeControl` component where you can pass children (such as icons).\n * @public\n *\n */\nconst NodeResizeControl = memo(ResizeControl);\n\n/**\n * The `<NodeResizer />` component can be used to add a resize functionality to your\n * nodes. It renders draggable controls around the node to resize in all directions.\n * @public\n *\n * @example\n *```jsx\n *import { memo } from 'react';\n *import { Handle, Position, NodeResizer } from '@xyflow/react';\n *\n *function ResizableNode({ data }) {\n *  return (\n *    <>\n *      <NodeResizer minWidth={100} minHeight={30} />\n *      <Handle type=\"target\" position={Position.Left} />\n *      <div style={{ padding: 10 }}>{data.label}</div>\n *      <Handle type=\"source\" position={Position.Right} />\n *    </>\n *  );\n *};\n *\n *export default memo(ResizableNode);\n *```\n */\nfunction NodeResizer({ nodeId, isVisible = true, handleClassName, handleStyle, lineClassName, lineStyle, color, minWidth = 10, minHeight = 10, maxWidth = Number.MAX_VALUE, maxHeight = Number.MAX_VALUE, keepAspectRatio = false, autoScale = true, shouldResize, onResizeStart, onResize, onResizeEnd, }) {\n    if (!isVisible) {\n        return null;\n    }\n    return (jsxs(Fragment, { children: [XY_RESIZER_LINE_POSITIONS.map((position) => (jsx(NodeResizeControl, { className: lineClassName, style: lineStyle, nodeId: nodeId, position: position, variant: ResizeControlVariant.Line, color: color, minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight, onResizeStart: onResizeStart, keepAspectRatio: keepAspectRatio, autoScale: autoScale, shouldResize: shouldResize, onResize: onResize, onResizeEnd: onResizeEnd }, position))), XY_RESIZER_HANDLE_POSITIONS.map((position) => (jsx(NodeResizeControl, { className: handleClassName, style: handleStyle, nodeId: nodeId, position: position, color: color, minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight, onResizeStart: onResizeStart, keepAspectRatio: keepAspectRatio, autoScale: autoScale, shouldResize: shouldResize, onResize: onResize, onResizeEnd: onResizeEnd }, position)))] }));\n}\n\nconst selector = (state) => state.domNode?.querySelector('.react-flow__renderer');\nfunction NodeToolbarPortal({ children }) {\n    const wrapperRef = useStore(selector);\n    if (!wrapperRef) {\n        return null;\n    }\n    return createPortal(children, wrapperRef);\n}\n\nconst nodeEqualityFn = (a, b) => a?.internals.positionAbsolute.x !== b?.internals.positionAbsolute.x ||\n    a?.internals.positionAbsolute.y !== b?.internals.positionAbsolute.y ||\n    a?.measured.width !== b?.measured.width ||\n    a?.measured.height !== b?.measured.height ||\n    a?.selected !== b?.selected ||\n    a?.internals.z !== b?.internals.z;\nconst nodesEqualityFn = (a, b) => {\n    if (a.size !== b.size) {\n        return false;\n    }\n    for (const [key, node] of a) {\n        if (nodeEqualityFn(node, b.get(key))) {\n            return false;\n        }\n    }\n    return true;\n};\nconst storeSelector = (state) => ({\n    x: state.transform[0],\n    y: state.transform[1],\n    zoom: state.transform[2],\n    selectedNodesCount: state.nodes.filter((node) => node.selected).length,\n});\n/**\n * This component can render a toolbar or tooltip to one side of a custom node. This\n * toolbar doesn't scale with the viewport so that the content is always visible.\n *\n * @public\n * @example\n * ```jsx\n *import { memo } from 'react';\n *import { Handle, Position, NodeToolbar } from '@xyflow/react';\n *\n *function CustomNode({ data }) {\n *  return (\n *    <>\n *      <NodeToolbar isVisible={data.toolbarVisible} position={data.toolbarPosition}>\n *        <button>delete</button>\n *        <button>copy</button>\n *        <button>expand</button>\n *      </NodeToolbar>\n *\n *      <div style={{ padding: '10px 20px' }}>\n *        {data.label}\n *      </div>\n *\n *      <Handle type=\"target\" position={Position.Left} />\n *      <Handle type=\"source\" position={Position.Right} />\n *    </>\n *  );\n *};\n *\n *export default memo(CustomNode);\n *```\n * @remarks By default, the toolbar is only visible when a node is selected. If multiple\n * nodes are selected it will not be visible to prevent overlapping toolbars or\n * clutter. You can override this behavior by setting the `isVisible` prop to `true`.\n */\nfunction NodeToolbar({ nodeId, children, className, style, isVisible, position = Position.Top, offset = 10, align = 'center', ...rest }) {\n    const contextNodeId = useNodeId();\n    const nodesSelector = useCallback((state) => {\n        const nodeIds = Array.isArray(nodeId) ? nodeId : [nodeId || contextNodeId || ''];\n        const internalNodes = nodeIds.reduce((res, id) => {\n            const node = state.nodeLookup.get(id);\n            if (node) {\n                res.set(node.id, node);\n            }\n            return res;\n        }, new Map());\n        return internalNodes;\n    }, [nodeId, contextNodeId]);\n    const nodes = useStore(nodesSelector, nodesEqualityFn);\n    const { x, y, zoom, selectedNodesCount } = useStore(storeSelector, shallow);\n    // if isVisible is not set, we show the toolbar only if its node is selected and no other node is selected\n    const isActive = typeof isVisible === 'boolean'\n        ? isVisible\n        : nodes.size === 1 && nodes.values().next().value?.selected && selectedNodesCount === 1;\n    if (!isActive || !nodes.size) {\n        return null;\n    }\n    const nodeRect = getInternalNodesBounds(nodes);\n    const nodesArray = Array.from(nodes.values());\n    const zIndex = Math.max(...nodesArray.map((node) => node.internals.z + 1));\n    const wrapperStyle = {\n        position: 'absolute',\n        transform: getNodeToolbarTransform(nodeRect, { x, y, zoom }, position, offset, align),\n        zIndex,\n        ...style,\n    };\n    return (jsx(NodeToolbarPortal, { children: jsx(\"div\", { style: wrapperStyle, className: cc(['react-flow__node-toolbar', className]), ...rest, \"data-id\": nodesArray.reduce((acc, node) => `${acc}${node.id} `, '').trim(), children: children }) }));\n}\n\nconst zoomSelector = (state) => state.transform[2];\n/**\n * This component can render a toolbar or tooltip to one side of a custom edge. This\n * toolbar doesn't scale with the viewport so that the content stays the same size.\n *\n * @public\n * @example\n * ```jsx\n * import { EdgeToolbar, BaseEdge, getBezierPath, type EdgeProps } from \"@xyflow/react\";\n *\n * export function CustomEdge({ id, data, ...props }: EdgeProps) {\n *   const [edgePath, centerX, centerY] = getBezierPath(props);\n *\n *   return (\n *     <>\n *       <BaseEdge id={id} path={edgePath} />\n *       <EdgeToolbar edgeId={id} x={centerX} y={centerY} isVisible>\n *         <button onClick={() => console.log('edge', id, 'click')}}>Click me</button>\n *       </EdgeToolbar>\n *     </>\n *   );\n * }\n * ```\n */\nfunction EdgeToolbar({ edgeId, x, y, children, className, style, isVisible, alignX = 'center', alignY = 'center', ...rest }) {\n    const edgeSelector = useCallback((state) => state.edgeLookup.get(edgeId), [edgeId]);\n    const edge = useStore(edgeSelector, shallow);\n    const isActive = typeof isVisible === 'boolean' ? isVisible : edge?.selected;\n    const zoom = useStore(zoomSelector);\n    if (!isActive) {\n        return null;\n    }\n    const zIndex = (edge?.zIndex ?? 0) + 1;\n    const transform = getEdgeToolbarTransform(x, y, zoom, alignX, alignY);\n    return (jsx(EdgeLabelRenderer, { children: jsx(\"div\", { style: {\n                position: 'absolute',\n                transform,\n                zIndex,\n                pointerEvents: 'all',\n                transformOrigin: '0 0',\n                ...style,\n            }, className: cc(['react-flow__edge-toolbar', className]), \"data-id\": edge?.id ?? '', ...rest, children: children }) }));\n}\n\nexport { Background, BackgroundVariant, BaseEdge, BezierEdge, ControlButton, Controls, EdgeLabelRenderer, EdgeText, EdgeToolbar, Handle, MiniMap, MiniMapNode, NodeResizeControl, NodeResizer, NodeToolbar, Panel, index as ReactFlow, ReactFlowProvider, SimpleBezierEdge, SmoothStepEdge, StepEdge, StraightEdge, ViewportPortal, applyEdgeChanges, applyNodeChanges, experimental_useOnEdgesChangeMiddleware, experimental_useOnNodesChangeMiddleware, getSimpleBezierPath, isEdge, isNode, useConnection, useEdges, useEdgesState, useHandleConnections, useInternalNode, useKeyPress, useNodeConnections, useNodeId, useNodes, useNodesData, useNodesInitialized, useNodesState, useOnSelectionChange, useOnViewportChange, useReactFlow, useStore, useStoreApi, useUpdateNodeInternals, useViewport };\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      return document.styleSheets[i];\n    }\n  } // this function should always return with a value\n  // TS can't understand it though so we make it stop complaining here\n\n\n  return undefined;\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    this.tags.forEach(function (tag) {\n      var _tag$parentNode;\n\n      return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\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'\nexport var LAYER = '@layer'\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 charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\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 {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, charat, 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 && charat(characters, 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: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\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 === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: 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 {IMPORT, LAYER, 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 LAYER: if (element.children.length) break\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 {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value;\n  var parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else if (className) {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  scale: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  var componentSelector = interpolation;\n\n  if (componentSelector.__emotion_styles !== undefined) {\n\n    return componentSelector;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        var keyframes = interpolation;\n\n        if (keyframes.anim === 1) {\n          cursor = {\n            name: keyframes.name,\n            styles: keyframes.styles,\n            next: cursor\n          };\n          return keyframes.name;\n        }\n\n        var serializedStyles = interpolation;\n\n        if (serializedStyles.styles !== undefined) {\n          var next = serializedStyles.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = serializedStyles.styles + \";\";\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        }\n\n        break;\n      }\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  var asString = interpolation;\n\n  if (registered == null) {\n    return asString;\n  }\n\n  var cached = registered[asString];\n  return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var key in obj) {\n      var value = obj[key];\n\n      if (typeof value !== 'object') {\n        var asString = value;\n\n        if (registered != null && registered[asString] !== undefined) {\n          string += key + \"{\" + registered[asString] + \"}\";\n        } else if (isProcessableValue(asString)) {\n          string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n        }\n      } else {\n        if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n\n                string += key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    var asTemplateStringsArr = strings;\n\n    styles += asTemplateStringsArr[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      var templateStringsArr = strings;\n\n      styles += templateStringsArr[i];\n    }\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n}\n\nexport { serializeStyles };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n  return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    return mergedTheme;\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = React.useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n  var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n    var theme = React.useContext(ThemeContext);\n    return /*#__PURE__*/React.createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  });\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n  var newProps = {};\n\n  for (var _key in props) {\n    if (hasOwn.call(props, _key)) {\n      newProps[_key] = props[_key];\n    }\n  }\n\n  newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var _key2 in props) {\n    if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n      newProps[_key2] = props[_key2];\n    }\n  }\n\n  newProps.className = className;\n\n  if (ref) {\n    newProps.ref = ref;\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-f0de968e.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-f0de968e.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n  // eslint-disable-next-line prefer-rest-params\n  var args = arguments;\n\n  if (props == null || !hasOwn.call(props, 'css')) {\n    return React.createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  }\n\n  return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n  var JSX;\n\n  (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = React.useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false;\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nfunction keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name;\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n}\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: React.useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import React from \"react\";\nexport var DefaultContext = {\n  color: undefined,\n  size: undefined,\n  className: undefined,\n  style: undefined,\n  attr: undefined\n};\nexport var IconContext = React.createContext && /*#__PURE__*/React.createContext(DefaultContext);","var _excluded = [\"attr\", \"size\", \"title\"];\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React from \"react\";\nimport { IconContext, DefaultContext } from \"./iconContext.mjs\";\nfunction Tree2Element(tree) {\n  return tree && tree.map((node, i) => /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n    key: i\n  }, node.attr), Tree2Element(node.child)));\n}\nexport function GenIcon(data) {\n  return props => /*#__PURE__*/React.createElement(IconBase, _extends({\n    attr: _objectSpread({}, data.attr)\n  }, props), Tree2Element(data.child));\n}\nexport function IconBase(props) {\n  var elem = conf => {\n    var {\n        attr,\n        size,\n        title\n      } = props,\n      svgProps = _objectWithoutProperties(props, _excluded);\n    var computedSize = size || conf.size || \"1em\";\n    var className;\n    if (conf.className) className = conf.className;\n    if (props.className) className = (className ? className + \" \" : \"\") + props.className;\n    return /*#__PURE__*/React.createElement(\"svg\", _extends({\n      stroke: \"currentColor\",\n      fill: \"currentColor\",\n      strokeWidth: \"0\"\n    }, conf.attr, attr, svgProps, {\n      className: className,\n      style: _objectSpread(_objectSpread({\n        color: props.color || conf.color\n      }, conf.style), props.style),\n      height: computedSize,\n      width: computedSize,\n      xmlns: \"http://www.w3.org/2000/svg\"\n    }), title && /*#__PURE__*/React.createElement(\"title\", null, title), props.children);\n  };\n  return IconContext !== undefined ? /*#__PURE__*/React.createElement(IconContext.Consumer, null, conf => elem(conf)) : elem(DefaultContext);\n}","// THIS FILE IS AUTO GENERATED\nimport { GenIcon } from '../lib/index.mjs';\nexport function FiZoomOut (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"11\",\"cy\":\"11\",\"r\":\"8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"21\",\"x2\":\"16.65\",\"y2\":\"16.65\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"11\",\"x2\":\"14\",\"y2\":\"11\"},\"child\":[]}]})(props);\n};\nexport function FiZoomIn (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"11\",\"cy\":\"11\",\"r\":\"8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"21\",\"x2\":\"16.65\",\"y2\":\"16.65\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"11\",\"y1\":\"8\",\"x2\":\"11\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"11\",\"x2\":\"14\",\"y2\":\"11\"},\"child\":[]}]})(props);\n};\nexport function FiZap (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"},\"child\":[]}]})(props);\n};\nexport function FiZapOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"12.41 6.75 13 2 10.57 4.92\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"18.57 12.91 21 10 15.66 10\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"8 8 3 14 12 14 11 22 16 16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"},\"child\":[]}]})(props);\n};\nexport function FiYoutube (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\"},\"child\":[]},{\"tag\":\"polygon\",\"attr\":{\"points\":\"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02\"},\"child\":[]}]})(props);\n};\nexport function FiX (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"18\",\"y1\":\"6\",\"x2\":\"6\",\"y2\":\"18\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"6\",\"x2\":\"18\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiXSquare (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"9\",\"x2\":\"15\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"9\",\"x2\":\"9\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiXOctagon (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"9\",\"x2\":\"9\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"9\",\"x2\":\"15\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiXCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"9\",\"x2\":\"9\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"9\",\"x2\":\"15\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiWind (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2\"},\"child\":[]}]})(props);\n};\nexport function FiWifi (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 12.55a11 11 0 0 1 14.08 0\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M1.42 9a16 16 0 0 1 21.16 0\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.53 16.11a6 6 0 0 1 6.95 0\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"20\",\"x2\":\"12.01\",\"y2\":\"20\"},\"child\":[]}]})(props);\n};\nexport function FiWifiOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.72 11.06A10.94 10.94 0 0 1 19 12.55\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 12.55a10.94 10.94 0 0 1 5.17-2.39\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M10.71 5.05A16 16 0 0 1 22.58 9\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M1.42 9a15.91 15.91 0 0 1 4.7-2.88\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.53 16.11a6 6 0 0 1 6.95 0\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"20\",\"x2\":\"12.01\",\"y2\":\"20\"},\"child\":[]}]})(props);\n};\nexport function FiWatch (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"7\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"12 9 12 12 13.5 13.5\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83\"},\"child\":[]}]})(props);\n};\nexport function FiVolume (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"},\"child\":[]}]})(props);\n};\nexport function FiVolumeX (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"9\",\"x2\":\"17\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"9\",\"x2\":\"23\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiVolume2 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07\"},\"child\":[]}]})(props);\n};\nexport function FiVolume1 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.54 8.46a5 5 0 0 1 0 7.07\"},\"child\":[]}]})(props);\n};\nexport function FiVoicemail (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"5.5\",\"cy\":\"11.5\",\"r\":\"4.5\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18.5\",\"cy\":\"11.5\",\"r\":\"4.5\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"5.5\",\"y1\":\"16\",\"x2\":\"18.5\",\"y2\":\"16\"},\"child\":[]}]})(props);\n};\nexport function FiVideo (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"23 7 16 12 23 17 23 7\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"1\",\"y\":\"5\",\"width\":\"15\",\"height\":\"14\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]}]})(props);\n};\nexport function FiVideoOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"},\"child\":[]}]})(props);\n};\nexport function FiUsers (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"7\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M23 21v-2a4 4 0 0 0-3-3.87\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 3.13a4 4 0 0 1 0 7.75\"},\"child\":[]}]})(props);\n};\nexport function FiUser (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"7\",\"r\":\"4\"},\"child\":[]}]})(props);\n};\nexport function FiUserX (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"7\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"18\",\"y1\":\"8\",\"x2\":\"23\",\"y2\":\"13\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"8\",\"x2\":\"18\",\"y2\":\"13\"},\"child\":[]}]})(props);\n};\nexport function FiUserPlus (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"7\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"20\",\"y1\":\"8\",\"x2\":\"20\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"11\",\"x2\":\"17\",\"y2\":\"11\"},\"child\":[]}]})(props);\n};\nexport function FiUserMinus (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"7\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"11\",\"x2\":\"17\",\"y2\":\"11\"},\"child\":[]}]})(props);\n};\nexport function FiUserCheck (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"7\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 11 19 13 23 9\"},\"child\":[]}]})(props);\n};\nexport function FiUpload (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 8 12 3 7 8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"3\",\"x2\":\"12\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiUploadCloud (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 16 12 12 8 16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"12\",\"x2\":\"12\",\"y2\":\"21\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 16 12 12 8 16\"},\"child\":[]}]})(props);\n};\nexport function FiUnlock (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"11\",\"width\":\"18\",\"height\":\"11\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11V7a5 5 0 0 1 9.9-1\"},\"child\":[]}]})(props);\n};\nexport function FiUnderline (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"21\",\"x2\":\"20\",\"y2\":\"21\"},\"child\":[]}]})(props);\n};\nexport function FiUmbrella (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7\"},\"child\":[]}]})(props);\n};\nexport function FiType (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"4 7 4 4 20 4 20 7\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"20\",\"x2\":\"15\",\"y2\":\"20\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"4\",\"x2\":\"12\",\"y2\":\"20\"},\"child\":[]}]})(props);\n};\nexport function FiTwitter (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\"},\"child\":[]}]})(props);\n};\nexport function FiTwitch (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7\"},\"child\":[]}]})(props);\n};\nexport function FiTv (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"7\",\"width\":\"20\",\"height\":\"15\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 2 12 7 7 2\"},\"child\":[]}]})(props);\n};\nexport function FiTruck (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"1\",\"y\":\"3\",\"width\":\"15\",\"height\":\"13\"},\"child\":[]},{\"tag\":\"polygon\",\"attr\":{\"points\":\"16 8 20 8 23 11 23 16 16 16 16 8\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"5.5\",\"cy\":\"18.5\",\"r\":\"2.5\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18.5\",\"cy\":\"18.5\",\"r\":\"2.5\"},\"child\":[]}]})(props);\n};\nexport function FiTriangle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"},\"child\":[]}]})(props);\n};\nexport function FiTrendingUp (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"23 6 13.5 15.5 8.5 10.5 1 18\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 6 23 6 23 12\"},\"child\":[]}]})(props);\n};\nexport function FiTrendingDown (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"23 18 13.5 8.5 8.5 13.5 1 6\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 18 23 18 23 12\"},\"child\":[]}]})(props);\n};\nexport function FiTrello (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"7\",\"width\":\"3\",\"height\":\"9\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"7\",\"width\":\"3\",\"height\":\"5\"},\"child\":[]}]})(props);\n};\nexport function FiTrash (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"3 6 5 6 21 6\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"},\"child\":[]}]})(props);\n};\nexport function FiTrash2 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"3 6 5 6 21 6\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"10\",\"y1\":\"11\",\"x2\":\"10\",\"y2\":\"17\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14\",\"y1\":\"11\",\"x2\":\"14\",\"y2\":\"17\"},\"child\":[]}]})(props);\n};\nexport function FiTool (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"},\"child\":[]}]})(props);\n};\nexport function FiToggleRight (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"1\",\"y\":\"5\",\"width\":\"22\",\"height\":\"14\",\"rx\":\"7\",\"ry\":\"7\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"12\",\"r\":\"3\"},\"child\":[]}]})(props);\n};\nexport function FiToggleLeft (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"1\",\"y\":\"5\",\"width\":\"22\",\"height\":\"14\",\"rx\":\"7\",\"ry\":\"7\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"12\",\"r\":\"3\"},\"child\":[]}]})(props);\n};\nexport function FiThumbsUp (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"},\"child\":[]}]})(props);\n};\nexport function FiThumbsDown (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"},\"child\":[]}]})(props);\n};\nexport function FiThermometer (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\"},\"child\":[]}]})(props);\n};\nexport function FiTerminal (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"4 17 10 11 4 5\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"19\",\"x2\":\"20\",\"y2\":\"19\"},\"child\":[]}]})(props);\n};\nexport function FiTarget (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"6\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"2\"},\"child\":[]}]})(props);\n};\nexport function FiTag (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"7\",\"y1\":\"7\",\"x2\":\"7.01\",\"y2\":\"7\"},\"child\":[]}]})(props);\n};\nexport function FiTablet (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"2\",\"width\":\"16\",\"height\":\"20\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"18\",\"x2\":\"12.01\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiTable (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\"},\"child\":[]}]})(props);\n};\nexport function FiSunset (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 18a5 5 0 0 0-10 0\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"9\",\"x2\":\"12\",\"y2\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4.22\",\"y1\":\"10.22\",\"x2\":\"5.64\",\"y2\":\"11.64\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"18\",\"x2\":\"3\",\"y2\":\"18\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"18\",\"x2\":\"23\",\"y2\":\"18\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"18.36\",\"y1\":\"11.64\",\"x2\":\"19.78\",\"y2\":\"10.22\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"22\",\"x2\":\"1\",\"y2\":\"22\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 5 12 9 8 5\"},\"child\":[]}]})(props);\n};\nexport function FiSunrise (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 18a5 5 0 0 0-10 0\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"2\",\"x2\":\"12\",\"y2\":\"9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4.22\",\"y1\":\"10.22\",\"x2\":\"5.64\",\"y2\":\"11.64\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"18\",\"x2\":\"3\",\"y2\":\"18\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"18\",\"x2\":\"23\",\"y2\":\"18\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"18.36\",\"y1\":\"11.64\",\"x2\":\"19.78\",\"y2\":\"10.22\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"22\",\"x2\":\"1\",\"y2\":\"22\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"8 6 12 2 16 6\"},\"child\":[]}]})(props);\n};\nexport function FiSun (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"5\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"1\",\"x2\":\"12\",\"y2\":\"3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"21\",\"x2\":\"12\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4.22\",\"y1\":\"4.22\",\"x2\":\"5.64\",\"y2\":\"5.64\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"18.36\",\"y1\":\"18.36\",\"x2\":\"19.78\",\"y2\":\"19.78\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"12\",\"x2\":\"3\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"12\",\"x2\":\"23\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4.22\",\"y1\":\"19.78\",\"x2\":\"5.64\",\"y2\":\"18.36\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"18.36\",\"y1\":\"5.64\",\"x2\":\"19.78\",\"y2\":\"4.22\"},\"child\":[]}]})(props);\n};\nexport function FiStopCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"9\",\"width\":\"6\",\"height\":\"6\"},\"child\":[]}]})(props);\n};\nexport function FiStar (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"},\"child\":[]}]})(props);\n};\nexport function FiSquare (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]}]})(props);\n};\nexport function FiSpeaker (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"2\",\"width\":\"16\",\"height\":\"20\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"14\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"6\",\"x2\":\"12.01\",\"y2\":\"6\"},\"child\":[]}]})(props);\n};\nexport function FiSmile (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 14s1.5 2 4 2 4-2 4-2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"9\",\"x2\":\"9.01\",\"y2\":\"9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"9\",\"x2\":\"15.01\",\"y2\":\"9\"},\"child\":[]}]})(props);\n};\nexport function FiSmartphone (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"2\",\"width\":\"14\",\"height\":\"20\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"18\",\"x2\":\"12.01\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiSliders (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"21\",\"x2\":\"4\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"10\",\"x2\":\"4\",\"y2\":\"3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"21\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12\",\"y2\":\"3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"20\",\"y1\":\"21\",\"x2\":\"20\",\"y2\":\"16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"20\",\"y1\":\"12\",\"x2\":\"20\",\"y2\":\"3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"14\",\"x2\":\"7\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"8\",\"x2\":\"15\",\"y2\":\"8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"16\",\"x2\":\"23\",\"y2\":\"16\"},\"child\":[]}]})(props);\n};\nexport function FiSlash (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4.93\",\"y1\":\"4.93\",\"x2\":\"19.07\",\"y2\":\"19.07\"},\"child\":[]}]})(props);\n};\nexport function FiSlack (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\"},\"child\":[]}]})(props);\n};\nexport function FiSkipForward (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"5 4 15 12 5 20 5 4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"19\",\"y1\":\"5\",\"x2\":\"19\",\"y2\":\"19\"},\"child\":[]}]})(props);\n};\nexport function FiSkipBack (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"19 20 9 12 19 4 19 20\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"5\",\"y1\":\"19\",\"x2\":\"5\",\"y2\":\"5\"},\"child\":[]}]})(props);\n};\nexport function FiSidebar (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"3\",\"x2\":\"9\",\"y2\":\"21\"},\"child\":[]}]})(props);\n};\nexport function FiShuffle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 3 21 3 21 8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"20\",\"x2\":\"21\",\"y2\":\"3\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"21 16 21 21 16 21\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"15\",\"x2\":\"21\",\"y2\":\"21\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"4\",\"x2\":\"9\",\"y2\":\"9\"},\"child\":[]}]})(props);\n};\nexport function FiShoppingCart (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"21\",\"r\":\"1\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"20\",\"cy\":\"21\",\"r\":\"1\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\"},\"child\":[]}]})(props);\n};\nexport function FiShoppingBag (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"6\",\"x2\":\"21\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 10a4 4 0 0 1-8 0\"},\"child\":[]}]})(props);\n};\nexport function FiShield (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"},\"child\":[]}]})(props);\n};\nexport function FiShieldOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"},\"child\":[]}]})(props);\n};\nexport function FiShare (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 6 12 2 8 6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"2\",\"x2\":\"12\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiShare2 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"5\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"12\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"19\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8.59\",\"y1\":\"13.51\",\"x2\":\"15.42\",\"y2\":\"17.49\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15.41\",\"y1\":\"6.51\",\"x2\":\"8.59\",\"y2\":\"10.49\"},\"child\":[]}]})(props);\n};\nexport function FiSettings (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"},\"child\":[]}]})(props);\n};\nexport function FiServer (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"2\",\"width\":\"20\",\"height\":\"8\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"14\",\"width\":\"20\",\"height\":\"8\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"6\",\"x2\":\"6.01\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"18\",\"x2\":\"6.01\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiSend (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"22\",\"y1\":\"2\",\"x2\":\"11\",\"y2\":\"13\"},\"child\":[]},{\"tag\":\"polygon\",\"attr\":{\"points\":\"22 2 15 22 11 13 2 9 22 2\"},\"child\":[]}]})(props);\n};\nexport function FiSearch (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"11\",\"cy\":\"11\",\"r\":\"8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"21\",\"x2\":\"16.65\",\"y2\":\"16.65\"},\"child\":[]}]})(props);\n};\nexport function FiScissors (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"6\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"18\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"20\",\"y1\":\"4\",\"x2\":\"8.12\",\"y2\":\"15.88\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14.47\",\"y1\":\"14.48\",\"x2\":\"20\",\"y2\":\"20\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8.12\",\"y1\":\"8.12\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiSave (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 21 17 13 7 13 7 21\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"7 3 7 8 15 8\"},\"child\":[]}]})(props);\n};\nexport function FiRss (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 11a9 9 0 0 1 9 9\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 4a16 16 0 0 1 16 16\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"5\",\"cy\":\"19\",\"r\":\"1\"},\"child\":[]}]})(props);\n};\nexport function FiRotateCw (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"23 4 23 10 17 10\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"},\"child\":[]}]})(props);\n};\nexport function FiRotateCcw (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"1 4 1 10 7 10\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\"},\"child\":[]}]})(props);\n};\nexport function FiRewind (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"11 19 2 12 11 5 11 19\"},\"child\":[]},{\"tag\":\"polygon\",\"attr\":{\"points\":\"22 19 13 12 22 5 22 19\"},\"child\":[]}]})(props);\n};\nexport function FiRepeat (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 1 21 5 17 9\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M3 11V9a4 4 0 0 1 4-4h14\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"7 23 3 19 7 15\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 13v2a4 4 0 0 1-4 4H3\"},\"child\":[]}]})(props);\n};\nexport function FiRefreshCw (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"23 4 23 10 17 10\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"1 20 1 14 7 14\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"},\"child\":[]}]})(props);\n};\nexport function FiRefreshCcw (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"1 4 1 10 7 10\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"23 20 23 14 17 14\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\"},\"child\":[]}]})(props);\n};\nexport function FiRadio (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"2\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14\"},\"child\":[]}]})(props);\n};\nexport function FiPrinter (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"6 9 6 2 18 2 18 9\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"14\",\"width\":\"12\",\"height\":\"8\"},\"child\":[]}]})(props);\n};\nexport function FiPower (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.36 6.64a9 9 0 1 1-12.73 0\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"2\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiPocket (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"8 10 12 14 16 10\"},\"child\":[]}]})(props);\n};\nexport function FiPlus (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"5\",\"x2\":\"12\",\"y2\":\"19\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"5\",\"y1\":\"12\",\"x2\":\"19\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiPlusSquare (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12\",\"y2\":\"16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"12\",\"x2\":\"16\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiPlusCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12\",\"y2\":\"16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"12\",\"x2\":\"16\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiPlay (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"5 3 19 12 5 21 5 3\"},\"child\":[]}]})(props);\n};\nexport function FiPlayCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"polygon\",\"attr\":{\"points\":\"10 8 16 12 10 16 10 8\"},\"child\":[]}]})(props);\n};\nexport function FiPieChart (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.21 15.89A10 10 0 1 1 8 2.83\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M22 12A10 10 0 0 0 12 2v10z\"},\"child\":[]}]})(props);\n};\nexport function FiPhone (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"},\"child\":[]}]})(props);\n};\nexport function FiPhoneOutgoing (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"23 7 23 1 17 1\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"8\",\"x2\":\"23\",\"y2\":\"1\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"},\"child\":[]}]})(props);\n};\nexport function FiPhoneOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"1\",\"x2\":\"1\",\"y2\":\"23\"},\"child\":[]}]})(props);\n};\nexport function FiPhoneMissed (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"1\",\"x2\":\"17\",\"y2\":\"7\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"7\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"},\"child\":[]}]})(props);\n};\nexport function FiPhoneIncoming (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 2 16 8 22 8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"1\",\"x2\":\"16\",\"y2\":\"8\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"},\"child\":[]}]})(props);\n};\nexport function FiPhoneForwarded (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"19 1 23 5 19 9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"5\",\"x2\":\"23\",\"y2\":\"5\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"},\"child\":[]}]})(props);\n};\nexport function FiPhoneCall (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"},\"child\":[]}]})(props);\n};\nexport function FiPercent (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"19\",\"y1\":\"5\",\"x2\":\"5\",\"y2\":\"19\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6.5\",\"cy\":\"6.5\",\"r\":\"2.5\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"17.5\",\"r\":\"2.5\"},\"child\":[]}]})(props);\n};\nexport function FiPenTool (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 19l7-7 3 3-7 7-3-3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M2 2l7.586 7.586\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11\",\"cy\":\"11\",\"r\":\"2\"},\"child\":[]}]})(props);\n};\nexport function FiPause (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"4\",\"width\":\"4\",\"height\":\"16\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"4\",\"width\":\"4\",\"height\":\"16\"},\"child\":[]}]})(props);\n};\nexport function FiPauseCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"10\",\"y1\":\"15\",\"x2\":\"10\",\"y2\":\"9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14\",\"y1\":\"15\",\"x2\":\"14\",\"y2\":\"9\"},\"child\":[]}]})(props);\n};\nexport function FiPaperclip (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"},\"child\":[]}]})(props);\n};\nexport function FiPackage (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"16.5\",\"y1\":\"9.4\",\"x2\":\"7.5\",\"y2\":\"4.21\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"3.27 6.96 12 12.01 20.73 6.96\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"22.08\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiOctagon (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"},\"child\":[]}]})(props);\n};\nexport function FiNavigation (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"3 11 22 2 13 21 11 13 3 11\"},\"child\":[]}]})(props);\n};\nexport function FiNavigation2 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"12 2 19 21 12 17 5 21 12 2\"},\"child\":[]}]})(props);\n};\nexport function FiMusic (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 18V5l12-2v13\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"18\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"16\",\"r\":\"3\"},\"child\":[]}]})(props);\n};\nexport function FiMove (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"5 9 2 12 5 15\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"9 5 12 2 15 5\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"15 19 12 22 9 19\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"19 9 22 12 19 15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"2\",\"y1\":\"12\",\"x2\":\"22\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"2\",\"x2\":\"12\",\"y2\":\"22\"},\"child\":[]}]})(props);\n};\nexport function FiMousePointer (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 13l6 6\"},\"child\":[]}]})(props);\n};\nexport function FiMoreVertical (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"1\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"5\",\"r\":\"1\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"19\",\"r\":\"1\"},\"child\":[]}]})(props);\n};\nexport function FiMoreHorizontal (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"1\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"19\",\"cy\":\"12\",\"r\":\"1\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"5\",\"cy\":\"12\",\"r\":\"1\"},\"child\":[]}]})(props);\n};\nexport function FiMoon (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"},\"child\":[]}]})(props);\n};\nexport function FiMonitor (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"3\",\"width\":\"20\",\"height\":\"14\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"21\",\"x2\":\"16\",\"y2\":\"21\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"17\",\"x2\":\"12\",\"y2\":\"21\"},\"child\":[]}]})(props);\n};\nexport function FiMinus (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"5\",\"y1\":\"12\",\"x2\":\"19\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiMinusSquare (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"12\",\"x2\":\"16\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiMinusCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"12\",\"x2\":\"16\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiMinimize (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\"},\"child\":[]}]})(props);\n};\nexport function FiMinimize2 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"4 14 10 14 10 20\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"20 10 14 10 14 4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14\",\"y1\":\"10\",\"x2\":\"21\",\"y2\":\"3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"21\",\"x2\":\"10\",\"y2\":\"14\"},\"child\":[]}]})(props);\n};\nexport function FiMic (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 10v2a7 7 0 0 1-14 0v-2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"19\",\"x2\":\"12\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"23\",\"x2\":\"16\",\"y2\":\"23\"},\"child\":[]}]})(props);\n};\nexport function FiMicOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"19\",\"x2\":\"12\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"23\",\"x2\":\"16\",\"y2\":\"23\"},\"child\":[]}]})(props);\n};\nexport function FiMessageSquare (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"},\"child\":[]}]})(props);\n};\nexport function FiMessageCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"},\"child\":[]}]})(props);\n};\nexport function FiMenu (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"12\",\"x2\":\"21\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"6\",\"x2\":\"21\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"18\",\"x2\":\"21\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiMeh (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"15\",\"x2\":\"16\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"9\",\"x2\":\"9.01\",\"y2\":\"9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"9\",\"x2\":\"15.01\",\"y2\":\"9\"},\"child\":[]}]})(props);\n};\nexport function FiMaximize (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"},\"child\":[]}]})(props);\n};\nexport function FiMaximize2 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"15 3 21 3 21 9\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"9 21 3 21 3 15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"3\",\"x2\":\"14\",\"y2\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"21\",\"x2\":\"10\",\"y2\":\"14\"},\"child\":[]}]})(props);\n};\nexport function FiMap (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"2\",\"x2\":\"8\",\"y2\":\"18\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"6\",\"x2\":\"16\",\"y2\":\"22\"},\"child\":[]}]})(props);\n};\nexport function FiMapPin (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"10\",\"r\":\"3\"},\"child\":[]}]})(props);\n};\nexport function FiMail (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"22,6 12,13 2,6\"},\"child\":[]}]})(props);\n};\nexport function FiLogOut (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 17 21 12 16 7\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"12\",\"x2\":\"9\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiLogIn (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"10 17 15 12 10 7\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"12\",\"x2\":\"3\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiLock (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"11\",\"width\":\"18\",\"height\":\"11\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11V7a5 5 0 0 1 10 0v4\"},\"child\":[]}]})(props);\n};\nexport function FiLoader (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"2\",\"x2\":\"12\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"18\",\"x2\":\"12\",\"y2\":\"22\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4.93\",\"y1\":\"4.93\",\"x2\":\"7.76\",\"y2\":\"7.76\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16.24\",\"y1\":\"16.24\",\"x2\":\"19.07\",\"y2\":\"19.07\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"2\",\"y1\":\"12\",\"x2\":\"6\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"18\",\"y1\":\"12\",\"x2\":\"22\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4.93\",\"y1\":\"19.07\",\"x2\":\"7.76\",\"y2\":\"16.24\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16.24\",\"y1\":\"7.76\",\"x2\":\"19.07\",\"y2\":\"4.93\"},\"child\":[]}]})(props);\n};\nexport function FiList (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"6\",\"x2\":\"21\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"12\",\"x2\":\"21\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"18\",\"x2\":\"21\",\"y2\":\"18\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"6\",\"x2\":\"3.01\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"12\",\"x2\":\"3.01\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"18\",\"x2\":\"3.01\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiLinkedin (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"9\",\"width\":\"4\",\"height\":\"12\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"4\",\"cy\":\"4\",\"r\":\"2\"},\"child\":[]}]})(props);\n};\nexport function FiLink (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"},\"child\":[]}]})(props);\n};\nexport function FiLink2 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"12\",\"x2\":\"16\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiLifeBuoy (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4.93\",\"y1\":\"4.93\",\"x2\":\"9.17\",\"y2\":\"9.17\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14.83\",\"y1\":\"14.83\",\"x2\":\"19.07\",\"y2\":\"19.07\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14.83\",\"y1\":\"9.17\",\"x2\":\"19.07\",\"y2\":\"4.93\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14.83\",\"y1\":\"9.17\",\"x2\":\"18.36\",\"y2\":\"5.64\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4.93\",\"y1\":\"19.07\",\"x2\":\"9.17\",\"y2\":\"14.83\"},\"child\":[]}]})(props);\n};\nexport function FiLayout (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"9\",\"x2\":\"21\",\"y2\":\"9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"21\",\"x2\":\"9\",\"y2\":\"9\"},\"child\":[]}]})(props);\n};\nexport function FiLayers (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"12 2 2 7 12 12 22 7 12 2\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"2 17 12 22 22 17\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"2 12 12 17 22 12\"},\"child\":[]}]})(props);\n};\nexport function FiKey (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"},\"child\":[]}]})(props);\n};\nexport function FiItalic (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"19\",\"y1\":\"4\",\"x2\":\"10\",\"y2\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14\",\"y1\":\"20\",\"x2\":\"5\",\"y2\":\"20\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"4\",\"x2\":\"9\",\"y2\":\"20\"},\"child\":[]}]})(props);\n};\nexport function FiInstagram (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"2\",\"width\":\"20\",\"height\":\"20\",\"rx\":\"5\",\"ry\":\"5\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17.5\",\"y1\":\"6.5\",\"x2\":\"17.51\",\"y2\":\"6.5\"},\"child\":[]}]})(props);\n};\nexport function FiInfo (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"16\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12.01\",\"y2\":\"8\"},\"child\":[]}]})(props);\n};\nexport function FiInbox (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"22 12 16 12 14 15 10 15 8 12 2 12\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"},\"child\":[]}]})(props);\n};\nexport function FiImage (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"8.5\",\"r\":\"1.5\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"21 15 16 10 5 21\"},\"child\":[]}]})(props);\n};\nexport function FiHome (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"9 22 9 12 15 12 15 22\"},\"child\":[]}]})(props);\n};\nexport function FiHexagon (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"},\"child\":[]}]})(props);\n};\nexport function FiHelpCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"17\",\"x2\":\"12.01\",\"y2\":\"17\"},\"child\":[]}]})(props);\n};\nexport function FiHeart (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"},\"child\":[]}]})(props);\n};\nexport function FiHeadphones (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 18v-6a9 9 0 0 1 18 0v6\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\"},\"child\":[]}]})(props);\n};\nexport function FiHash (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"9\",\"x2\":\"20\",\"y2\":\"9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"15\",\"x2\":\"20\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"10\",\"y1\":\"3\",\"x2\":\"8\",\"y2\":\"21\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"3\",\"x2\":\"14\",\"y2\":\"21\"},\"child\":[]}]})(props);\n};\nexport function FiHardDrive (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"22\",\"y1\":\"12\",\"x2\":\"2\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"16\",\"x2\":\"6.01\",\"y2\":\"16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"10\",\"y1\":\"16\",\"x2\":\"10.01\",\"y2\":\"16\"},\"child\":[]}]})(props);\n};\nexport function FiGrid (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"7\",\"height\":\"7\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"3\",\"width\":\"7\",\"height\":\"7\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"14\",\"width\":\"7\",\"height\":\"7\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"14\",\"width\":\"7\",\"height\":\"7\"},\"child\":[]}]})(props);\n};\nexport function FiGlobe (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"2\",\"y1\":\"12\",\"x2\":\"22\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"},\"child\":[]}]})(props);\n};\nexport function FiGitlab (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z\"},\"child\":[]}]})(props);\n};\nexport function FiGithub (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"},\"child\":[]}]})(props);\n};\nexport function FiGitPullRequest (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"18\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"6\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 6h3a2 2 0 0 1 2 2v7\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"9\",\"x2\":\"6\",\"y2\":\"21\"},\"child\":[]}]})(props);\n};\nexport function FiGitMerge (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"18\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"6\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 21V9a9 9 0 0 0 9 9\"},\"child\":[]}]})(props);\n};\nexport function FiGitCommit (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1.05\",\"y1\":\"12\",\"x2\":\"7\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17.01\",\"y1\":\"12\",\"x2\":\"22.96\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiGitBranch (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"3\",\"x2\":\"6\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"6\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"18\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 9a9 9 0 0 1-9 9\"},\"child\":[]}]})(props);\n};\nexport function FiGift (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"20 12 20 22 4 22 4 12\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"7\",\"width\":\"20\",\"height\":\"5\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"22\",\"x2\":\"12\",\"y2\":\"7\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\"},\"child\":[]}]})(props);\n};\nexport function FiFrown (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 16s-1.5-2-4-2-4 2-4 2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"9\",\"x2\":\"9.01\",\"y2\":\"9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"9\",\"x2\":\"15.01\",\"y2\":\"9\"},\"child\":[]}]})(props);\n};\nexport function FiFramer (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\"},\"child\":[]}]})(props);\n};\nexport function FiFolder (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"},\"child\":[]}]})(props);\n};\nexport function FiFolderPlus (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"11\",\"x2\":\"12\",\"y2\":\"17\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"14\",\"x2\":\"15\",\"y2\":\"14\"},\"child\":[]}]})(props);\n};\nexport function FiFolderMinus (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"14\",\"x2\":\"15\",\"y2\":\"14\"},\"child\":[]}]})(props);\n};\nexport function FiFlag (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"22\",\"x2\":\"4\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiFilter (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"},\"child\":[]}]})(props);\n};\nexport function FiFilm (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"2\",\"width\":\"20\",\"height\":\"20\",\"rx\":\"2.18\",\"ry\":\"2.18\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"7\",\"y1\":\"2\",\"x2\":\"7\",\"y2\":\"22\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"2\",\"x2\":\"17\",\"y2\":\"22\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"2\",\"y1\":\"12\",\"x2\":\"22\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"2\",\"y1\":\"7\",\"x2\":\"7\",\"y2\":\"7\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"2\",\"y1\":\"17\",\"x2\":\"7\",\"y2\":\"17\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"17\",\"x2\":\"22\",\"y2\":\"17\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"7\",\"x2\":\"22\",\"y2\":\"7\"},\"child\":[]}]})(props);\n};\nexport function FiFile (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"13 2 13 9 20 9\"},\"child\":[]}]})(props);\n};\nexport function FiFileText (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"14 2 14 8 20 8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"13\",\"x2\":\"8\",\"y2\":\"13\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"17\",\"x2\":\"8\",\"y2\":\"17\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"10 9 9 9 8 9\"},\"child\":[]}]})(props);\n};\nexport function FiFilePlus (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"14 2 14 8 20 8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"18\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"15\",\"x2\":\"15\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiFileMinus (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"14 2 14 8 20 8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"15\",\"x2\":\"15\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiFigma (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\"},\"child\":[]}]})(props);\n};\nexport function FiFeather (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"8\",\"x2\":\"2\",\"y2\":\"22\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17.5\",\"y1\":\"15\",\"x2\":\"9\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiFastForward (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"13 19 22 12 13 5 13 19\"},\"child\":[]},{\"tag\":\"polygon\",\"attr\":{\"points\":\"2 19 11 12 2 5 2 19\"},\"child\":[]}]})(props);\n};\nexport function FiFacebook (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\"},\"child\":[]}]})(props);\n};\nexport function FiEye (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"3\"},\"child\":[]}]})(props);\n};\nexport function FiEyeOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"},\"child\":[]}]})(props);\n};\nexport function FiExternalLink (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"15 3 21 3 21 9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"10\",\"y1\":\"14\",\"x2\":\"21\",\"y2\":\"3\"},\"child\":[]}]})(props);\n};\nexport function FiEdit (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"},\"child\":[]}]})(props);\n};\nexport function FiEdit3 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 20h9\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\"},\"child\":[]}]})(props);\n};\nexport function FiEdit2 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\"},\"child\":[]}]})(props);\n};\nexport function FiDroplet (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\"},\"child\":[]}]})(props);\n};\nexport function FiDribbble (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.56 2.75c4.37 6.03 6.02 9.42 8.03 17.72m2.54-15.38c-3.72 4.35-8.94 5.66-16.88 5.85m19.5 1.9c-3.5-.93-6.63-.82-8.94 0-2.58.92-5.01 2.86-7.44 6.32\"},\"child\":[]}]})(props);\n};\nexport function FiDownload (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"7 10 12 15 17 10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"15\",\"x2\":\"12\",\"y2\":\"3\"},\"child\":[]}]})(props);\n};\nexport function FiDownloadCloud (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"8 17 12 21 16 17\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"12\",\"x2\":\"12\",\"y2\":\"21\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"},\"child\":[]}]})(props);\n};\nexport function FiDollarSign (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"1\",\"x2\":\"12\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"},\"child\":[]}]})(props);\n};\nexport function FiDivide (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"6\",\"r\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"5\",\"y1\":\"12\",\"x2\":\"19\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"18\",\"r\":\"2\"},\"child\":[]}]})(props);\n};\nexport function FiDivideSquare (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"12\",\"x2\":\"16\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"16\",\"x2\":\"12\",\"y2\":\"16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12\",\"y2\":\"8\"},\"child\":[]}]})(props);\n};\nexport function FiDivideCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"12\",\"x2\":\"16\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"16\",\"x2\":\"12\",\"y2\":\"16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12\",\"y2\":\"8\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]}]})(props);\n};\nexport function FiDisc (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"3\"},\"child\":[]}]})(props);\n};\nexport function FiDelete (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"18\",\"y1\":\"9\",\"x2\":\"12\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"9\",\"x2\":\"18\",\"y2\":\"15\"},\"child\":[]}]})(props);\n};\nexport function FiDatabase (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"12\",\"cy\":\"5\",\"rx\":\"9\",\"ry\":\"3\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\"},\"child\":[]}]})(props);\n};\nexport function FiCrosshair (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"22\",\"y1\":\"12\",\"x2\":\"18\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"12\",\"x2\":\"2\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"6\",\"x2\":\"12\",\"y2\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"22\",\"x2\":\"12\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiCrop (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.13 1L6 16a2 2 0 0 0 2 2h15\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M1 6.13L16 6a2 2 0 0 1 2 2v15\"},\"child\":[]}]})(props);\n};\nexport function FiCreditCard (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"1\",\"y\":\"4\",\"width\":\"22\",\"height\":\"16\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"10\",\"x2\":\"23\",\"y2\":\"10\"},\"child\":[]}]})(props);\n};\nexport function FiCpu (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"4\",\"width\":\"16\",\"height\":\"16\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"9\",\"width\":\"6\",\"height\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"1\",\"x2\":\"9\",\"y2\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"1\",\"x2\":\"15\",\"y2\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"20\",\"x2\":\"9\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"20\",\"x2\":\"15\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"20\",\"y1\":\"9\",\"x2\":\"23\",\"y2\":\"9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"20\",\"y1\":\"14\",\"x2\":\"23\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"9\",\"x2\":\"4\",\"y2\":\"9\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"14\",\"x2\":\"4\",\"y2\":\"14\"},\"child\":[]}]})(props);\n};\nexport function FiCornerUpRight (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"15 14 20 9 15 4\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 20v-7a4 4 0 0 1 4-4h12\"},\"child\":[]}]})(props);\n};\nexport function FiCornerUpLeft (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"9 14 4 9 9 4\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 20v-7a4 4 0 0 0-4-4H4\"},\"child\":[]}]})(props);\n};\nexport function FiCornerRightUp (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"10 9 15 4 20 9\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 20h7a4 4 0 0 0 4-4V4\"},\"child\":[]}]})(props);\n};\nexport function FiCornerRightDown (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"10 15 15 20 20 15\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 4h7a4 4 0 0 1 4 4v12\"},\"child\":[]}]})(props);\n};\nexport function FiCornerLeftUp (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"14 9 9 4 4 9\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 20h-7a4 4 0 0 1-4-4V4\"},\"child\":[]}]})(props);\n};\nexport function FiCornerLeftDown (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"14 15 9 20 4 15\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4h-7a4 4 0 0 0-4 4v12\"},\"child\":[]}]})(props);\n};\nexport function FiCornerDownRight (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"15 10 20 15 15 20\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 4v7a4 4 0 0 0 4 4h12\"},\"child\":[]}]})(props);\n};\nexport function FiCornerDownLeft (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"9 10 4 15 9 20\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4v7a4 4 0 0 1-4 4H4\"},\"child\":[]}]})(props);\n};\nexport function FiCopy (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"9\",\"width\":\"13\",\"height\":\"13\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"},\"child\":[]}]})(props);\n};\nexport function FiCompass (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"polygon\",\"attr\":{\"points\":\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"},\"child\":[]}]})(props);\n};\nexport function FiCommand (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\"},\"child\":[]}]})(props);\n};\nexport function FiColumns (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\"},\"child\":[]}]})(props);\n};\nexport function FiCoffee (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8h1a4 4 0 0 1 0 8h-1\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"1\",\"x2\":\"6\",\"y2\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"10\",\"y1\":\"1\",\"x2\":\"10\",\"y2\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14\",\"y1\":\"1\",\"x2\":\"14\",\"y2\":\"4\"},\"child\":[]}]})(props);\n};\nexport function FiCodesandbox (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"7.5 4.21 12 6.81 16.5 4.21\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"7.5 19.79 7.5 14.6 3 12\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"21 12 16.5 14.6 16.5 19.79\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"3.27 6.96 12 12.01 20.73 6.96\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"22.08\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiCodepen (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"22\",\"x2\":\"12\",\"y2\":\"15.5\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"22 8.5 12 15.5 2 8.5\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"2 15.5 12 8.5 22 15.5\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"2\",\"x2\":\"12\",\"y2\":\"8.5\"},\"child\":[]}]})(props);\n};\nexport function FiCode (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 18 22 12 16 6\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"8 6 2 12 8 18\"},\"child\":[]}]})(props);\n};\nexport function FiCloud (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\"},\"child\":[]}]})(props);\n};\nexport function FiCloudSnow (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"16\",\"x2\":\"8.01\",\"y2\":\"16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"20\",\"x2\":\"8.01\",\"y2\":\"20\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"18\",\"x2\":\"12.01\",\"y2\":\"18\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"22\",\"x2\":\"12.01\",\"y2\":\"22\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"16\",\"x2\":\"16.01\",\"y2\":\"16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"20\",\"x2\":\"16.01\",\"y2\":\"20\"},\"child\":[]}]})(props);\n};\nexport function FiCloudRain (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"13\",\"x2\":\"16\",\"y2\":\"21\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"13\",\"x2\":\"8\",\"y2\":\"21\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"15\",\"x2\":\"12\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\"},\"child\":[]}]})(props);\n};\nexport function FiCloudOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"},\"child\":[]}]})(props);\n};\nexport function FiCloudLightning (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"13 11 9 17 15 17 11 23\"},\"child\":[]}]})(props);\n};\nexport function FiCloudDrizzle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"19\",\"x2\":\"8\",\"y2\":\"21\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"13\",\"x2\":\"8\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"19\",\"x2\":\"16\",\"y2\":\"21\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"13\",\"x2\":\"16\",\"y2\":\"15\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"21\",\"x2\":\"12\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"15\",\"x2\":\"12\",\"y2\":\"17\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\"},\"child\":[]}]})(props);\n};\nexport function FiClock (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"12 6 12 12 16 14\"},\"child\":[]}]})(props);\n};\nexport function FiClipboard (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"8\",\"y\":\"2\",\"width\":\"8\",\"height\":\"4\",\"rx\":\"1\",\"ry\":\"1\"},\"child\":[]}]})(props);\n};\nexport function FiCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]}]})(props);\n};\nexport function FiChrome (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21.17\",\"y1\":\"8\",\"x2\":\"12\",\"y2\":\"8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3.95\",\"y1\":\"6.06\",\"x2\":\"8.54\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"10.88\",\"y1\":\"21.94\",\"x2\":\"15.46\",\"y2\":\"14\"},\"child\":[]}]})(props);\n};\nexport function FiChevronsUp (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 11 12 6 7 11\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 18 12 13 7 18\"},\"child\":[]}]})(props);\n};\nexport function FiChevronsRight (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"13 17 18 12 13 7\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"6 17 11 12 6 7\"},\"child\":[]}]})(props);\n};\nexport function FiChevronsLeft (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"11 17 6 12 11 7\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"18 17 13 12 18 7\"},\"child\":[]}]})(props);\n};\nexport function FiChevronsDown (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"7 13 12 18 17 13\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"7 6 12 11 17 6\"},\"child\":[]}]})(props);\n};\nexport function FiChevronUp (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"18 15 12 9 6 15\"},\"child\":[]}]})(props);\n};\nexport function FiChevronRight (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"9 18 15 12 9 6\"},\"child\":[]}]})(props);\n};\nexport function FiChevronLeft (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"15 18 9 12 15 6\"},\"child\":[]}]})(props);\n};\nexport function FiChevronDown (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"6 9 12 15 18 9\"},\"child\":[]}]})(props);\n};\nexport function FiCheck (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"20 6 9 17 4 12\"},\"child\":[]}]})(props);\n};\nexport function FiCheckSquare (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"9 11 12 14 22 4\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"},\"child\":[]}]})(props);\n};\nexport function FiCheckCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"22 4 12 14.01 9 11.01\"},\"child\":[]}]})(props);\n};\nexport function FiCast (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"2\",\"y1\":\"20\",\"x2\":\"2.01\",\"y2\":\"20\"},\"child\":[]}]})(props);\n};\nexport function FiCamera (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\"},\"child\":[]},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"13\",\"r\":\"4\"},\"child\":[]}]})(props);\n};\nexport function FiCameraOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56\"},\"child\":[]}]})(props);\n};\nexport function FiCalendar (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"4\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"2\",\"x2\":\"16\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"2\",\"x2\":\"8\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"3\",\"y1\":\"10\",\"x2\":\"21\",\"y2\":\"10\"},\"child\":[]}]})(props);\n};\nexport function FiBriefcase (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"7\",\"width\":\"20\",\"height\":\"14\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"},\"child\":[]}]})(props);\n};\nexport function FiBox (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"3.27 6.96 12 12.01 20.73 6.96\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"22.08\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiBookmark (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\"},\"child\":[]}]})(props);\n};\nexport function FiBook (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"},\"child\":[]}]})(props);\n};\nexport function FiBookOpen (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"},\"child\":[]}]})(props);\n};\nexport function FiBold (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\"},\"child\":[]}]})(props);\n};\nexport function FiBluetooth (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5\"},\"child\":[]}]})(props);\n};\nexport function FiBell (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M13.73 21a2 2 0 0 1-3.46 0\"},\"child\":[]}]})(props);\n};\nexport function FiBellOff (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.73 21a2 2 0 0 1-3.46 0\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.63 13A17.89 17.89 0 0 1 18 8\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8a6 6 0 0 0-9.33-5\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"23\",\"y2\":\"23\"},\"child\":[]}]})(props);\n};\nexport function FiBattery (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"1\",\"y\":\"6\",\"width\":\"18\",\"height\":\"12\",\"rx\":\"2\",\"ry\":\"2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"13\",\"x2\":\"23\",\"y2\":\"11\"},\"child\":[]}]})(props);\n};\nexport function FiBatteryCharging (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"23\",\"y1\":\"13\",\"x2\":\"23\",\"y2\":\"11\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"11 6 7 12 13 12 9 18\"},\"child\":[]}]})(props);\n};\nexport function FiBarChart (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"20\",\"x2\":\"12\",\"y2\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"18\",\"y1\":\"20\",\"x2\":\"18\",\"y2\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"20\",\"x2\":\"6\",\"y2\":\"16\"},\"child\":[]}]})(props);\n};\nexport function FiBarChart2 (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"18\",\"y1\":\"20\",\"x2\":\"18\",\"y2\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"20\",\"x2\":\"12\",\"y2\":\"4\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"6\",\"y1\":\"20\",\"x2\":\"6\",\"y2\":\"14\"},\"child\":[]}]})(props);\n};\nexport function FiAward (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"8\",\"r\":\"7\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"8.21 13.89 7 23 12 20 17 23 15.79 13.88\"},\"child\":[]}]})(props);\n};\nexport function FiAtSign (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"4\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\"},\"child\":[]}]})(props);\n};\nexport function FiArrowUp (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"19\",\"x2\":\"12\",\"y2\":\"5\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"5 12 12 5 19 12\"},\"child\":[]}]})(props);\n};\nexport function FiArrowUpRight (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"7\",\"y1\":\"17\",\"x2\":\"17\",\"y2\":\"7\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"7 7 17 7 17 17\"},\"child\":[]}]})(props);\n};\nexport function FiArrowUpLeft (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"17\",\"x2\":\"7\",\"y2\":\"7\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"7 17 7 7 17 7\"},\"child\":[]}]})(props);\n};\nexport function FiArrowUpCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 12 12 8 8 12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"16\",\"x2\":\"12\",\"y2\":\"8\"},\"child\":[]}]})(props);\n};\nexport function FiArrowRight (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"5\",\"y1\":\"12\",\"x2\":\"19\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"12 5 19 12 12 19\"},\"child\":[]}]})(props);\n};\nexport function FiArrowRightCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"12 16 16 12 12 8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"8\",\"y1\":\"12\",\"x2\":\"16\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiArrowLeft (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"19\",\"y1\":\"12\",\"x2\":\"5\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"12 19 5 12 12 5\"},\"child\":[]}]})(props);\n};\nexport function FiArrowLeftCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"12 8 8 12 12 16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16\",\"y1\":\"12\",\"x2\":\"8\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiArrowDown (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"5\",\"x2\":\"12\",\"y2\":\"19\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"19 12 12 19 5 12\"},\"child\":[]}]})(props);\n};\nexport function FiArrowDownRight (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"7\",\"y1\":\"7\",\"x2\":\"17\",\"y2\":\"17\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 7 17 17 7 17\"},\"child\":[]}]})(props);\n};\nexport function FiArrowDownLeft (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"7\",\"x2\":\"7\",\"y2\":\"17\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"17 17 7 17 7 7\"},\"child\":[]}]})(props);\n};\nexport function FiArrowDownCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"polyline\",\"attr\":{\"points\":\"8 12 12 16 16 12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12\",\"y2\":\"16\"},\"child\":[]}]})(props);\n};\nexport function FiArchive (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"21 8 21 21 3 21 3 8\"},\"child\":[]},{\"tag\":\"rect\",\"attr\":{\"x\":\"1\",\"y\":\"3\",\"width\":\"22\",\"height\":\"5\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"10\",\"y1\":\"12\",\"x2\":\"14\",\"y2\":\"12\"},\"child\":[]}]})(props);\n};\nexport function FiAperture (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14.31\",\"y1\":\"8\",\"x2\":\"20.05\",\"y2\":\"17.94\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9.69\",\"y1\":\"8\",\"x2\":\"21.17\",\"y2\":\"8\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"7.38\",\"y1\":\"12\",\"x2\":\"13.12\",\"y2\":\"2.06\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"9.69\",\"y1\":\"16\",\"x2\":\"3.95\",\"y2\":\"6.06\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"14.31\",\"y1\":\"16\",\"x2\":\"2.83\",\"y2\":\"16\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"16.62\",\"y1\":\"12\",\"x2\":\"10.88\",\"y2\":\"21.94\"},\"child\":[]}]})(props);\n};\nexport function FiAnchor (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"5\",\"r\":\"3\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"22\",\"x2\":\"12\",\"y2\":\"8\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 12H2a10 10 0 0 0 20 0h-3\"},\"child\":[]}]})(props);\n};\nexport function FiAlignRight (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"10\",\"x2\":\"7\",\"y2\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"6\",\"x2\":\"3\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"14\",\"x2\":\"3\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"18\",\"x2\":\"7\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiAlignLeft (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"10\",\"x2\":\"3\",\"y2\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"6\",\"x2\":\"3\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"14\",\"x2\":\"3\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"17\",\"y1\":\"18\",\"x2\":\"3\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiAlignJustify (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"10\",\"x2\":\"3\",\"y2\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"6\",\"x2\":\"3\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"14\",\"x2\":\"3\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"18\",\"x2\":\"3\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiAlignCenter (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"line\",\"attr\":{\"x1\":\"18\",\"y1\":\"10\",\"x2\":\"6\",\"y2\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"6\",\"x2\":\"3\",\"y2\":\"6\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"21\",\"y1\":\"14\",\"x2\":\"3\",\"y2\":\"14\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"18\",\"y1\":\"18\",\"x2\":\"6\",\"y2\":\"18\"},\"child\":[]}]})(props);\n};\nexport function FiAlertTriangle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"9\",\"x2\":\"12\",\"y2\":\"13\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"17\",\"x2\":\"12.01\",\"y2\":\"17\"},\"child\":[]}]})(props);\n};\nexport function FiAlertOctagon (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"16\",\"x2\":\"12.01\",\"y2\":\"16\"},\"child\":[]}]})(props);\n};\nexport function FiAlertCircle (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"8\",\"x2\":\"12\",\"y2\":\"12\"},\"child\":[]},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"16\",\"x2\":\"12.01\",\"y2\":\"16\"},\"child\":[]}]})(props);\n};\nexport function FiAirplay (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\"},\"child\":[]},{\"tag\":\"polygon\",\"attr\":{\"points\":\"12 15 17 21 7 21 12 15\"},\"child\":[]}]})(props);\n};\nexport function FiActivity (props) {\n  return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"22 12 18 12 15 21 9 3 6 12 2 12\"},\"child\":[]}]})(props);\n};\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Ontology-specific accent maps — the per-kind colour and per-link-kind\n * stroke dash pattern that the renderer can't get from the shared Chakra\n * theme alone.\n *\n * Colour values reference the shared brand / gray / status palette so they\n * track theme changes. Edge dash patterns are SVG `stroke-dasharray`\n * strings (not colours) so they don't belong in the theme.\n *\n * Both maps are typed as `Record<OntologyXxxKind, ...>` — if the East\n * `NodeKindType` / `LinkKindType` gains a tag, TypeScript flags the\n * missing entry here as a compile error.\n *\n * @packageDocumentation\n */\n\nimport type { OntologyNodeKind, OntologyLinkKind } from './types.js';\n\n/**\n * Per-kind 2px top-stripe colour, applied to the node card. Card body\n * stays neutral `paper / ink` regardless of kind.\n *\n * Values are literal hex anchored to the shared brand / gray / status\n * palette (`#3a7780` = `brand.600`, `#2f7a5b` = `status.pos`, etc.). Mixed\n * tones for `computation` / `resource` / `policy` / `document` use\n * `color-mix` math against those same anchors (precomputed because Chakra\n * tokens don't natively express `color-mix`).\n */\nexport const NODE_KIND_ACCENT: Record<OntologyNodeKind, string> = {\n    process:     '#3a7780', // brand.600\n    computation: '#42757d', // color-mix(brand.600 60%, gray.500)\n    decision:    '#2b4b55', // brand.700\n    objective:   '#253333', // gray.800\n    kpi:         '#2f7a5b', // status.pos\n    agent:       '#6d5a7a', // color-mix(brand.700 45%, status.warn 15%, gray.500) — plum, people/role tone\n    data:        '#b8862d', // status.warn\n    resource:    '#56727a', // color-mix(brand.600 30%, gray.500)\n    policy:      '#8d7a5f', // color-mix(status.warn 50%, gray.600)\n    document:    '#bcd1d3', // color-mix(brand.600 30%, gray.100)\n    group:       '#4a5f5f', // gray.600\n};\n\n/**\n * Per-link-kind stroke dash pattern. Empty string `'none'` (CSS-friendly)\n * → solid line. Patterns mirror the schematic vocabulary\n * (flow / signal / dependency / constraint / simulation) in\n * `east-ui-showcase/dist-design/configure__pattern__schematic.html`.\n */\nexport const EDGE_DASH: Record<OntologyLinkKind, string> = {\n    // flow — solid\n    uses:              'none',\n    executes:          'none',\n    produces:          'none',\n    used_by:           'none',\n    drives:            'none',\n    contains:          'none',\n    results_in:        'none',\n    // signal\n    informs:           '4,4',\n    measures:          '4,4',\n    // dependency\n    gets_data_from:    '1.5,4',\n    inserts_data_into: '1.5,4',\n    references:        '1.5,4',\n    // constraint\n    constrains:        '8,4',\n    validates:         '8,4',\n    defines:           '8,4',\n    // simulation\n    simulates:         '10,2,2,2',\n};\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `<OntologyNode>` — ReactFlow custom node for the ontology editor.\n *\n * Follows the bsys `.lib-card` box: a flat bordered `paper` card, 2px\n * radius, **no top stripe** — a 32×32 brand-tinted icon on the left and a\n * content column with the name (body 13/600) over a kind tag (mono 9.5/600\n * uppercase, kind-coloured). Optional top-right flag pill. Selected →\n * brand-tint fill + brand border. Four outlined connection handles.\n *\n * @packageDocumentation\n */\n\nimport { memo, useMemo } from 'react';\nimport { Handle, Position, type NodeProps, type Node } from '@xyflow/react';\nimport { Box, Text, VStack } from '@chakra-ui/react';\nimport type { ComponentType } from 'react';\nimport {\n    FiTarget, FiBarChart, FiCheckCircle, FiSettings, FiBox,\n    FiDatabase, FiShield, FiFileText, FiCpu, FiFolder, FiUser,\n} from 'react-icons/fi';\nimport type { OntologyNodeKind } from './types.js';\nimport { NODE_KIND_ACCENT } from './accents.js';\n\nconst NODE_ICONS: Record<OntologyNodeKind, ComponentType<{ size?: number }>> = {\n    objective:   FiTarget,\n    kpi:         FiBarChart,\n    decision:    FiCheckCircle,\n    process:     FiSettings,\n    resource:    FiBox,\n    agent:       FiUser,\n    data:        FiDatabase,\n    policy:      FiShield,\n    document:    FiFileText,\n    computation: FiCpu,\n    group:       FiFolder,\n};\n\n/** Data the parent passes through to the ReactFlow node-renderer. */\nexport interface OntologyFlowNodeData {\n    name: string;\n    description: string | undefined;\n    type: OntologyNodeKind;\n    attention: 'focused' | 'normal' | 'unfocused';\n    /** Optional status pill shown top-right (e.g. a validation flag). */\n    flag?: string;\n    [key: string]: unknown;\n}\n\n// `.sch-handle` — 8×8 paper-filled, 1.4px ink4 outline.\nconst HANDLE_BASE: React.CSSProperties = {\n    width: 8,\n    height: 8,\n    background: '#ffffff',\n    border: '1.4px solid #6b8080',\n    boxSizing: 'border-box',\n    zIndex: 5,\n};\n\nconst HANDLE_TARGET: React.CSSProperties = {\n    ...HANDLE_BASE,\n    width: 12,\n    height: 12,\n    opacity: 0.45,\n};\n\nexport const OntologyNode = memo(({ data, selected }: NodeProps<Node<OntologyFlowNodeData>>) => {\n    const Icon = useMemo(() => NODE_ICONS[data.type] ?? FiBox, [data.type]);\n    const isGroup = data.type === 'group';\n    const isFocused = data.attention === 'focused';\n    const isUnfocused = data.attention === 'unfocused';\n    const accent = NODE_KIND_ACCENT[data.type];\n\n    return (\n        <Box\n            position=\"relative\"\n            display=\"grid\"\n            gridTemplateColumns=\"32px 1fr\"\n            gap=\"2\"\n            alignItems=\"center\"\n            bg={selected ? 'bg.brand.subtle' : 'bg.surface'}\n            border=\"1px solid\"\n            borderColor={selected ? 'brand.solid' : isFocused ? 'border.strong' : 'border.subtle'}\n            borderStyle={isGroup ? 'dashed' : 'solid'}\n            borderRadius=\"sm\"\n            px=\"2.5\"\n            py=\"2\"\n            minW={isGroup ? '200px' : '172px'}\n            maxW={isGroup ? '280px' : '240px'}\n            cursor=\"pointer\"\n            transition=\"border-color 120ms, background 120ms, opacity 120ms\"\n            opacity={isUnfocused ? 0.4 : 1}\n            boxShadow=\"sm\"\n            _hover={{ borderColor: 'brand.solid' }}\n            fontFeatureSettings='\"tnum\"'\n        >\n            {/* Source handles — outlined ink4 circles, all four sides. */}\n            <Handle type=\"source\" position={Position.Top}    id=\"top\"    style={HANDLE_BASE} />\n            <Handle type=\"source\" position={Position.Bottom} id=\"bottom\" style={HANDLE_BASE} />\n            <Handle type=\"source\" position={Position.Left}   id=\"left\"   style={HANDLE_BASE} />\n            <Handle type=\"source\" position={Position.Right}  id=\"right\"  style={HANDLE_BASE} />\n            {/* Target handles — larger drop-zones, low-opacity outlined. */}\n            <Handle type=\"target\" position={Position.Top}    id=\"top-target\"    style={HANDLE_TARGET} />\n            <Handle type=\"target\" position={Position.Bottom} id=\"bottom-target\" style={HANDLE_TARGET} />\n            <Handle type=\"target\" position={Position.Left}   id=\"left-target\"   style={HANDLE_TARGET} />\n            <Handle type=\"target\" position={Position.Right}  id=\"right-target\"  style={HANDLE_TARGET} />\n\n            {/* 32×32 brand-tinted icon block (left column). */}\n            <Box\n                w=\"32px\"\n                h=\"32px\"\n                bg=\"bg.brand.subtle\"\n                color=\"brand.fg\"\n                borderRadius=\"sm\"\n                display=\"inline-flex\"\n                alignItems=\"center\"\n                justifyContent=\"center\"\n                flexShrink={0}\n            >\n                <Icon size={18} />\n            </Box>\n\n            {/* Content column: name over kind tag (+ optional description). */}\n            <VStack gap=\"0.5\" alignItems=\"stretch\" minW=\"0\">\n                <Text\n                    fontSize=\"sm\"\n                    fontWeight=\"semibold\"\n                    color=\"fg\"\n                    lineHeight=\"tight\"\n                    overflow=\"hidden\"\n                    textOverflow=\"ellipsis\"\n                    whiteSpace=\"nowrap\"\n                >\n                    {data.name}\n                </Text>\n                <Text\n                    fontFamily=\"mono\"\n                    fontSize=\"2xs\"\n                    fontWeight=\"semibold\"\n                    letterSpacing=\"wider\"\n                    textTransform=\"uppercase\"\n                    color={accent}\n                    lineHeight=\"tight\"\n                >\n                    {data.type}\n                </Text>\n                {data.description && (\n                    <Text\n                        fontSize=\"xs\"\n                        color=\"fg.muted\"\n                        lineHeight=\"snug\"\n                        mt=\"0.5\"\n                        overflow=\"hidden\"\n                        textOverflow=\"ellipsis\"\n                        whiteSpace=\"nowrap\"\n                    >\n                        {data.description}\n                    </Text>\n                )}\n            </VStack>\n\n            {/* Optional status flag pill — top-right, mono uppercase. */}\n            {data.flag && (\n                <Box\n                    position=\"absolute\"\n                    top=\"1\"\n                    right=\"1.5\"\n                    px=\"1.5\"\n                    py=\"0.5\"\n                    bg=\"brand.solid\"\n                    color=\"brand.contrast\"\n                    borderRadius=\"xs\"\n                    fontFamily=\"mono\"\n                    fontSize=\"9px\"\n                    fontWeight=\"bold\"\n                    letterSpacing=\"wider\"\n                    textTransform=\"uppercase\"\n                    lineHeight=\"1.2\"\n                >\n                    {data.flag}\n                </Box>\n            )}\n        </Box>\n    );\n});\n\nOntologyNode.displayName = 'OntologyNode';\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `<OntologyEdge>` — ReactFlow custom edge for the ontology editor.\n *\n * Styled against the bsys `.sch-conn` vocabulary: 1.5px `ink4` stroke with\n * dash patterns from {@link EDGE_DASH}, `ink2` 1.75px for emphasis, neutral\n * mono label pills (no pastel chips).\n *\n * @packageDocumentation\n */\n\nimport { memo, useMemo } from 'react';\nimport { getBezierPath, EdgeLabelRenderer, type EdgeProps, type Edge } from '@xyflow/react';\nimport { Box, Text, useToken } from '@chakra-ui/react';\nimport type { OntologyLinkKind } from './types.js';\nimport { EDGE_DASH } from './accents.js';\n\n/** Data the parent passes through to the ReactFlow edge-renderer. */\nexport interface OntologyFlowEdgeData {\n    type: OntologyLinkKind;\n    label: string;\n    attention: 'focused' | 'normal' | 'unfocused';\n    [key: string]: unknown;\n}\n\nconst STROKE_WIDTH_DEFAULT = 1.5;\nconst STROKE_WIDTH_EMPHASIZED = 1.75;\n\nexport const OntologyEdge = memo(({\n    id,\n    sourceX,\n    sourceY,\n    targetX,\n    targetY,\n    sourcePosition,\n    targetPosition,\n    selected,\n    data,\n}: EdgeProps<Edge<OntologyFlowEdgeData>>) => {\n    const [edgePath, labelX, labelY] = getBezierPath({\n        sourceX, sourceY, sourcePosition,\n        targetX, targetY, targetPosition,\n    });\n\n    // Pull raw hex values from theme so the SVG stroke gets a literal colour.\n    const [strokeDefault, strokeEmphasized, brandSolid] = useToken('colors', [\n        'gray.500', 'gray.800', 'brand.solid',\n    ]);\n\n    const dash = useMemo(\n        () => (data ? EDGE_DASH[data.type] ?? 'none' : 'none'),\n        [data],\n    );\n    const isFocused = data?.attention === 'focused';\n    const isSelected = selected ?? false;\n    const isEmphasized = isFocused || isSelected;\n    // Spec `.sch-conn .edge` draws at full opacity; only the search \"unfocused\"\n    // state dims (a feature on top of the static spec).\n    const opacity = data?.attention === 'unfocused' ? 0.15 : 1;\n\n    if (!data) {\n        return <path id={id} className=\"react-flow__edge-path\" d={edgePath} fill=\"none\" stroke={strokeDefault} strokeWidth={STROKE_WIDTH_DEFAULT} />;\n    }\n\n    const stroke = isSelected ? brandSolid : isEmphasized ? strokeEmphasized : strokeDefault;\n    const strokeWidth = isEmphasized ? STROKE_WIDTH_EMPHASIZED : STROKE_WIDTH_DEFAULT;\n\n    return (\n        <>\n            {/* Wider invisible hit area for easier click target. */}\n            <path\n                d={edgePath}\n                fill=\"none\"\n                stroke=\"transparent\"\n                strokeWidth={20}\n                className=\"react-flow__edge-interaction\"\n            />\n            <path\n                id={id}\n                className=\"react-flow__edge-path\"\n                d={edgePath}\n                fill=\"none\"\n                markerEnd=\"url(#react-flow__arrowclosed)\"\n                style={{\n                    opacity,\n                    strokeDasharray: isEmphasized ? 'none' : (dash === 'none' ? undefined : dash),\n                    stroke,\n                    strokeWidth,\n                }}\n            />\n            <EdgeLabelRenderer>\n                <Box\n                    position=\"absolute\"\n                    transform={`translate(-50%, -50%) translate(${labelX}px, ${labelY}px)`}\n                    className=\"nodrag nopan\"\n                    pointerEvents=\"all\"\n                    opacity={data.attention === 'unfocused' ? 0.25 : 1}\n                >\n                    <Text\n                        fontFamily=\"mono\"\n                        fontSize=\"2xs\"\n                        letterSpacing=\"wider\"\n                        px=\"2\"\n                        py=\"0.5\"\n                        bg={isSelected ? 'bg.brand.subtle' : 'bg.surface'}\n                        color={isSelected ? 'brand.fg' : 'fg.muted'}\n                        border=\"1px solid\"\n                        borderColor={isSelected ? 'brand.solid' : 'border.subtle'}\n                        borderRadius=\"sm\"\n                        whiteSpace=\"nowrap\"\n                    >\n                        {data.label}\n                    </Text>\n                </Box>\n            </EdgeLabelRenderer>\n        </>\n    );\n});\n\nOntologyEdge.displayName = 'OntologyEdge';\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Renderer-side aliases derived from the East `OntologyType` so the\n * renderer tracks any structural change to the source-of-truth type as a\n * compile error — adding a tag to `NodeKindType` / `LinkKindType` or a\n * field to a struct shows up here, not as a silent runtime drift.\n *\n * The flattened representation (`FlatNode` / `FlatLink`) strips the\n * `OptionType` / `VariantType` wrappers down to plain strings so the\n * React components can read them without ceremony.\n *\n * @packageDocumentation\n */\n\nimport type { ValueTypeOf } from '@elaraai/east';\nimport {\n    NodeKindType as EastNodeKindType,\n    LinkKindType as EastLinkKindType,\n    OntologyType as EastOntologyType,\n} from '@elaraai/e3-ui/internal';\n\n/** JS string-union of every `NodeKindType` variant tag. */\nexport type OntologyNodeKind = ValueTypeOf<typeof EastNodeKindType>['type'];\n\n/** JS string-union of every `LinkKindType` variant tag. */\nexport type OntologyLinkKind = ValueTypeOf<typeof EastLinkKindType>['type'];\n\n/** JS-side shape of an `OntologyType` node carrier. */\nexport type OntologyNode = ValueTypeOf<typeof EastOntologyType>['nodes'][number];\n\n/** JS-side shape of an `OntologyType` link carrier. */\nexport type OntologyLink = ValueTypeOf<typeof EastOntologyType>['links'][number];\n\n/** JS-side shape of an `OntologyType` value. */\nexport type Ontology = ValueTypeOf<typeof EastOntologyType>;\n\n/** Flattened node — variant wrappers stripped to plain strings for the\n *  layout + ReactFlow render path. `description` is `string | undefined`\n *  (not optional) because `exactOptionalPropertyTypes` in tsconfig forbids\n *  assigning `undefined` to an optional property. */\nexport interface FlatNode {\n    id: string;\n    name: string;\n    description: string | undefined;\n    nodeType: OntologyNodeKind;\n}\n\n/** Flattened link — kind unwrapped to a plain string. */\nexport interface FlatLink {\n    id: string;\n    source: string;\n    target: string;\n    linkType: OntologyLinkKind;\n}\n\n/** Strip the variant wrappers off an ontology value for layout / render.\n *  Orphan links (source or target missing from the node set) are dropped. */\nexport function flattenOntology(ontology: Ontology): { nodes: FlatNode[]; links: FlatLink[] } {\n    const nodes: FlatNode[] = ontology.nodes.map(n => ({\n        id: n.id,\n        name: n.name,\n        description: n.description.type === 'some' ? n.description.value : undefined,\n        nodeType: n.type.type,\n    }));\n    const nodeIds = new Set(nodes.map(n => n.id));\n    const links: FlatLink[] = ontology.links\n        .filter(l => nodeIds.has(l.source) && nodeIds.has(l.target))\n        .map(l => ({\n            id: l.id,\n            source: l.source,\n            target: l.target,\n            linkType: l.type.type,\n        }));\n    return { nodes, links };\n}\n\n/**\n * Default link kind for a `source → target` node-kind pair, or `null` if\n * no conventional relation exists. Typed as\n * `Record<OntologyNodeKind, Record<OntologyNodeKind, OntologyLinkKind | null>>`\n * — if `NodeKindType` or `LinkKindType` gains a tag, TS flags the missing\n * entries here.\n */\nexport const ValidLinks: Record<OntologyNodeKind, Record<OntologyNodeKind, OntologyLinkKind | null>> = {\n    objective:   { objective: 'drives',   kpi: 'defines',  decision: 'informs', process: 'drives',    resource: 'drives',     agent: 'informs',  data: 'gets_data_from',    policy: 'informs',  document: 'references', computation: 'informs',  group: null },\n    kpi:         { objective: 'measures', kpi: 'results_in', decision: 'informs', process: 'measures', resource: 'measures',  agent: 'measures', data: 'gets_data_from',    policy: null,       document: 'references', computation: 'gets_data_from', group: null },\n    decision:    { objective: 'drives',   kpi: 'drives',   decision: 'informs', process: 'drives',    resource: 'drives',     agent: 'informs',  data: 'inserts_data_into', policy: 'executes', document: 'references', computation: 'uses',     group: null },\n    process:     { objective: 'drives',   kpi: 'results_in', decision: 'informs', process: 'executes', resource: 'produces',  agent: 'uses',     data: 'inserts_data_into', policy: 'executes', document: 'references', computation: 'uses',     group: null },\n    resource:    { objective: 'drives',   kpi: 'results_in', decision: 'informs', process: 'used_by',  resource: null,        agent: 'used_by',  data: 'inserts_data_into', policy: null,       document: 'references', computation: 'uses',     group: null },\n    agent:       { objective: 'drives',   kpi: 'drives',   decision: 'executes', process: 'executes', resource: 'uses',       agent: 'informs',  data: 'inserts_data_into', policy: 'executes', document: 'references', computation: 'uses',     group: null },\n    data:        { objective: 'informs',  kpi: 'informs',  decision: 'informs', process: 'informs',   resource: 'informs',    agent: 'informs',  data: 'gets_data_from',    policy: 'validates',document: 'references', computation: 'informs',  group: null },\n    policy:      { objective: 'drives',   kpi: 'defines',  decision: 'constrains', process: 'constrains', resource: 'constrains', agent: 'constrains', data: 'constrains',  policy: 'informs',  document: 'references', computation: 'constrains', group: null },\n    document:    { objective: 'defines',  kpi: 'defines',  decision: 'informs', process: 'defines',   resource: 'defines',    agent: 'defines',  data: 'defines',           policy: 'defines',  document: 'references', computation: 'defines',  group: 'defines' },\n    computation: { objective: 'measures', kpi: 'produces', decision: 'informs', process: 'simulates', resource: 'simulates',  agent: 'informs',  data: 'produces',          policy: 'validates',document: 'references', computation: 'uses',     group: null },\n    group:       { objective: 'contains', kpi: 'contains', decision: 'contains', process: 'contains',  resource: 'contains',  agent: 'contains', data: 'contains',          policy: 'contains', document: 'contains',   computation: 'contains', group: 'contains' },\n};\n\n/** All node kinds in display order. */\nexport const ALL_NODE_KINDS: OntologyNodeKind[] = [\n    'objective', 'kpi', 'decision', 'process', 'resource', 'agent',\n    'data', 'policy', 'document', 'computation', 'group',\n];\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `<NodePropertiesDrawer>` — slide-out editor for a single ontology node.\n *\n * Ported from the east-ontology webview but decoupled from\n * `OntologyContext` — the node lookup and the update / delete callbacks\n * are injected by the parent renderer.\n *\n * Phase 2 wires the drawer to a read-only `node` lookup; in phase 3 the\n * `onUpdate` / `onDelete` callbacks become non-null and the edit footer\n * goes live.\n *\n * @packageDocumentation\n */\n\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n    Box, Drawer, Field, HStack, Input, NativeSelect, Portal, Text, Textarea, VStack,\n} from '@chakra-ui/react';\nimport type { OntologyNode, OntologyNodeKind } from './types.js';\nimport { ALL_NODE_KINDS } from './types.js';\nimport { NODE_KIND_ACCENT } from './accents.js';\n\nexport interface NodePropertiesDrawerProps {\n    /** Node to edit; `null` closes the drawer. */\n    nodeId: string | null;\n    /** Resolves a node id to its current ontology entry, or `undefined`. */\n    getNode(id: string): OntologyNode | undefined;\n    /** Close the drawer without committing pending edits. */\n    onClose(): void;\n    /** Apply edits to a node. Pass `null` to disable mutation (read-only). */\n    onUpdate: ((id: string, updates: { type?: OntologyNodeKind; name?: string; description?: string }) => void) | null;\n    /** Delete a node. Pass `null` to disable. */\n    onDelete: ((id: string) => void) | null;\n}\n\ninterface NodePropertiesFormProps {\n    nodeId: string;\n    node: OntologyNode;\n    onUpdate: NodePropertiesDrawerProps['onUpdate'];\n    onDelete: NodePropertiesDrawerProps['onDelete'];\n    onClose: () => void;\n}\n\nfunction NodePropertiesForm({ nodeId, node, onUpdate, onDelete, onClose }: NodePropertiesFormProps) {\n    const readonly = onUpdate === null;\n    const serverName = node.name;\n    const serverDesc = node.description.type === 'some' ? node.description.value : '';\n    const [name, setName] = useState(serverName);\n    const [description, setDescription] = useState(serverDesc);\n\n    useEffect(() => { setName(serverName); }, [serverName]);\n    useEffect(() => { setDescription(serverDesc); }, [serverDesc]);\n\n    return (\n        <VStack gap=\"4\" align=\"stretch\">\n            <Field.Root>\n                <Field.Label fontFamily=\"mono\" fontSize=\"2xs\" letterSpacing=\"widest\" textTransform=\"uppercase\" color=\"fg.muted\">\n                    Type\n                </Field.Label>\n                <HStack gap=\"2\" alignItems=\"center\">\n                    <Box w=\"8px\" h=\"8px\" borderRadius=\"full\" bg={NODE_KIND_ACCENT[node.type.type]} flexShrink={0} />\n                    <NativeSelect.Root size=\"sm\" flex=\"1\" disabled={readonly}>\n                        <NativeSelect.Field\n                            value={node.type.type}\n                            onChange={(e: React.ChangeEvent<HTMLSelectElement>) => onUpdate?.(nodeId, { type: e.target.value as OntologyNodeKind })}\n                        >\n                            {ALL_NODE_KINDS.map(nt => <option key={nt} value={nt}>{nt}</option>)}\n                        </NativeSelect.Field>\n                        <NativeSelect.Indicator />\n                    </NativeSelect.Root>\n                </HStack>\n            </Field.Root>\n\n            <Field.Root>\n                <Field.Label fontFamily=\"mono\" fontSize=\"2xs\" letterSpacing=\"widest\" textTransform=\"uppercase\" color=\"fg.muted\">\n                    Name\n                </Field.Label>\n                <Input\n                    size=\"sm\"\n                    value={name}\n                    disabled={readonly}\n                    onChange={(e: React.ChangeEvent<HTMLInputElement>) => setName(e.target.value)}\n                    onBlur={() => { if (!readonly && name !== serverName) onUpdate?.(nodeId, { name }); }}\n                    onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n                        if (readonly) return;\n                        if (e.key === 'Enter' && name !== serverName) onUpdate?.(nodeId, { name });\n                    }}\n                />\n            </Field.Root>\n\n            <Field.Root>\n                <Field.Label fontFamily=\"mono\" fontSize=\"2xs\" letterSpacing=\"widest\" textTransform=\"uppercase\" color=\"fg.muted\">\n                    Description\n                </Field.Label>\n                <Textarea\n                    size=\"sm\"\n                    value={description}\n                    rows={4}\n                    disabled={readonly}\n                    onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) => setDescription(e.target.value)}\n                    onBlur={() => { if (!readonly && description !== serverDesc) onUpdate?.(nodeId, { description }); }}\n                />\n            </Field.Root>\n\n            {!readonly && (\n                <HStack gap=\"2\" pt=\"2\" borderTop=\"1px solid\" borderColor=\"border.subtle\" justifyContent=\"space-between\">\n                    <Box\n                        as=\"button\"\n                        fontFamily=\"mono\"\n                        fontSize=\"xs\"\n                        letterSpacing=\"wider\"\n                        textTransform=\"uppercase\"\n                        color=\"ink.danger\"\n                        px=\"3\" py=\"1.5\"\n                        border=\"1px solid\"\n                        borderColor=\"transparent\"\n                        _hover={{ borderColor: 'ink.danger' }}\n                        onClick={() => { onDelete?.(nodeId); onClose(); }}\n                    >\n                        Delete\n                    </Box>\n                    <Text fontFamily=\"mono\" fontSize=\"2xs\" letterSpacing=\"widest\" textTransform=\"uppercase\" color=\"fg.subtle\">\n                        Edits save on blur\n                    </Text>\n                </HStack>\n            )}\n        </VStack>\n    );\n}\n\nexport function NodePropertiesDrawer({ nodeId, getNode, onClose, onUpdate, onDelete }: NodePropertiesDrawerProps) {\n    const node = useMemo(() => (nodeId ? getNode(nodeId) : undefined), [nodeId, getNode]);\n    const open = nodeId !== null && node !== undefined;\n\n    return (\n        <Drawer.Root open={open} onOpenChange={(d) => { if (!d.open) onClose(); }} placement=\"end\" size=\"sm\">\n            <Portal>\n                <Drawer.Backdrop />\n                <Drawer.Positioner>\n                    <Drawer.Content bg=\"bg.surface\" borderLeft=\"1px solid\" borderColor=\"border.subtle\">\n                        {/* eyebrow header */}\n                        <Drawer.Header bg=\"bg.panel\" borderBottom=\"1px solid\" borderColor=\"border.subtle\" px=\"4\" py=\"3\">\n                            <HStack justify=\"space-between\" alignItems=\"center\">\n                                <Text fontFamily=\"mono\" fontSize=\"xs\" fontWeight=\"semibold\" letterSpacing=\"widest\" textTransform=\"uppercase\" color=\"fg\">\n                                    Edit Node\n                                </Text>\n                                {nodeId && (\n                                    <Text fontFamily=\"mono\" fontSize=\"2xs\" letterSpacing=\"wider\" color=\"fg.muted\">\n                                        {nodeId}\n                                    </Text>\n                                )}\n                            </HStack>\n                        </Drawer.Header>\n                        <Drawer.Body px=\"4\" py=\"4\">\n                            {node && nodeId && (\n                                <NodePropertiesForm\n                                    nodeId={nodeId}\n                                    node={node}\n                                    onUpdate={onUpdate}\n                                    onDelete={onDelete}\n                                    onClose={onClose}\n                                />\n                            )}\n                        </Drawer.Body>\n                    </Drawer.Content>\n                </Drawer.Positioner>\n            </Portal>\n        </Drawer.Root>\n    );\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Table projection of an ontology value — the pure derivation behind the\n * editor's table view. Internal to the component (not exported from the\n * package index): nothing here is public API.\n *\n * The projection renders the ontology as a value-driver-tree-shaped table:\n *\n * - **Objective forest** — apex objectives (those that don't `drive`\n *   another objective) at the top, sub-objectives indented beneath via\n *   `objective --drives--> objective` chains.\n * - **KPI tier** — within an objective, processes partition under the KPI\n *   that connects them to it (`process --results_in--> kpi` /\n *   `kpi --measures--> process`, then `kpi --drives--> objective`).\n * - **Process rows** — the leaves, ordered by **value-chain stage**: the\n *   longest-path layering of the process-precedence DAG induced by\n *   resource flow (`A produces r` ∧ `B uses r` ⇒ `A ≺ B`), with\n *   strongly-connected components condensed first so resource cycles\n *   (cash → materials → goods → cash) are honest: every member shares a\n *   stage and is flagged `cyclic` instead of breaking the sort.\n * - **Lints** — REA-duality and reachability checks (a process with no\n *   inputs or no outputs, an unmeasured process, a decision driving\n *   nothing, an unreachable objective, orphan links).\n *\n * @packageDocumentation\n */\n\nimport type { Ontology, OntologyNodeKind } from './types.js';\n\n// ============================================================================\n// Output shape.\n// ============================================================================\n\n/** A node reference rendered as a chip in a table cell. */\nexport interface NodeChip {\n    id: string;\n    name: string;\n    kind: OntologyNodeKind;\n}\n\n/** A process adjacent in the resource flow, with the resources that\n *  connect it — the row-level answer to \"how does this process affect\n *  the next one\". */\nexport interface FlowNeighbor {\n    id: string;\n    name: string;\n    /** Names of the resources carrying the dependency. */\n    via: string[];\n}\n\n/** One process leaf row. */\nexport interface ProcessRow {\n    id: string;\n    name: string;\n    description: string | undefined;\n    /** 1-based global value-chain stage (longest-path layer of the SCC\n     *  condensation). Identical for every member of a resource cycle. */\n    stage: number;\n    /** True iff this process is in a resource-flow cycle (SCC size > 1). */\n    cyclic: boolean;\n    /** Names of the other processes in the same cycle (empty if acyclic). */\n    cycleWith: string[];\n    /** Processes that produce a resource this one uses (what feeds me). */\n    upstream: FlowNeighbor[];\n    /** Processes that use a resource this one produces (what I feed). */\n    downstream: FlowNeighbor[];\n    uses: NodeChip[];\n    produces: NodeChip[];\n    kpis: NodeChip[];\n    data: NodeChip[];\n    decisions: NodeChip[];\n    policies: NodeChip[];\n    agents: NodeChip[];\n    /** KPIs (beyond the section's own) that also connect this row to the\n     *  enclosing objective — rendered as \"also via …\" chips. */\n    alsoVia: NodeChip[];\n    /** Row-level completeness warnings (REA duality etc.). */\n    lints: string[];\n}\n\n/** A KPI sub-section within an objective group. `kpi === null` collects\n *  processes that reach the objective without a connecting KPI (direct\n *  `process --drives--> objective`). */\nexport interface KpiSection {\n    kpi: NodeChip | null;\n    rows: ProcessRow[];\n}\n\n/** An objective group — one node of the objective forest. */\nexport interface ObjectiveGroup {\n    /** `null` for the synthetic \"Unassigned\" group. */\n    id: string | null;\n    name: string;\n    description: string | undefined;\n    /** Indent depth in the objective forest (apex = 0). */\n    depth: number;\n    /** KPI sub-sections. A single section with `kpi: null` when the\n     *  objective has at most one connecting KPI (no tier tax). */\n    sections: KpiSection[];\n    /** Sub-objectives indented beneath this one. */\n    children: ObjectiveGroup[];\n    /** Totals across this group (excluding children). */\n    processCount: number;\n    decisionCount: number;\n    lintCount: number;\n}\n\n/** The full table projection. */\nexport interface TableProjection {\n    groups: ObjectiveGroup[];\n    /** Graph-level warnings (unattached KPIs, idle decisions, orphan links…). */\n    lints: string[];\n    /** Highest stage number assigned (for the stage legend). */\n    stageCount: number;\n    /** Total process count (for the empty state). */\n    processCount: number;\n}\n\n// ============================================================================\n// Internal graph helpers.\n// ============================================================================\n\ninterface FlatNode {\n    id: string;\n    name: string;\n    description: string | undefined;\n    kind: OntologyNodeKind;\n}\n\n/** Tarjan strongly-connected components over a directed adjacency map.\n *  Returns one array of node ids per component, and the component index\n *  per node. Iterative (explicit stack) so deep chains can't overflow. */\nfunction tarjanScc(\n    ids: string[],\n    adj: Map<string, Set<string>>,\n): { components: string[][]; componentOf: Map<string, number> } {\n    const index = new Map<string, number>();\n    const lowlink = new Map<string, number>();\n    const onStack = new Set<string>();\n    const stack: string[] = [];\n    const components: string[][] = [];\n    const componentOf = new Map<string, number>();\n    let counter = 0;\n\n    for (const root of ids) {\n        if (index.has(root)) continue;\n        // Each frame: [node, iterator position into its successors].\n        const work: Array<[string, string[], number]> = [[root, [...(adj.get(root) ?? [])], 0]];\n        index.set(root, counter);\n        lowlink.set(root, counter);\n        counter += 1;\n        stack.push(root);\n        onStack.add(root);\n\n        while (work.length > 0) {\n            const frame = work[work.length - 1]!;\n            const [v, succs] = frame;\n            if (frame[2] < succs.length) {\n                const w = succs[frame[2]]!;\n                frame[2] += 1;\n                if (!index.has(w)) {\n                    index.set(w, counter);\n                    lowlink.set(w, counter);\n                    counter += 1;\n                    stack.push(w);\n                    onStack.add(w);\n                    work.push([w, [...(adj.get(w) ?? [])], 0]);\n                } else if (onStack.has(w)) {\n                    lowlink.set(v, Math.min(lowlink.get(v)!, index.get(w)!));\n                }\n            } else {\n                work.pop();\n                if (work.length > 0) {\n                    const parent = work[work.length - 1]![0];\n                    lowlink.set(parent, Math.min(lowlink.get(parent)!, lowlink.get(v)!));\n                }\n                if (lowlink.get(v) === index.get(v)) {\n                    const component: string[] = [];\n                    for (;;) {\n                        const w = stack.pop()!;\n                        onStack.delete(w);\n                        component.push(w);\n                        if (w === v) break;\n                    }\n                    const ci = components.length;\n                    components.push(component);\n                    for (const w of component) componentOf.set(w, ci);\n                }\n            }\n        }\n    }\n    return { components, componentOf };\n}\n\n/** Longest-path layering of a DAG: layer(n) = 1 + max(layer(preds)). */\nfunction longestPathLayers(count: number, edges: Array<[number, number]>): number[] {\n    const preds: number[][] = Array.from({ length: count }, () => []);\n    const outDeg: number[] = Array.from({ length: count }, () => 0);\n    const inDeg: number[] = Array.from({ length: count }, () => 0);\n    for (const [a, b] of edges) {\n        preds[b]!.push(a);\n        outDeg[a]! += 1;\n        inDeg[b]! += 1;\n    }\n    // Kahn order, then relax. (The graph is a condensation, hence acyclic.)\n    const layer: number[] = Array.from({ length: count }, () => 1);\n    const queue: number[] = [];\n    const remaining = [...inDeg];\n    for (let i = 0; i < count; i++) if (remaining[i] === 0) queue.push(i);\n    const order: number[] = [];\n    while (queue.length > 0) {\n        const n = queue.shift()!;\n        order.push(n);\n        for (const [a, b] of edges) {\n            if (a !== n) continue;\n            remaining[b]! -= 1;\n            if (remaining[b] === 0) queue.push(b);\n        }\n    }\n    for (const n of order) {\n        for (const p of preds[n]!) layer[n] = Math.max(layer[n]!, layer[p]! + 1);\n    }\n    return layer;\n}\n\n// ============================================================================\n// The projection.\n// ============================================================================\n\nexport function projectTable(ontology: Ontology): TableProjection {\n    // ---- Flatten + index. -------------------------------------------------\n    const nodes: FlatNode[] = ontology.nodes.map(n => ({\n        id: n.id,\n        name: n.name,\n        description: n.description.type === 'some' ? n.description.value : undefined,\n        kind: n.type.type,\n    }));\n    const byId = new Map(nodes.map(n => [n.id, n]));\n    const lints: string[] = [];\n\n    interface FlatLink { source: string; target: string; kind: string }\n    const links: FlatLink[] = [];\n    for (const l of ontology.links) {\n        if (!byId.has(l.source) || !byId.has(l.target)) {\n            lints.push(`Orphan link ${l.id}: ${l.source} → ${l.target}`);\n            continue;\n        }\n        links.push({ source: l.source, target: l.target, kind: l.type.type });\n    }\n\n    const chip = (id: string): NodeChip => {\n        const n = byId.get(id)!;\n        return { id: n.id, name: n.name, kind: n.kind };\n    };\n    const ofKind = (kind: OntologyNodeKind) => nodes.filter(n => n.kind === kind);\n    const processes = ofKind('process');\n    const sortChips = (cs: NodeChip[]) => [...new Map(cs.map(c => [c.id, c])).values()]\n        .sort((a, b) => a.name.localeCompare(b.name));\n\n    // ---- Per-process relations (liberal across canonical directions). -----\n    const rel = new Map<string, {\n        uses: NodeChip[]; produces: NodeChip[]; kpis: NodeChip[]; data: NodeChip[];\n        decisions: NodeChip[]; policies: NodeChip[]; agents: NodeChip[]; directObjectives: string[];\n    }>();\n    for (const p of processes) {\n        rel.set(p.id, { uses: [], produces: [], kpis: [], data: [], decisions: [], policies: [], agents: [], directObjectives: [] });\n    }\n    const kindOf = (id: string) => byId.get(id)!.kind;\n\n    for (const l of links) {\n        const sk = kindOf(l.source);\n        const tk = kindOf(l.target);\n        // process ↔ resource flow\n        if (sk === 'process' && tk === 'resource' && l.kind === 'uses') rel.get(l.source)!.uses.push(chip(l.target));\n        if (sk === 'resource' && tk === 'process' && l.kind === 'used_by') rel.get(l.target)!.uses.push(chip(l.source));\n        if (sk === 'process' && tk === 'resource' && l.kind === 'produces') rel.get(l.source)!.produces.push(chip(l.target));\n        // process ↔ kpi\n        if (sk === 'kpi' && tk === 'process' && l.kind === 'measures') rel.get(l.target)!.kpis.push(chip(l.source));\n        if (sk === 'process' && tk === 'kpi' && l.kind === 'results_in') rel.get(l.source)!.kpis.push(chip(l.target));\n        // process ↔ data / computation\n        if (sk === 'data' && tk === 'process') rel.get(l.target)!.data.push(chip(l.source));\n        if (sk === 'process' && tk === 'data') rel.get(l.source)!.data.push(chip(l.target));\n        if (sk === 'computation' && tk === 'process') rel.get(l.target)!.data.push(chip(l.source));\n        if (sk === 'process' && tk === 'computation') rel.get(l.source)!.data.push(chip(l.target));\n        // decision → process\n        if (sk === 'decision' && tk === 'process' && l.kind === 'drives') rel.get(l.target)!.decisions.push(chip(l.source));\n        // policy ↔ process\n        if (sk === 'policy' && tk === 'process' && l.kind === 'constrains') rel.get(l.target)!.policies.push(chip(l.source));\n        if (sk === 'process' && tk === 'policy' && l.kind === 'executes') rel.get(l.source)!.policies.push(chip(l.target));\n        // agent ↔ process\n        if (sk === 'agent' && tk === 'process' && l.kind === 'executes') rel.get(l.target)!.agents.push(chip(l.source));\n        if (sk === 'process' && tk === 'agent' && l.kind === 'uses') rel.get(l.source)!.agents.push(chip(l.target));\n        // process → objective (direct)\n        if (sk === 'process' && tk === 'objective' && l.kind === 'drives') rel.get(l.source)!.directObjectives.push(l.target);\n    }\n\n    // ---- Value-chain stages (SCC condensation + longest-path layers). -----\n    // A ≺ B iff A produces a resource B uses.\n    const producersOf = new Map<string, string[]>(); // resource id -> process ids\n    const usersOf = new Map<string, string[]>();\n    for (const p of processes) {\n        for (const r of rel.get(p.id)!.produces) {\n            producersOf.set(r.id, [...(producersOf.get(r.id) ?? []), p.id]);\n        }\n        for (const r of rel.get(p.id)!.uses) {\n            usersOf.set(r.id, [...(usersOf.get(r.id) ?? []), p.id]);\n        }\n    }\n    const prec = new Map<string, Set<string>>(processes.map(p => [p.id, new Set<string>()]));\n    // a → b via resource r: a produces r, b uses r. `flowVia` remembers the\n    // carrying resources so rows can explain *how* they affect each other.\n    const flowVia = new Map<string, Set<string>>(); // \"a>b\" -> resource names\n    for (const [resourceId, producers] of producersOf) {\n        for (const a of producers) {\n            for (const b of usersOf.get(resourceId) ?? []) {\n                if (a === b) continue;\n                prec.get(a)!.add(b);\n                const key = `${a}>${b}`;\n                if (!flowVia.has(key)) flowVia.set(key, new Set());\n                flowVia.get(key)!.add(byId.get(resourceId)!.name);\n            }\n        }\n    }\n    const neighborsOf = (pid: string): { upstream: FlowNeighbor[]; downstream: FlowNeighbor[] } => {\n        const upstream: FlowNeighbor[] = [];\n        const downstream: FlowNeighbor[] = [];\n        for (const [a, succs] of prec) {\n            if (a === pid) {\n                for (const b of succs) {\n                    downstream.push({ id: b, name: byId.get(b)!.name, via: [...flowVia.get(`${a}>${b}`)!].sort() });\n                }\n            } else if (succs.has(pid)) {\n                upstream.push({ id: a, name: byId.get(a)!.name, via: [...flowVia.get(`${a}>${pid}`)!].sort() });\n            }\n        }\n        upstream.sort((x, y) => x.name.localeCompare(y.name));\n        downstream.sort((x, y) => x.name.localeCompare(y.name));\n        return { upstream, downstream };\n    };\n    const { components, componentOf } = tarjanScc(processes.map(p => p.id), prec);\n    const condensedEdges: Array<[number, number]> = [];\n    const seenEdge = new Set<string>();\n    for (const [a, succs] of prec) {\n        for (const b of succs) {\n            const ca = componentOf.get(a)!;\n            const cb = componentOf.get(b)!;\n            if (ca === cb) continue;\n            const key = `${ca}>${cb}`;\n            if (seenEdge.has(key)) continue;\n            seenEdge.add(key);\n            condensedEdges.push([ca, cb]);\n        }\n    }\n    const layers = longestPathLayers(components.length, condensedEdges);\n    const stageOf = (pid: string) => layers[componentOf.get(pid)!]!;\n    const cycleOf = (pid: string) => components[componentOf.get(pid)!]!;\n    const stageCount = layers.reduce((m, l) => Math.max(m, l), 0);\n\n    // Within a cycle there is no topological order, but there is a best\n    // reading order: enter at the member the rest of the value chain flows\n    // into (an upstream producer *outside* the SCC), then follow the loop —\n    // every row is fed by the row above it, and only the wrap-around edge\n    // points back. Ties (no external inflow) fall back to name.\n    const nameOf = (id: string) => byId.get(id)!.name;\n    const cycleRank = new Map<string, number>();   // walk position within the SCC\n    const sccKey = new Map<string, string>();      // clusters SCC members in the sort\n    for (const component of components) {\n        if (component.length === 1) {\n            const only = component[0]!;\n            cycleRank.set(only, 0);\n            sccKey.set(only, nameOf(only));\n            continue;\n        }\n        const inScc = new Set(component);\n        const externalInflow = (m: string) => {\n            let n = 0;\n            for (const [a, succs] of prec) {\n                if (!inScc.has(a) && succs.has(m)) n += 1;\n            }\n            return n;\n        };\n        const entry = [...component].sort((a, b) =>\n            externalInflow(b) - externalInflow(a) || nameOf(a).localeCompare(nameOf(b)))[0]!;\n        const order: string[] = [];\n        const visited = new Set<string>();\n        const walk = (m: string) => {\n            visited.add(m);\n            order.push(m);\n            const nexts = [...(prec.get(m) ?? [])]\n                .filter(x => inScc.has(x) && !visited.has(x))\n                .sort((a, b) => nameOf(a).localeCompare(nameOf(b)));\n            for (const x of nexts) walk(x);\n        };\n        walk(entry);\n        for (const m of [...component].sort((a, b) => nameOf(a).localeCompare(nameOf(b)))) {\n            if (!visited.has(m)) walk(m);\n        }\n        order.forEach((m, i) => {\n            cycleRank.set(m, i);\n            sccKey.set(m, nameOf(entry));\n        });\n    }\n\n    // ---- KPI → objective reachability (drives chains). ---------------------\n    const drivesAdj = new Map<string, Set<string>>();\n    for (const l of links) {\n        if (l.kind !== 'drives') continue;\n        if (!drivesAdj.has(l.source)) drivesAdj.set(l.source, new Set());\n        drivesAdj.get(l.source)!.add(l.target);\n    }\n    /** Objectives reachable from `start` over `drives` edges. */\n    const reachObjectives = (start: string): Set<string> => {\n        const seen = new Set<string>([start]);\n        const out = new Set<string>();\n        const queue = [start];\n        while (queue.length > 0) {\n            const n = queue.shift()!;\n            for (const next of drivesAdj.get(n) ?? []) {\n                if (seen.has(next)) continue;\n                seen.add(next);\n                if (kindOf(next) === 'objective') out.add(next);\n                queue.push(next);\n            }\n        }\n        return out;\n    };\n    const kpiObjectives = new Map<string, Set<string>>();\n    for (const k of ofKind('kpi')) kpiObjectives.set(k.id, reachObjectives(k.id));\n\n    // ---- Build process rows. -----------------------------------------------\n    const rowOf = (p: FlatNode): ProcessRow => {\n        const r = rel.get(p.id)!;\n        const cycle = cycleOf(p.id);\n        const rowLints: string[] = [];\n        if (r.uses.length === 0) rowLints.push('No inputs (uses)');\n        if (r.produces.length === 0) rowLints.push('No outputs (produces)');\n        if (r.kpis.length === 0) rowLints.push('No KPI');\n        if (r.decisions.length === 0) rowLints.push('No decision');\n        const { upstream, downstream } = neighborsOf(p.id);\n        return {\n            id: p.id,\n            name: p.name,\n            description: p.description,\n            stage: stageOf(p.id),\n            cyclic: cycle.length > 1,\n            cycleWith: cycle.filter(id => id !== p.id).map(id => byId.get(id)!.name).sort(),\n            upstream,\n            downstream,\n            uses: sortChips(r.uses),\n            produces: sortChips(r.produces),\n            kpis: sortChips(r.kpis),\n            data: sortChips(r.data),\n            decisions: sortChips(r.decisions),\n            policies: sortChips(r.policies),\n            agents: sortChips(r.agents),\n            alsoVia: [],\n            lints: rowLints,\n        };\n    };\n\n    // ---- Objective forest. --------------------------------------------------\n    const objectives = ofKind('objective');\n    const objectiveIds = new Set(objectives.map(o => o.id));\n    // child --drives--> parent: the child contributes to the parent, so it\n    // indents beneath it. Apexes have no outgoing drives to an objective.\n    const parentOf = new Map<string, string>();\n    for (const l of links) {\n        if (l.kind !== 'drives') continue;\n        if (!objectiveIds.has(l.source) || !objectiveIds.has(l.target)) continue;\n        if (!parentOf.has(l.source)) parentOf.set(l.source, l.target);\n    }\n\n    // Processes per objective: via KPIs (and direct drives).\n    const processObjectives = new Map<string, Set<string>>();\n    for (const p of processes) {\n        const r = rel.get(p.id)!;\n        const objs = new Set<string>(r.directObjectives);\n        for (const k of r.kpis) {\n            for (const o of kpiObjectives.get(k.id) ?? []) objs.add(o);\n        }\n        processObjectives.set(p.id, objs);\n    }\n\n    // Stage first (the global value chain); within a stage, cycle members\n    // stay contiguous (sccKey) and follow the loop walk (cycleRank).\n    const sortRows = (rows: ProcessRow[]) =>\n        rows.sort((a, b) =>\n            a.stage - b.stage\n            || (sccKey.get(a.id) ?? a.name).localeCompare(sccKey.get(b.id) ?? b.name)\n            || (cycleRank.get(a.id) ?? 0) - (cycleRank.get(b.id) ?? 0)\n            || a.name.localeCompare(b.name));\n\n    const buildGroup = (o: FlatNode, depth: number): ObjectiveGroup => {\n        const members = processes.filter(p => processObjectives.get(p.id)!.has(o.id));\n        // Partition by the first KPI connecting the process to this objective.\n        const connecting = (p: FlatNode): NodeChip[] =>\n            sortChips(rel.get(p.id)!.kpis.filter(k => (kpiObjectives.get(k.id) ?? new Set()).has(o.id)));\n        const kpiIds = sortChips(members.flatMap(connecting));\n        let sections: KpiSection[];\n        if (kpiIds.length <= 1) {\n            // No KPI tier tax for simple objectives.\n            sections = [{ kpi: kpiIds[0] ?? null, rows: sortRows(members.map(rowOf)) }];\n        } else {\n            const byKpi = new Map<string, ProcessRow[]>(kpiIds.map(k => [k.id, []]));\n            const direct: ProcessRow[] = [];\n            for (const p of members) {\n                const ks = connecting(p);\n                const row = rowOf(p);\n                if (ks.length === 0) {\n                    direct.push(row);\n                } else {\n                    row.alsoVia = ks.slice(1);\n                    byKpi.get(ks[0]!.id)!.push(row);\n                }\n            }\n            sections = kpiIds\n                .map(k => ({ kpi: k, rows: sortRows(byKpi.get(k.id)!) }))\n                .filter(s => s.rows.length > 0);\n            if (direct.length > 0) sections.push({ kpi: null, rows: sortRows(direct) });\n        }\n        const children = objectives\n            .filter(c => parentOf.get(c.id) === o.id)\n            .sort((a, b) => a.name.localeCompare(b.name))\n            .map(c => buildGroup(c, depth + 1));\n        const allRows = sections.flatMap(s => s.rows);\n        return {\n            id: o.id,\n            name: o.name,\n            description: o.description,\n            depth,\n            sections,\n            children,\n            processCount: allRows.length,\n            decisionCount: new Set(allRows.flatMap(r => r.decisions.map(d => d.id))).size,\n            lintCount: allRows.reduce((n, r) => n + r.lints.length, 0),\n        };\n    };\n\n    const apexes = objectives\n        .filter(o => !parentOf.has(o.id))\n        .sort((a, b) => a.name.localeCompare(b.name));\n    const groups = apexes.map(o => buildGroup(o, 0));\n\n    // Unassigned group — processes serving no objective. Elicitation debt,\n    // surfaced on purpose.\n    const unassigned = processes.filter(p => processObjectives.get(p.id)!.size === 0);\n    if (unassigned.length > 0) {\n        const rows = sortRows(unassigned.map(rowOf));\n        groups.push({\n            id: null,\n            name: 'Unassigned',\n            description: undefined,\n            depth: 0,\n            sections: [{ kpi: null, rows }],\n            children: [],\n            processCount: rows.length,\n            decisionCount: new Set(rows.flatMap(r => r.decisions.map(d => d.id))).size,\n            lintCount: rows.reduce((n, r) => n + r.lints.length, 0),\n        });\n    }\n\n    // ---- Graph-level lints. --------------------------------------------------\n    const attachedKpis = new Set(processes.flatMap(p => rel.get(p.id)!.kpis.map(k => k.id)));\n    for (const k of ofKind('kpi')) {\n        if (!attachedKpis.has(k.id)) lints.push(`KPI \"${k.name}\": measures nothing`);\n    }\n    const drivingDecisions = new Set<string>();\n    for (const l of links) {\n        if (kindOf(l.source) === 'decision' && (l.kind === 'drives' || l.kind === 'executes')) drivingDecisions.add(l.source);\n    }\n    for (const d of ofKind('decision')) {\n        if (!drivingDecisions.has(d.id)) lints.push(`Decision \"${d.name}\": drives nothing`);\n    }\n    const reachedObjectives = new Set<string>(\n        [...processObjectives.values()].flatMap(s => [...s]),\n    );\n    for (const o of objectives) {\n        const hasChild = objectives.some(c => parentOf.get(c.id) === o.id);\n        if (!reachedObjectives.has(o.id) && !hasChild) lints.push(`Objective \"${o.name}\": nothing drives it`);\n    }\n\n    return {\n        groups,\n        lints,\n        stageCount,\n        processCount: processes.length,\n    };\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `<OntologyTable>` — the Ontology editor's table view: a value-driver-tree\n * shaped projection of the bound graph (see `projection.ts`).\n *\n * Hierarchy lives in the stub column (objective groups → KPI sub-headers\n * with indentation); leaf process rows keep aligned columns so the surface\n * reads as a table, not a tree of cards. Rows order by global value-chain\n * stage; resource cycles share a stage and wear a pulsing ↺ badge.\n *\n * Interactions:\n * - hovering any chip highlights **every occurrence of that node** across\n *   the table (and tints the rows containing it) — hover \"Cash\" and the\n *   working-capital loop lights up;\n * - clicking a row expands its flow detail (fed by / feeds, with the\n *   carrying resources; cycle path; lints) with an animated reveal;\n * - clicking a chip or the expanded \"open\" affordance selects the node in\n *   the shared properties drawer.\n *\n * Styling rides the shared theme: `table` slot recipe for the grid chrome,\n * kind accents from `accents.ts`, and the `spec-pulse-live` keyframe for\n * cycle badges.\n *\n * @packageDocumentation\n */\n\nimport { Fragment, memo, useEffect, useMemo, useState } from 'react';\nimport { Box, HStack, Portal, Text, Tooltip, VStack, chakra, useSlotRecipe } from '@chakra-ui/react';\nimport { FiAlertTriangle, FiArrowDownRight, FiArrowUpRight, FiChevronDown, FiRefreshCw } from 'react-icons/fi';\n\nimport { NODE_KIND_ACCENT } from './accents.js';\nimport type { Ontology as OntologyValue } from './types.js';\nimport {\n    projectTable,\n    type KpiSection,\n    type NodeChip,\n    type ObjectiveGroup,\n    type ProcessRow,\n} from './projection.js';\n\n// ============================================================================\n// Shared bits.\n// ============================================================================\n\ninterface HoverState {\n    hovered: string | null;\n    setHovered: (id: string | null) => void;\n}\n\n/** Themed hover tip (the shared `tooltip` slot recipe), matrix-style. */\nfunction Tip({ label, children }: { label: React.ReactNode; children: React.ReactElement }) {\n    return (\n        <Tooltip.Root openDelay={150} closeDelay={60}>\n            <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n            <Portal>\n                <Tooltip.Positioner>\n                    <Tooltip.Content>{label}</Tooltip.Content>\n                </Tooltip.Positioner>\n            </Portal>\n        </Tooltip.Root>\n    );\n}\n\ninterface ChipProps extends HoverState {\n    chip: NodeChip;\n    emphasized?: boolean;\n    onSelect: (id: string) => void;\n}\n\n/** A node chip — kind-accent dot + name. Hovering one highlights every chip\n *  with the same node id across the table; everything else dims. */\nfunction Chip({ chip, emphasized = false, hovered, setHovered, onSelect }: ChipProps) {\n    const active = hovered === chip.id;\n    const dimmed = hovered !== null && !active;\n    const accent = NODE_KIND_ACCENT[chip.kind];\n    return (\n        <Tip label={`${chip.kind} · ${chip.name}`}>\n        <chakra.button\n            type=\"button\"\n            display=\"inline-flex\"\n            alignItems=\"flex-start\"\n            gap=\"1.5\"\n            px=\"1.5\"\n            py=\"0.5\"\n            borderRadius=\"sm\"\n            border=\"1px solid\"\n            borderColor={active ? accent : emphasized ? 'border.strong' : 'border.subtle'}\n            bg={active || emphasized ? 'bg.brand.subtle' : 'bg.surface'}\n            opacity={dimmed ? 0.4 : 1}\n            transform={active ? 'translateY(-1px)' : 'none'}\n            boxShadow={active ? 'sm' : 'none'}\n            transition=\"opacity 140ms ease, transform 140ms ease, border-color 140ms ease, background 140ms ease\"\n            fontSize=\"xs\"\n            color=\"fg\"\n            cursor=\"pointer\"\n            onMouseEnter={() => setHovered(chip.id)}\n            onMouseLeave={() => setHovered(null)}\n            onClick={(e: React.MouseEvent) => { e.stopPropagation(); onSelect(chip.id); }}\n        >\n            <Box w=\"6px\" h=\"6px\" borderRadius=\"full\" bg={accent} flexShrink={0} mt=\"1\" alignSelf=\"flex-start\" />\n            <Box as=\"span\" textAlign=\"left\" lineHeight=\"short\">\n                {chip.name}\n            </Box>\n        </chakra.button>\n        </Tip>\n    );\n}\n\nfunction ChipCell({ chips, emphasized, hovered, setHovered, onSelect }: {\n    chips: NodeChip[];\n    emphasized?: boolean;\n} & HoverState & { onSelect: (id: string) => void }) {\n    if (chips.length === 0) {\n        return <Text as=\"span\" fontFamily=\"mono\" fontSize=\"2xs\" color=\"fg.subtle\">—</Text>;\n    }\n    return (\n        <HStack gap=\"1\" flexWrap=\"wrap\">\n            {chips.map(c => (\n                <Chip key={c.id} chip={c} emphasized={emphasized ?? false}\n                      hovered={hovered} setHovered={setHovered} onSelect={onSelect} />\n            ))}\n        </HStack>\n    );\n}\n\n/** Does this row mention the hovered node anywhere? Drives the row tint. */\nfunction rowMentions(row: ProcessRow, id: string | null): boolean {\n    if (id === null) return false;\n    if (row.id === id) return true;\n    return [row.uses, row.produces, row.kpis, row.data, row.decisions, row.policies, row.agents, row.alsoVia]\n        .some(chips => chips.some(c => c.id === id));\n}\n\n// ============================================================================\n// Rows.\n// ============================================================================\n\nconst COLUMNS = ['Stage', 'Process', 'Uses', 'Produces', 'KPIs', 'Data', 'Decisions', 'Policies', ''] as const;\nconst COL_WIDTHS = ['44px', '22%', '14%', '14%', '12%', '9%', '15%', '9%', '28px'] as const;\n\ninterface RowCtx extends HoverState {\n    onSelect: (id: string) => void;\n    expanded: Set<string>;\n    toggleExpanded: (id: string) => void;\n    mounted: boolean;\n    cellCss: object;\n}\n\nfunction FlowList({ label, icon, neighbors, hovered, setHovered, onSelect }: {\n    label: string;\n    icon: React.ReactNode;\n    neighbors: ProcessRow['upstream'];\n} & HoverState & { onSelect: (id: string) => void }) {\n    return (\n        <VStack alignItems=\"stretch\" gap=\"1\" minW=\"0\">\n            <HStack gap=\"1\" color=\"fg.subtle\">\n                {icon}\n                <Text fontFamily=\"mono\" fontSize=\"2xs\" fontWeight=\"semibold\" letterSpacing=\"wider\" textTransform=\"uppercase\">\n                    {label}\n                </Text>\n            </HStack>\n            {neighbors.length === 0 ? (\n                <Text fontFamily=\"mono\" fontSize=\"2xs\" color=\"fg.subtle\">none</Text>\n            ) : neighbors.map(n => (\n                <HStack key={n.id} gap=\"1.5\" flexWrap=\"wrap\">\n                    <Chip chip={{ id: n.id, name: n.name, kind: 'process' }}\n                          hovered={hovered} setHovered={setHovered} onSelect={onSelect} />\n                    <Text fontSize=\"2xs\" color=\"fg.muted\">via {n.via.join(', ')}</Text>\n                </HStack>\n            ))}\n        </VStack>\n    );\n}\n\nconst ProcessRowView = memo(function ProcessRowView({ row, index, ctx }: {\n    row: ProcessRow;\n    index: number;\n    ctx: RowCtx;\n}) {\n    const { hovered, setHovered, onSelect, expanded, toggleExpanded, mounted, cellCss } = ctx;\n    const isExpanded = expanded.has(row.id);\n    const tinted = rowMentions(row, hovered);\n    const delay = Math.min(index, 12) * 18;\n    // Zebra keeps adjacent leaf rows distinguishable in dense groups; the\n    // expanded row and its detail panel share one surface so they read as\n    // a single attached unit.\n    const zebra = index % 2 === 1;\n    const rowCellCss = isExpanded ? { ...cellCss, borderBottom: 'none' } : cellCss;\n\n    return (\n        <Fragment>\n            <Box\n                as=\"tr\"\n                cursor=\"pointer\"\n                bg={isExpanded || zebra ? 'bg.panel' : 'transparent'}\n                // Highlight via the spec table's selected treatment — a full\n                // 2px inset ring — never a background tint behind row text.\n                boxShadow={tinted ? 'inset 0 0 0 2px var(--chakra-colors-brand-solid)' : 'none'}\n                opacity={mounted ? 1 : 0}\n                transform={mounted ? 'none' : 'translateY(6px)'}\n                transition={`opacity 220ms ease ${delay}ms, transform 220ms ease ${delay}ms, box-shadow 140ms ease`}\n                _hover={{ boxShadow: 'inset 0 0 0 1px var(--chakra-colors-border-strong)' }}\n                onClick={() => toggleExpanded(row.id)}\n            >\n                <Box as=\"td\" css={rowCellCss} verticalAlign=\"top\">\n                    <HStack gap=\"1\">\n                        <Text fontFamily=\"mono\" fontSize=\"2xs\" fontWeight=\"bold\" color=\"fg.muted\">\n                            S{row.stage}\n                        </Text>\n                        {row.cyclic && (\n                            <Tip label={`Resource cycle: ${[row.name, ...row.cycleWith].join(' → ')} → ${row.name}`}>\n                                <Box color=\"brand.fg\" display=\"inline-flex\">\n                                    <FiRefreshCw size={11} />\n                                </Box>\n                            </Tip>\n                        )}\n                    </HStack>\n                </Box>\n                <Box as=\"td\" css={rowCellCss} verticalAlign=\"top\">\n                    <VStack alignItems=\"stretch\" gap=\"0.5\" minW=\"0\">\n                        <HStack gap=\"1.5\" alignItems=\"flex-start\">\n                            <Box\n                                w=\"7px\" h=\"7px\" borderRadius=\"full\" flexShrink={0} mt=\"1.5\"\n                                bg={NODE_KIND_ACCENT.process}\n                                boxShadow={hovered === row.id ? `0 0 0 3px ${NODE_KIND_ACCENT.process}33` : 'none'}\n                                transition=\"box-shadow 140ms ease\"\n                            />\n                            <Text fontSize=\"sm\" fontWeight=\"semibold\" color=\"fg\" lineHeight=\"tight\">\n                                {row.name}\n                            </Text>\n                            <Box\n                                color=\"fg.subtle\"\n                                marginLeft=\"auto\"\n                                mt=\"1\"\n                                transform={isExpanded ? 'rotate(180deg)' : 'none'}\n                                transition=\"transform 180ms ease\"\n                                display=\"inline-flex\"\n                                flexShrink={0}\n                            >\n                                <FiChevronDown size={12} />\n                            </Box>\n                        </HStack>\n                        {row.agents.length > 0 && (\n                            <HStack gap=\"1\" flexWrap=\"wrap\">\n                                {row.agents.map(a => (\n                                    <Chip key={a.id} chip={a} hovered={hovered} setHovered={setHovered} onSelect={onSelect} />\n                                ))}\n                            </HStack>\n                        )}\n                        {row.description && (\n                            <Text fontSize=\"xs\" color=\"fg.muted\" lineHeight=\"snug\"\n                                  overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\">\n                                {row.description}\n                            </Text>\n                        )}\n                    </VStack>\n                </Box>\n                <Box as=\"td\" css={rowCellCss} verticalAlign=\"top\">\n                    <ChipCell chips={row.uses} hovered={hovered} setHovered={setHovered} onSelect={onSelect} />\n                </Box>\n                <Box as=\"td\" css={rowCellCss} verticalAlign=\"top\">\n                    <ChipCell chips={row.produces} hovered={hovered} setHovered={setHovered} onSelect={onSelect} />\n                </Box>\n                <Box as=\"td\" css={rowCellCss} verticalAlign=\"top\">\n                    <VStack alignItems=\"stretch\" gap=\"1\">\n                        <ChipCell chips={row.kpis} hovered={hovered} setHovered={setHovered} onSelect={onSelect} />\n                        {row.alsoVia.length > 0 && (\n                            <Text fontSize=\"2xs\" color=\"fg.subtle\">\n                                also via {row.alsoVia.map(k => k.name).join(', ')}\n                            </Text>\n                        )}\n                    </VStack>\n                </Box>\n                <Box as=\"td\" css={rowCellCss} verticalAlign=\"top\">\n                    <ChipCell chips={row.data} hovered={hovered} setHovered={setHovered} onSelect={onSelect} />\n                </Box>\n                <Box as=\"td\" css={rowCellCss} verticalAlign=\"top\">\n                    <ChipCell chips={row.decisions} emphasized hovered={hovered} setHovered={setHovered} onSelect={onSelect} />\n                </Box>\n                <Box as=\"td\" css={rowCellCss} verticalAlign=\"top\">\n                    <ChipCell chips={row.policies} hovered={hovered} setHovered={setHovered} onSelect={onSelect} />\n                </Box>\n                <Box as=\"td\" css={rowCellCss} verticalAlign=\"top\" textAlign=\"right\">\n                    {row.lints.length > 0 && (\n                        <Tip label={<VStack alignItems=\"stretch\" gap=\"0.5\">{row.lints.map(l => <Text key={l} fontSize=\"xs\">{l}</Text>)}</VStack>}>\n                            <Box as=\"span\" display=\"inline-flex\" color=\"ink.warning\">\n                                <FiAlertTriangle size={13} />\n                            </Box>\n                        </Tip>\n                    )}\n                </Box>\n            </Box>\n            {/* Expanded flow detail — animated reveal, visually attached to its\n                row: shared surface, no separator above, strong closing rule. */}\n            <Box as=\"tr\">\n                <chakra.td colSpan={COLUMNS.length} p=\"0\" border=\"none\">\n                    <Box\n                        display=\"grid\"\n                        gridTemplateRows={isExpanded ? '1fr' : '0fr'}\n                        transition=\"grid-template-rows 220ms ease\"\n                    >\n                        <Box overflow=\"hidden\" minH=\"0\">\n                            <Box\n                                px=\"4\" py=\"3\"\n                                bg=\"bg.panel\"\n                                borderBottom=\"2px solid\"\n                                borderBottomColor=\"border.strong\"\n                            >\n                                <Box\n                                    display=\"grid\"\n                                    gridTemplateColumns=\"repeat(auto-fit, minmax(240px, 1fr))\"\n                                    gap=\"5\"\n                                    alignItems=\"start\"\n                                >\n                                    <FlowList\n                                        label=\"Upstream\"\n                                        icon={<FiArrowUpRight size={11} />}\n                                        neighbors={row.upstream}\n                                        hovered={hovered} setHovered={setHovered} onSelect={onSelect}\n                                    />\n                                    <FlowList\n                                        label=\"Downstream\"\n                                        icon={<FiArrowDownRight size={11} />}\n                                        neighbors={row.downstream}\n                                        hovered={hovered} setHovered={setHovered} onSelect={onSelect}\n                                    />\n                                    {row.cyclic && (\n                                        <VStack alignItems=\"stretch\" gap=\"1\">\n                                            <HStack gap=\"1\" color=\"brand.fg\">\n                                                <FiRefreshCw size={11} />\n                                                <Text fontFamily=\"mono\" fontSize=\"2xs\" fontWeight=\"semibold\" letterSpacing=\"wider\" textTransform=\"uppercase\">\n                                                    Cycle\n                                                </Text>\n                                            </HStack>\n                                            <Text fontSize=\"xs\" color=\"fg.muted\">\n                                                {[row.name, ...row.cycleWith].join(' → ')} → {row.name}\n                                            </Text>\n                                        </VStack>\n                                    )}\n                                    {row.lints.length > 0 && (\n                                        <VStack alignItems=\"stretch\" gap=\"1\">\n                                            <HStack gap=\"1\" color=\"ink.warning\">\n                                                <FiAlertTriangle size={11} />\n                                                <Text fontFamily=\"mono\" fontSize=\"2xs\" fontWeight=\"semibold\" letterSpacing=\"wider\" textTransform=\"uppercase\">\n                                                    Warnings\n                                                </Text>\n                                            </HStack>\n                                            {row.lints.map(l => (\n                                                <Text key={l} fontSize=\"xs\" color=\"fg.muted\">{l}</Text>\n                                            ))}\n                                        </VStack>\n                                    )}\n                                </Box>\n                                <HStack mt=\"2.5\" justify=\"flex-end\">\n                                    <chakra.button\n                                        type=\"button\"\n                                        fontFamily=\"mono\"\n                                        fontSize=\"2xs\"\n                                        letterSpacing=\"wider\"\n                                        textTransform=\"uppercase\"\n                                        color=\"brand.fg\"\n                                        cursor=\"pointer\"\n                                        _hover={{ textDecoration: 'underline' }}\n                                        onClick={(e: React.MouseEvent) => { e.stopPropagation(); onSelect(row.id); }}\n                                    >\n                                        Open properties →\n                                    </chakra.button>\n                                </HStack>\n                            </Box>\n                        </Box>\n                    </Box>\n                </chakra.td>\n            </Box>\n        </Fragment>\n    );\n});\n\n// ============================================================================\n// Groups.\n// ============================================================================\n\nfunction SectionRows({ section, ctx, startIndex }: { section: KpiSection; ctx: RowCtx; startIndex: number }) {\n    return (\n        <Fragment>\n            {section.kpi && (\n                <Box as=\"tr\" bg=\"bg.panel\">\n                    <chakra.td colSpan={COLUMNS.length} px=\"4\" py=\"1.5\"\n                         borderBottom=\"1px solid\" borderColor=\"border.subtle\">\n                        <HStack gap=\"2\" pl=\"4\">\n                            <Box w=\"6px\" h=\"6px\" borderRadius=\"full\" bg={NODE_KIND_ACCENT.kpi} />\n                            <Text fontFamily=\"mono\" fontSize=\"2xs\" fontWeight=\"semibold\"\n                                  letterSpacing=\"wider\" textTransform=\"uppercase\" color=\"fg.muted\">\n                                via\n                            </Text>\n                            <Chip chip={section.kpi} hovered={ctx.hovered} setHovered={ctx.setHovered} onSelect={ctx.onSelect} />\n                        </HStack>\n                    </chakra.td>\n                </Box>\n            )}\n            {section.rows.map((row, i) => (\n                <ProcessRowView key={row.id} row={row} index={startIndex + i} ctx={ctx} />\n            ))}\n        </Fragment>\n    );\n}\n\nfunction GroupSection({ group, ctx, collapsed, toggleCollapsed, headerCss, columnHeaderCss }: {\n    group: ObjectiveGroup;\n    ctx: RowCtx;\n    collapsed: Set<string>;\n    toggleCollapsed: (key: string) => void;\n    headerCss: object;\n    columnHeaderCss: object;\n}) {\n    const key = group.id ?? '∅';\n    const isCollapsed = collapsed.has(key);\n    const indent = group.depth * 5;\n    let rowIndex = 0;\n\n    return (\n        <Box>\n            {/* Objective header — collapsible tier of the driver tree. */}\n            <HStack\n                px=\"4\" py=\"2.5\"\n                pl={`calc(${indent * 4}px + var(--chakra-spacing-4))`}\n                gap=\"2.5\"\n                borderBottom=\"1px solid\"\n                borderColor=\"border.subtle\"\n                bg=\"bg.panel\"\n                cursor=\"pointer\"\n                userSelect=\"none\"\n                transition=\"background 140ms ease\"\n                _hover={{ bg: 'bg.brand.subtle' }}\n                onClick={() => toggleCollapsed(key)}\n            >\n                <Box\n                    color=\"fg.subtle\"\n                    transform={isCollapsed ? 'rotate(-90deg)' : 'none'}\n                    transition=\"transform 180ms ease\"\n                    display=\"inline-flex\"\n                >\n                    <FiChevronDown size={14} />\n                </Box>\n                <Box w=\"8px\" h=\"8px\" borderRadius=\"full\"\n                     bg={group.id === null ? 'border.strong' : NODE_KIND_ACCENT.objective} flexShrink={0} />\n                <Text fontSize=\"sm\" fontWeight=\"semibold\" color=\"fg\">{group.name}</Text>\n                <Text fontFamily=\"mono\" fontSize=\"2xs\" letterSpacing=\"wider\" color=\"fg.muted\" textTransform=\"uppercase\">\n                    {group.processCount} processes · {group.decisionCount} decisions\n                </Text>\n                {group.lintCount > 0 && (\n                    <Tip label={`${group.lintCount} completeness warnings in this group`}>\n                        <HStack gap=\"1\" color=\"ink.warning\">\n                            <FiAlertTriangle size={12} />\n                            <Text fontFamily=\"mono\" fontSize=\"2xs\" fontWeight=\"bold\">{group.lintCount}</Text>\n                        </HStack>\n                    </Tip>\n                )}\n                {group.description && (\n                    <Text fontSize=\"xs\" color=\"fg.subtle\" overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\">\n                        {group.description}\n                    </Text>\n                )}\n            </HStack>\n\n            {/* Animated collapse of the group's body. */}\n            <Box display=\"grid\" gridTemplateRows={isCollapsed ? '0fr' : '1fr'} transition=\"grid-template-rows 220ms ease\">\n                <Box overflow=\"hidden\" minH=\"0\">\n                    {group.sections.length > 0 && group.processCount > 0 && (\n                        <chakra.table css={headerCss} style={{ tableLayout: 'fixed' }}>\n                            <Box as=\"colgroup\">\n                                {COL_WIDTHS.map((w, i) => <Box as=\"col\" key={i} style={{ width: w }} />)}\n                            </Box>\n                            <Box as=\"thead\">\n                                <Box as=\"tr\">\n                                    {COLUMNS.map(c => (\n                                        <Box as=\"th\" key={c} css={columnHeaderCss} textAlign=\"left\" px=\"3\" py=\"1.5\">\n                                            {c}\n                                        </Box>\n                                    ))}\n                                </Box>\n                            </Box>\n                            <Box as=\"tbody\">\n                                {group.sections.map((s, si) => {\n                                    const start = rowIndex;\n                                    rowIndex += s.rows.length;\n                                    return <SectionRows key={s.kpi?.id ?? `direct-${si}`} section={s} ctx={ctx} startIndex={start} />;\n                                })}\n                            </Box>\n                        </chakra.table>\n                    )}\n                    {group.children.map(child => (\n                        <GroupSection\n                            key={child.id ?? '∅'}\n                            group={child}\n                            ctx={ctx}\n                            collapsed={collapsed}\n                            toggleCollapsed={toggleCollapsed}\n                            headerCss={headerCss}\n                            columnHeaderCss={columnHeaderCss}\n                        />\n                    ))}\n                </Box>\n            </Box>\n        </Box>\n    );\n}\n\n// ============================================================================\n// The table view.\n// ============================================================================\n\nexport interface OntologyTableProps {\n    ontology: OntologyValue;\n    /** Open a node in the shared properties drawer. */\n    onSelectNode: (id: string) => void;\n}\n\nexport const OntologyTable = memo(function OntologyTable({ ontology, onSelectNode }: OntologyTableProps) {\n    const projection = useMemo(() => projectTable(ontology), [ontology]);\n    const tableRecipe = useSlotRecipe({ key: 'table' });\n    const styles = useMemo(() => tableRecipe({}), [tableRecipe]);\n\n    const [hovered, setHovered] = useState<string | null>(null);\n    const [expanded, setExpanded] = useState<Set<string>>(new Set());\n    const [collapsed, setCollapsed] = useState<Set<string>>(new Set());\n    const [showLints, setShowLints] = useState(false);\n\n    // Entry animation — rows stagger in on first mount of the view.\n    const [mounted, setMounted] = useState(false);\n    useEffect(() => {\n        const raf = requestAnimationFrame(() => setMounted(true));\n        return () => cancelAnimationFrame(raf);\n    }, []);\n\n    const ctx: RowCtx = useMemo(() => ({\n        hovered,\n        setHovered,\n        onSelect: onSelectNode,\n        expanded,\n        toggleExpanded: (id: string) => setExpanded(prev => {\n            const next = new Set(prev);\n            if (next.has(id)) next.delete(id); else next.add(id);\n            return next;\n        }),\n        mounted,\n        cellCss: { ...(styles.cell as object), paddingLeft: '12px', paddingRight: '12px', paddingTop: '8px', paddingBottom: '8px', borderBottom: '1px solid var(--chakra-colors-border-subtle)' },\n    }), [hovered, onSelectNode, expanded, mounted, styles.cell]);\n\n    const toggleCollapsed = (key: string) => setCollapsed(prev => {\n        const next = new Set(prev);\n        if (next.has(key)) next.delete(key); else next.add(key);\n        return next;\n    });\n\n    if (projection.processCount === 0) {\n        return (\n            <Box p=\"9\" textAlign=\"center\">\n                <Text fontFamily=\"mono\" fontSize=\"sm\" color=\"fg.subtle\">\n                    No process nodes yet — add processes in the graph view to populate the table.\n                </Text>\n            </Box>\n        );\n    }\n\n    return (\n        <Box h=\"100%\" overflowY=\"auto\" bg=\"bg.surface\" fontFeatureSettings='\"tnum\"'>\n            {/* Graph-level lints — collapsed to a slim banner. */}\n            {projection.lints.length > 0 && (\n                <Box\n                    px=\"4\" py=\"1.5\"\n                    borderBottom=\"1px solid\" borderColor=\"border.subtle\"\n                    bg=\"bg.panel\"\n                    cursor=\"pointer\"\n                    onClick={() => setShowLints(v => !v)}\n                >\n                    <HStack gap=\"1.5\" color=\"ink.warning\">\n                        <FiAlertTriangle size={12} />\n                        <Text fontFamily=\"mono\" fontSize=\"2xs\" fontWeight=\"semibold\" letterSpacing=\"wider\" textTransform=\"uppercase\">\n                            {projection.lints.length} graph warnings\n                        </Text>\n                        <Box transform={showLints ? 'rotate(180deg)' : 'none'} transition=\"transform 180ms ease\" display=\"inline-flex\">\n                            <FiChevronDown size={11} />\n                        </Box>\n                    </HStack>\n                    <Box display=\"grid\" gridTemplateRows={showLints ? '1fr' : '0fr'} transition=\"grid-template-rows 200ms ease\">\n                        <Box overflow=\"hidden\" minH=\"0\">\n                            <VStack alignItems=\"stretch\" gap=\"0.5\" pt=\"1.5\">\n                                {projection.lints.map(l => (\n                                    <Text key={l} fontSize=\"xs\" color=\"fg.muted\">{l}</Text>\n                                ))}\n                            </VStack>\n                        </Box>\n                    </Box>\n                </Box>\n            )}\n\n            {projection.groups.map(group => (\n                <GroupSection\n                    key={group.id ?? '∅'}\n                    group={group}\n                    ctx={ctx}\n                    collapsed={collapsed}\n                    toggleCollapsed={toggleCollapsed}\n                    headerCss={styles.root as object}\n                    columnHeaderCss={styles.columnHeader as object}\n                />\n            ))}\n        </Box>\n    );\n});\n","/**\n * Copyright (c) 2016-2026, The Cytoscape Consortium.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the “Software”), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n * of the Software, and to permit persons to whom the Software is furnished to do\n * so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * 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 THE\n * SOFTWARE.\n */\n\nfunction _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nfunction _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || false, o.configurable = true, \"value\" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), Object.defineProperty(e, \"prototype\", {\n    writable: false\n  }), e;\n}\nfunction _createForOfIteratorHelper(r, e) {\n  var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (!t) {\n    if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {\n      t && (r = t);\n      var n = 0,\n        F = function () {};\n      return {\n        s: F,\n        n: function () {\n          return n >= r.length ? {\n            done: true\n          } : {\n            done: false,\n            value: r[n++]\n          };\n        },\n        e: function (r) {\n          throw r;\n        },\n        f: F\n      };\n    }\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  var o,\n    a = true,\n    u = false;\n  return {\n    s: function () {\n      t = t.call(r);\n    },\n    n: function () {\n      var r = t.next();\n      return a = r.done, r;\n    },\n    e: function (r) {\n      u = true, o = r;\n    },\n    f: function () {\n      try {\n        a || null == t.return || t.return();\n      } finally {\n        if (u) throw o;\n      }\n    }\n  };\n}\nfunction _defineProperty$1(e, r, t) {\n  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: true,\n    configurable: true,\n    writable: true\n  }) : e[r] = t, e;\n}\nfunction _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = true,\n      o = false;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = true, n = r;\n    } finally {\n      try {\n        if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _slicedToArray(r, e) {\n  return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toConsumableArray(r) {\n  return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n  if (\"object\" != typeof t || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (undefined !== e) {\n    var i = e.call(t, r);\n    if (\"object\" != typeof i) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (String )(t);\n}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : undefined;\n  }\n}\n\nvar _window = typeof window === 'undefined' ? null : window; // eslint-disable-line no-undef\n\nvar navigator = _window ? _window.navigator : null;\n_window ? _window.document : null;\nvar typeofstr = _typeof('');\nvar typeofobj = _typeof({});\nvar typeoffn = _typeof(function () {});\nvar typeofhtmlele = typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement);\nvar instanceStr = function instanceStr(obj) {\n  return obj && obj.instanceString && fn$6(obj.instanceString) ? obj.instanceString() : null;\n};\n\nvar string = function string(obj) {\n  return obj != null && _typeof(obj) == typeofstr;\n};\nvar fn$6 = function fn(obj) {\n  return obj != null && _typeof(obj) === typeoffn;\n};\nvar array = function array(obj) {\n  return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array);\n};\nvar plainObject = function plainObject(obj) {\n  return obj != null && _typeof(obj) === typeofobj && !array(obj) && obj.constructor === Object;\n};\nvar object = function object(obj) {\n  return obj != null && _typeof(obj) === typeofobj;\n};\nvar number$1 = function number(obj) {\n  return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj);\n};\nvar integer = function integer(obj) {\n  return number$1(obj) && Math.floor(obj) === obj;\n};\nvar htmlElement = function htmlElement(obj) {\n  if ('undefined' === typeofhtmlele) {\n    return undefined;\n  } else {\n    return null != obj && obj instanceof HTMLElement;\n  }\n};\nvar elementOrCollection = function elementOrCollection(obj) {\n  return element(obj) || collection(obj);\n};\nvar element = function element(obj) {\n  return instanceStr(obj) === 'collection' && obj._private.single;\n};\nvar collection = function collection(obj) {\n  return instanceStr(obj) === 'collection' && !obj._private.single;\n};\nvar core = function core(obj) {\n  return instanceStr(obj) === 'core';\n};\nvar stylesheet = function stylesheet(obj) {\n  return instanceStr(obj) === 'stylesheet';\n};\nvar event = function event(obj) {\n  return instanceStr(obj) === 'event';\n};\nvar emptyString = function emptyString(obj) {\n  if (obj === undefined || obj === null) {\n    // null is empty\n    return true;\n  } else if (obj === '' || obj.match(/^\\s+$/)) {\n    return true; // empty string is empty\n  }\n  return false; // otherwise, we don't know what we've got\n};\nvar domElement = function domElement(obj) {\n  if (typeof HTMLElement === 'undefined') {\n    return false; // we're not in a browser so it doesn't matter\n  } else {\n    return obj instanceof HTMLElement;\n  }\n};\nvar boundingBox = function boundingBox(obj) {\n  return plainObject(obj) && number$1(obj.x1) && number$1(obj.x2) && number$1(obj.y1) && number$1(obj.y2);\n};\nvar promise = function promise(obj) {\n  return object(obj) && fn$6(obj.then);\n};\nvar ms = function ms() {\n  return navigator && navigator.userAgent.match(/msie|trident|edge/i);\n}; // probably a better way to detect this...\n\nvar memoize = function memoize(fn, keyFn) {\n  if (!keyFn) {\n    keyFn = function keyFn() {\n      if (arguments.length === 1) {\n        return arguments[0];\n      } else if (arguments.length === 0) {\n        return 'undefined';\n      }\n      var args = [];\n      for (var i = 0; i < arguments.length; i++) {\n        args.push(arguments[i]);\n      }\n      return args.join('$');\n    };\n  }\n  var _memoizedFn = function memoizedFn() {\n    var self = this;\n    var args = arguments;\n    var ret;\n    var k = keyFn.apply(self, args);\n    var cache = _memoizedFn.cache;\n    if (!(ret = cache[k])) {\n      ret = cache[k] = fn.apply(self, args);\n    }\n    return ret;\n  };\n  _memoizedFn.cache = {};\n  return _memoizedFn;\n};\n\nvar camel2dash = memoize(function (str) {\n  return str.replace(/([A-Z])/g, function (v) {\n    return '-' + v.toLowerCase();\n  });\n});\nvar dash2camel = memoize(function (str) {\n  return str.replace(/(-\\w)/g, function (v) {\n    return v[1].toUpperCase();\n  });\n});\nvar prependCamel = memoize(function (prefix, str) {\n  return prefix + str[0].toUpperCase() + str.substring(1);\n}, function (prefix, str) {\n  return prefix + '$' + str;\n});\nvar capitalize = function capitalize(str) {\n  if (emptyString(str)) {\n    return str;\n  }\n  return str.charAt(0).toUpperCase() + str.substring(1);\n};\nvar endsWith = function endsWith(string, suffix) {\n  return string.slice(-1 * suffix.length) === suffix;\n};\n\nvar number = '(?:[-+]?(?:(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:[Ee][+-]?\\\\d+)?))';\nvar rgba = 'rgb[a]?\\\\((' + number + '[%]?)\\\\s*,\\\\s*(' + number + '[%]?)\\\\s*,\\\\s*(' + number + '[%]?)(?:\\\\s*,\\\\s*(' + number + '))?\\\\)';\nvar rgbaNoBackRefs = 'rgb[a]?\\\\((?:' + number + '[%]?)\\\\s*,\\\\s*(?:' + number + '[%]?)\\\\s*,\\\\s*(?:' + number + '[%]?)(?:\\\\s*,\\\\s*(?:' + number + '))?\\\\)';\nvar hsla = 'hsl[a]?\\\\((' + number + ')\\\\s*,\\\\s*(' + number + '[%])\\\\s*,\\\\s*(' + number + '[%])(?:\\\\s*,\\\\s*(' + number + '))?\\\\)';\nvar hslaNoBackRefs = 'hsl[a]?\\\\((?:' + number + ')\\\\s*,\\\\s*(?:' + number + '[%])\\\\s*,\\\\s*(?:' + number + '[%])(?:\\\\s*,\\\\s*(?:' + number + '))?\\\\)';\nvar hex3 = '\\\\#[0-9a-fA-F]{3}';\nvar hex6 = '\\\\#[0-9a-fA-F]{6}';\n\nvar ascending = function ascending(a, b) {\n  if (a < b) {\n    return -1;\n  } else if (a > b) {\n    return 1;\n  } else {\n    return 0;\n  }\n};\nvar descending = function descending(a, b) {\n  return -1 * ascending(a, b);\n};\n\nvar extend = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n  var args = arguments;\n  for (var i = 1; i < args.length; i++) {\n    var obj = args[i];\n    if (obj == null) {\n      continue;\n    }\n    var keys = Object.keys(obj);\n    for (var j = 0; j < keys.length; j++) {\n      var k = keys[j];\n      tgt[k] = obj[k];\n    }\n  }\n  return tgt;\n};\n\n// get [r, g, b] from #abc or #aabbcc\nvar hex2tuple = function hex2tuple(hex) {\n  if (!(hex.length === 4 || hex.length === 7) || hex[0] !== '#') {\n    return;\n  }\n  var shortHex = hex.length === 4;\n  var r, g, b;\n  var base = 16;\n  if (shortHex) {\n    r = parseInt(hex[1] + hex[1], base);\n    g = parseInt(hex[2] + hex[2], base);\n    b = parseInt(hex[3] + hex[3], base);\n  } else {\n    r = parseInt(hex[1] + hex[2], base);\n    g = parseInt(hex[3] + hex[4], base);\n    b = parseInt(hex[5] + hex[6], base);\n  }\n  return [r, g, b];\n};\n\n// get [r, g, b, a] from hsl(0, 0, 0) or hsla(0, 0, 0, 0)\nvar hsl2tuple = function hsl2tuple(hsl) {\n  var ret;\n  var h, s, l, a, r, g, b;\n  function hue2rgb(p, q, t) {\n    if (t < 0) t += 1;\n    if (t > 1) t -= 1;\n    if (t < 1 / 6) return p + (q - p) * 6 * t;\n    if (t < 1 / 2) return q;\n    if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n    return p;\n  }\n  var m = new RegExp('^' + hsla + '$').exec(hsl);\n  if (m) {\n    // get hue\n    h = parseInt(m[1]);\n    if (h < 0) {\n      h = (360 - -1 * h % 360) % 360;\n    } else if (h > 360) {\n      h = h % 360;\n    }\n    h /= 360; // normalise on [0, 1]\n\n    s = parseFloat(m[2]);\n    if (s < 0 || s > 100) {\n      return;\n    } // saturation is [0, 100]\n    s = s / 100; // normalise on [0, 1]\n\n    l = parseFloat(m[3]);\n    if (l < 0 || l > 100) {\n      return;\n    } // lightness is [0, 100]\n    l = l / 100; // normalise on [0, 1]\n\n    a = m[4];\n    if (a !== undefined) {\n      a = parseFloat(a);\n      if (a < 0 || a > 1) {\n        return;\n      } // alpha is [0, 1]\n    }\n\n    // now, convert to rgb\n    // code from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\n    if (s === 0) {\n      r = g = b = Math.round(l * 255); // achromatic\n    } else {\n      var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n      var p = 2 * l - q;\n      r = Math.round(255 * hue2rgb(p, q, h + 1 / 3));\n      g = Math.round(255 * hue2rgb(p, q, h));\n      b = Math.round(255 * hue2rgb(p, q, h - 1 / 3));\n    }\n    ret = [r, g, b, a];\n  }\n  return ret;\n};\n\n// get [r, g, b, a] from rgb(0, 0, 0) or rgba(0, 0, 0, 0)\nvar rgb2tuple = function rgb2tuple(rgb) {\n  var ret;\n  var m = new RegExp('^' + rgba + '$').exec(rgb);\n  if (m) {\n    ret = [];\n    var isPct = [];\n    for (var i = 1; i <= 3; i++) {\n      var channel = m[i];\n      if (channel[channel.length - 1] === '%') {\n        isPct[i] = true;\n      }\n      channel = parseFloat(channel);\n      if (isPct[i]) {\n        channel = channel / 100 * 255; // normalise to [0, 255]\n      }\n      if (channel < 0 || channel > 255) {\n        return;\n      } // invalid channel value\n\n      ret.push(Math.floor(channel));\n    }\n    var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3];\n    var allArePct = isPct[1] && isPct[2] && isPct[3];\n    if (atLeastOneIsPct && !allArePct) {\n      return;\n    } // must all be percent values if one is\n\n    var alpha = m[4];\n    if (alpha !== undefined) {\n      alpha = parseFloat(alpha);\n      if (alpha < 0 || alpha > 1) {\n        return;\n      } // invalid alpha value\n\n      ret.push(alpha);\n    }\n  }\n  return ret;\n};\nvar colorname2tuple = function colorname2tuple(color) {\n  return colors[color.toLowerCase()];\n};\nvar color2tuple = function color2tuple(color) {\n  return (array(color) ? color : null) || colorname2tuple(color) || hex2tuple(color) || rgb2tuple(color) || hsl2tuple(color);\n};\nvar colors = {\n  // special colour names\n  transparent: [0, 0, 0, 0],\n  // NB alpha === 0\n\n  // regular colours\n  aliceblue: [240, 248, 255],\n  antiquewhite: [250, 235, 215],\n  aqua: [0, 255, 255],\n  aquamarine: [127, 255, 212],\n  azure: [240, 255, 255],\n  beige: [245, 245, 220],\n  bisque: [255, 228, 196],\n  black: [0, 0, 0],\n  blanchedalmond: [255, 235, 205],\n  blue: [0, 0, 255],\n  blueviolet: [138, 43, 226],\n  brown: [165, 42, 42],\n  burlywood: [222, 184, 135],\n  cadetblue: [95, 158, 160],\n  chartreuse: [127, 255, 0],\n  chocolate: [210, 105, 30],\n  coral: [255, 127, 80],\n  cornflowerblue: [100, 149, 237],\n  cornsilk: [255, 248, 220],\n  crimson: [220, 20, 60],\n  cyan: [0, 255, 255],\n  darkblue: [0, 0, 139],\n  darkcyan: [0, 139, 139],\n  darkgoldenrod: [184, 134, 11],\n  darkgray: [169, 169, 169],\n  darkgreen: [0, 100, 0],\n  darkgrey: [169, 169, 169],\n  darkkhaki: [189, 183, 107],\n  darkmagenta: [139, 0, 139],\n  darkolivegreen: [85, 107, 47],\n  darkorange: [255, 140, 0],\n  darkorchid: [153, 50, 204],\n  darkred: [139, 0, 0],\n  darksalmon: [233, 150, 122],\n  darkseagreen: [143, 188, 143],\n  darkslateblue: [72, 61, 139],\n  darkslategray: [47, 79, 79],\n  darkslategrey: [47, 79, 79],\n  darkturquoise: [0, 206, 209],\n  darkviolet: [148, 0, 211],\n  deeppink: [255, 20, 147],\n  deepskyblue: [0, 191, 255],\n  dimgray: [105, 105, 105],\n  dimgrey: [105, 105, 105],\n  dodgerblue: [30, 144, 255],\n  firebrick: [178, 34, 34],\n  floralwhite: [255, 250, 240],\n  forestgreen: [34, 139, 34],\n  fuchsia: [255, 0, 255],\n  gainsboro: [220, 220, 220],\n  ghostwhite: [248, 248, 255],\n  gold: [255, 215, 0],\n  goldenrod: [218, 165, 32],\n  gray: [128, 128, 128],\n  grey: [128, 128, 128],\n  green: [0, 128, 0],\n  greenyellow: [173, 255, 47],\n  honeydew: [240, 255, 240],\n  hotpink: [255, 105, 180],\n  indianred: [205, 92, 92],\n  indigo: [75, 0, 130],\n  ivory: [255, 255, 240],\n  khaki: [240, 230, 140],\n  lavender: [230, 230, 250],\n  lavenderblush: [255, 240, 245],\n  lawngreen: [124, 252, 0],\n  lemonchiffon: [255, 250, 205],\n  lightblue: [173, 216, 230],\n  lightcoral: [240, 128, 128],\n  lightcyan: [224, 255, 255],\n  lightgoldenrodyellow: [250, 250, 210],\n  lightgray: [211, 211, 211],\n  lightgreen: [144, 238, 144],\n  lightgrey: [211, 211, 211],\n  lightpink: [255, 182, 193],\n  lightsalmon: [255, 160, 122],\n  lightseagreen: [32, 178, 170],\n  lightskyblue: [135, 206, 250],\n  lightslategray: [119, 136, 153],\n  lightslategrey: [119, 136, 153],\n  lightsteelblue: [176, 196, 222],\n  lightyellow: [255, 255, 224],\n  lime: [0, 255, 0],\n  limegreen: [50, 205, 50],\n  linen: [250, 240, 230],\n  magenta: [255, 0, 255],\n  maroon: [128, 0, 0],\n  mediumaquamarine: [102, 205, 170],\n  mediumblue: [0, 0, 205],\n  mediumorchid: [186, 85, 211],\n  mediumpurple: [147, 112, 219],\n  mediumseagreen: [60, 179, 113],\n  mediumslateblue: [123, 104, 238],\n  mediumspringgreen: [0, 250, 154],\n  mediumturquoise: [72, 209, 204],\n  mediumvioletred: [199, 21, 133],\n  midnightblue: [25, 25, 112],\n  mintcream: [245, 255, 250],\n  mistyrose: [255, 228, 225],\n  moccasin: [255, 228, 181],\n  navajowhite: [255, 222, 173],\n  navy: [0, 0, 128],\n  oldlace: [253, 245, 230],\n  olive: [128, 128, 0],\n  olivedrab: [107, 142, 35],\n  orange: [255, 165, 0],\n  orangered: [255, 69, 0],\n  orchid: [218, 112, 214],\n  palegoldenrod: [238, 232, 170],\n  palegreen: [152, 251, 152],\n  paleturquoise: [175, 238, 238],\n  palevioletred: [219, 112, 147],\n  papayawhip: [255, 239, 213],\n  peachpuff: [255, 218, 185],\n  peru: [205, 133, 63],\n  pink: [255, 192, 203],\n  plum: [221, 160, 221],\n  powderblue: [176, 224, 230],\n  purple: [128, 0, 128],\n  red: [255, 0, 0],\n  rosybrown: [188, 143, 143],\n  royalblue: [65, 105, 225],\n  saddlebrown: [139, 69, 19],\n  salmon: [250, 128, 114],\n  sandybrown: [244, 164, 96],\n  seagreen: [46, 139, 87],\n  seashell: [255, 245, 238],\n  sienna: [160, 82, 45],\n  silver: [192, 192, 192],\n  skyblue: [135, 206, 235],\n  slateblue: [106, 90, 205],\n  slategray: [112, 128, 144],\n  slategrey: [112, 128, 144],\n  snow: [255, 250, 250],\n  springgreen: [0, 255, 127],\n  steelblue: [70, 130, 180],\n  tan: [210, 180, 140],\n  teal: [0, 128, 128],\n  thistle: [216, 191, 216],\n  tomato: [255, 99, 71],\n  turquoise: [64, 224, 208],\n  violet: [238, 130, 238],\n  wheat: [245, 222, 179],\n  white: [255, 255, 255],\n  whitesmoke: [245, 245, 245],\n  yellow: [255, 255, 0],\n  yellowgreen: [154, 205, 50]\n};\n\n// sets the value in a map (map may not be built)\nvar setMap = function setMap(options) {\n  var obj = options.map;\n  var keys = options.keys;\n  var l = keys.length;\n  for (var i = 0; i < l; i++) {\n    var key = keys[i];\n    if (plainObject(key)) {\n      throw Error('Tried to set map with object key');\n    }\n    if (i < keys.length - 1) {\n      // extend the map if necessary\n      if (obj[key] == null) {\n        obj[key] = {};\n      }\n      obj = obj[key];\n    } else {\n      // set the value\n      obj[key] = options.value;\n    }\n  }\n};\n\n// gets the value in a map even if it's not built in places\nvar getMap = function getMap(options) {\n  var obj = options.map;\n  var keys = options.keys;\n  var l = keys.length;\n  for (var i = 0; i < l; i++) {\n    var key = keys[i];\n    if (plainObject(key)) {\n      throw Error('Tried to get map with object key');\n    }\n    obj = obj[key];\n    if (obj == null) {\n      return obj;\n    }\n  }\n  return obj;\n};\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\nvar isObject_1;\nvar hasRequiredIsObject;\n\nfunction requireIsObject () {\n\tif (hasRequiredIsObject) return isObject_1;\n\thasRequiredIsObject = 1;\n\tfunction isObject(value) {\n\t  var type = typeof value;\n\t  return value != null && (type == 'object' || type == 'function');\n\t}\n\n\tisObject_1 = isObject;\n\treturn isObject_1;\n}\n\n/** Detect free variable `global` from Node.js. */\n\nvar _freeGlobal;\nvar hasRequired_freeGlobal;\n\nfunction require_freeGlobal () {\n\tif (hasRequired_freeGlobal) return _freeGlobal;\n\thasRequired_freeGlobal = 1;\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t_freeGlobal = freeGlobal;\n\treturn _freeGlobal;\n}\n\nvar _root;\nvar hasRequired_root;\n\nfunction require_root () {\n\tif (hasRequired_root) return _root;\n\thasRequired_root = 1;\n\tvar freeGlobal = require_freeGlobal();\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t_root = root;\n\treturn _root;\n}\n\nvar now_1;\nvar hasRequiredNow;\n\nfunction requireNow () {\n\tif (hasRequiredNow) return now_1;\n\thasRequiredNow = 1;\n\tvar root = require_root();\n\n\t/**\n\t * Gets the timestamp of the number of milliseconds that have elapsed since\n\t * the Unix epoch (1 January 1970 00:00:00 UTC).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 2.4.0\n\t * @category Date\n\t * @returns {number} Returns the timestamp.\n\t * @example\n\t *\n\t * _.defer(function(stamp) {\n\t *   console.log(_.now() - stamp);\n\t * }, _.now());\n\t * // => Logs the number of milliseconds it took for the deferred invocation.\n\t */\n\tvar now = function() {\n\t  return root.Date.now();\n\t};\n\n\tnow_1 = now;\n\treturn now_1;\n}\n\n/** Used to match a single whitespace character. */\n\nvar _trimmedEndIndex;\nvar hasRequired_trimmedEndIndex;\n\nfunction require_trimmedEndIndex () {\n\tif (hasRequired_trimmedEndIndex) return _trimmedEndIndex;\n\thasRequired_trimmedEndIndex = 1;\n\tvar reWhitespace = /\\s/;\n\n\t/**\n\t * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n\t * character of `string`.\n\t *\n\t * @private\n\t * @param {string} string The string to inspect.\n\t * @returns {number} Returns the index of the last non-whitespace character.\n\t */\n\tfunction trimmedEndIndex(string) {\n\t  var index = string.length;\n\n\t  while (index-- && reWhitespace.test(string.charAt(index))) {}\n\t  return index;\n\t}\n\n\t_trimmedEndIndex = trimmedEndIndex;\n\treturn _trimmedEndIndex;\n}\n\nvar _baseTrim;\nvar hasRequired_baseTrim;\n\nfunction require_baseTrim () {\n\tif (hasRequired_baseTrim) return _baseTrim;\n\thasRequired_baseTrim = 1;\n\tvar trimmedEndIndex = require_trimmedEndIndex();\n\n\t/** Used to match leading whitespace. */\n\tvar reTrimStart = /^\\s+/;\n\n\t/**\n\t * The base implementation of `_.trim`.\n\t *\n\t * @private\n\t * @param {string} string The string to trim.\n\t * @returns {string} Returns the trimmed string.\n\t */\n\tfunction baseTrim(string) {\n\t  return string\n\t    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n\t    : string;\n\t}\n\n\t_baseTrim = baseTrim;\n\treturn _baseTrim;\n}\n\nvar _Symbol;\nvar hasRequired_Symbol;\n\nfunction require_Symbol () {\n\tif (hasRequired_Symbol) return _Symbol;\n\thasRequired_Symbol = 1;\n\tvar root = require_root();\n\n\t/** Built-in value references. */\n\tvar Symbol = root.Symbol;\n\n\t_Symbol = Symbol;\n\treturn _Symbol;\n}\n\nvar _getRawTag;\nvar hasRequired_getRawTag;\n\nfunction require_getRawTag () {\n\tif (hasRequired_getRawTag) return _getRawTag;\n\thasRequired_getRawTag = 1;\n\tvar Symbol = require_Symbol();\n\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar nativeObjectToString = objectProto.toString;\n\n\t/** Built-in value references. */\n\tvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n\t/**\n\t * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the raw `toStringTag`.\n\t */\n\tfunction getRawTag(value) {\n\t  var isOwn = hasOwnProperty.call(value, symToStringTag),\n\t      tag = value[symToStringTag];\n\n\t  try {\n\t    value[symToStringTag] = undefined;\n\t    var unmasked = true;\n\t  } catch (e) {}\n\n\t  var result = nativeObjectToString.call(value);\n\t  if (unmasked) {\n\t    if (isOwn) {\n\t      value[symToStringTag] = tag;\n\t    } else {\n\t      delete value[symToStringTag];\n\t    }\n\t  }\n\t  return result;\n\t}\n\n\t_getRawTag = getRawTag;\n\treturn _getRawTag;\n}\n\n/** Used for built-in method references. */\n\nvar _objectToString;\nvar hasRequired_objectToString;\n\nfunction require_objectToString () {\n\tif (hasRequired_objectToString) return _objectToString;\n\thasRequired_objectToString = 1;\n\tvar objectProto = Object.prototype;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar nativeObjectToString = objectProto.toString;\n\n\t/**\n\t * Converts `value` to a string using `Object.prototype.toString`.\n\t *\n\t * @private\n\t * @param {*} value The value to convert.\n\t * @returns {string} Returns the converted string.\n\t */\n\tfunction objectToString(value) {\n\t  return nativeObjectToString.call(value);\n\t}\n\n\t_objectToString = objectToString;\n\treturn _objectToString;\n}\n\nvar _baseGetTag;\nvar hasRequired_baseGetTag;\n\nfunction require_baseGetTag () {\n\tif (hasRequired_baseGetTag) return _baseGetTag;\n\thasRequired_baseGetTag = 1;\n\tvar Symbol = require_Symbol(),\n\t    getRawTag = require_getRawTag(),\n\t    objectToString = require_objectToString();\n\n\t/** `Object#toString` result references. */\n\tvar nullTag = '[object Null]',\n\t    undefinedTag = '[object Undefined]';\n\n\t/** Built-in value references. */\n\tvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n\t/**\n\t * The base implementation of `getTag` without fallbacks for buggy environments.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t  if (value == null) {\n\t    return value === undefined ? undefinedTag : nullTag;\n\t  }\n\t  return (symToStringTag && symToStringTag in Object(value))\n\t    ? getRawTag(value)\n\t    : objectToString(value);\n\t}\n\n\t_baseGetTag = baseGetTag;\n\treturn _baseGetTag;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\nvar isObjectLike_1;\nvar hasRequiredIsObjectLike;\n\nfunction requireIsObjectLike () {\n\tif (hasRequiredIsObjectLike) return isObjectLike_1;\n\thasRequiredIsObjectLike = 1;\n\tfunction isObjectLike(value) {\n\t  return value != null && typeof value == 'object';\n\t}\n\n\tisObjectLike_1 = isObjectLike;\n\treturn isObjectLike_1;\n}\n\nvar isSymbol_1;\nvar hasRequiredIsSymbol;\n\nfunction requireIsSymbol () {\n\tif (hasRequiredIsSymbol) return isSymbol_1;\n\thasRequiredIsSymbol = 1;\n\tvar baseGetTag = require_baseGetTag(),\n\t    isObjectLike = requireIsObjectLike();\n\n\t/** `Object#toString` result references. */\n\tvar symbolTag = '[object Symbol]';\n\n\t/**\n\t * Checks if `value` is classified as a `Symbol` primitive or object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n\t * @example\n\t *\n\t * _.isSymbol(Symbol.iterator);\n\t * // => true\n\t *\n\t * _.isSymbol('abc');\n\t * // => false\n\t */\n\tfunction isSymbol(value) {\n\t  return typeof value == 'symbol' ||\n\t    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n\t}\n\n\tisSymbol_1 = isSymbol;\n\treturn isSymbol_1;\n}\n\nvar toNumber_1;\nvar hasRequiredToNumber;\n\nfunction requireToNumber () {\n\tif (hasRequiredToNumber) return toNumber_1;\n\thasRequiredToNumber = 1;\n\tvar baseTrim = require_baseTrim(),\n\t    isObject = requireIsObject(),\n\t    isSymbol = requireIsSymbol();\n\n\t/** Used as references for various `Number` constants. */\n\tvar NAN = 0 / 0;\n\n\t/** Used to detect bad signed hexadecimal string values. */\n\tvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n\t/** Used to detect binary string values. */\n\tvar reIsBinary = /^0b[01]+$/i;\n\n\t/** Used to detect octal string values. */\n\tvar reIsOctal = /^0o[0-7]+$/i;\n\n\t/** Built-in method references without a dependency on `root`. */\n\tvar freeParseInt = parseInt;\n\n\t/**\n\t * Converts `value` to a number.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to process.\n\t * @returns {number} Returns the number.\n\t * @example\n\t *\n\t * _.toNumber(3.2);\n\t * // => 3.2\n\t *\n\t * _.toNumber(Number.MIN_VALUE);\n\t * // => 5e-324\n\t *\n\t * _.toNumber(Infinity);\n\t * // => Infinity\n\t *\n\t * _.toNumber('3.2');\n\t * // => 3.2\n\t */\n\tfunction toNumber(value) {\n\t  if (typeof value == 'number') {\n\t    return value;\n\t  }\n\t  if (isSymbol(value)) {\n\t    return NAN;\n\t  }\n\t  if (isObject(value)) {\n\t    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n\t    value = isObject(other) ? (other + '') : other;\n\t  }\n\t  if (typeof value != 'string') {\n\t    return value === 0 ? value : +value;\n\t  }\n\t  value = baseTrim(value);\n\t  var isBinary = reIsBinary.test(value);\n\t  return (isBinary || reIsOctal.test(value))\n\t    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n\t    : (reIsBadHex.test(value) ? NAN : +value);\n\t}\n\n\ttoNumber_1 = toNumber;\n\treturn toNumber_1;\n}\n\nvar debounce_1;\nvar hasRequiredDebounce;\n\nfunction requireDebounce () {\n\tif (hasRequiredDebounce) return debounce_1;\n\thasRequiredDebounce = 1;\n\tvar isObject = requireIsObject(),\n\t    now = requireNow(),\n\t    toNumber = requireToNumber();\n\n\t/** Error message constants. */\n\tvar FUNC_ERROR_TEXT = 'Expected a function';\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeMax = Math.max,\n\t    nativeMin = Math.min;\n\n\t/**\n\t * Creates a debounced function that delays invoking `func` until after `wait`\n\t * milliseconds have elapsed since the last time the debounced function was\n\t * invoked. The debounced function comes with a `cancel` method to cancel\n\t * delayed `func` invocations and a `flush` method to immediately invoke them.\n\t * Provide `options` to indicate whether `func` should be invoked on the\n\t * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n\t * with the last arguments provided to the debounced function. Subsequent\n\t * calls to the debounced function return the result of the last `func`\n\t * invocation.\n\t *\n\t * **Note:** If `leading` and `trailing` options are `true`, `func` is\n\t * invoked on the trailing edge of the timeout only if the debounced function\n\t * is invoked more than once during the `wait` timeout.\n\t *\n\t * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n\t * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n\t *\n\t * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n\t * for details over the differences between `_.debounce` and `_.throttle`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Function\n\t * @param {Function} func The function to debounce.\n\t * @param {number} [wait=0] The number of milliseconds to delay.\n\t * @param {Object} [options={}] The options object.\n\t * @param {boolean} [options.leading=false]\n\t *  Specify invoking on the leading edge of the timeout.\n\t * @param {number} [options.maxWait]\n\t *  The maximum time `func` is allowed to be delayed before it's invoked.\n\t * @param {boolean} [options.trailing=true]\n\t *  Specify invoking on the trailing edge of the timeout.\n\t * @returns {Function} Returns the new debounced function.\n\t * @example\n\t *\n\t * // Avoid costly calculations while the window size is in flux.\n\t * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n\t *\n\t * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n\t * jQuery(element).on('click', _.debounce(sendMail, 300, {\n\t *   'leading': true,\n\t *   'trailing': false\n\t * }));\n\t *\n\t * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n\t * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n\t * var source = new EventSource('/stream');\n\t * jQuery(source).on('message', debounced);\n\t *\n\t * // Cancel the trailing debounced invocation.\n\t * jQuery(window).on('popstate', debounced.cancel);\n\t */\n\tfunction debounce(func, wait, options) {\n\t  var lastArgs,\n\t      lastThis,\n\t      maxWait,\n\t      result,\n\t      timerId,\n\t      lastCallTime,\n\t      lastInvokeTime = 0,\n\t      leading = false,\n\t      maxing = false,\n\t      trailing = true;\n\n\t  if (typeof func != 'function') {\n\t    throw new TypeError(FUNC_ERROR_TEXT);\n\t  }\n\t  wait = toNumber(wait) || 0;\n\t  if (isObject(options)) {\n\t    leading = !!options.leading;\n\t    maxing = 'maxWait' in options;\n\t    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n\t    trailing = 'trailing' in options ? !!options.trailing : trailing;\n\t  }\n\n\t  function invokeFunc(time) {\n\t    var args = lastArgs,\n\t        thisArg = lastThis;\n\n\t    lastArgs = lastThis = undefined;\n\t    lastInvokeTime = time;\n\t    result = func.apply(thisArg, args);\n\t    return result;\n\t  }\n\n\t  function leadingEdge(time) {\n\t    // Reset any `maxWait` timer.\n\t    lastInvokeTime = time;\n\t    // Start the timer for the trailing edge.\n\t    timerId = setTimeout(timerExpired, wait);\n\t    // Invoke the leading edge.\n\t    return leading ? invokeFunc(time) : result;\n\t  }\n\n\t  function remainingWait(time) {\n\t    var timeSinceLastCall = time - lastCallTime,\n\t        timeSinceLastInvoke = time - lastInvokeTime,\n\t        timeWaiting = wait - timeSinceLastCall;\n\n\t    return maxing\n\t      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n\t      : timeWaiting;\n\t  }\n\n\t  function shouldInvoke(time) {\n\t    var timeSinceLastCall = time - lastCallTime,\n\t        timeSinceLastInvoke = time - lastInvokeTime;\n\n\t    // Either this is the first call, activity has stopped and we're at the\n\t    // trailing edge, the system time has gone backwards and we're treating\n\t    // it as the trailing edge, or we've hit the `maxWait` limit.\n\t    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n\t      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n\t  }\n\n\t  function timerExpired() {\n\t    var time = now();\n\t    if (shouldInvoke(time)) {\n\t      return trailingEdge(time);\n\t    }\n\t    // Restart the timer.\n\t    timerId = setTimeout(timerExpired, remainingWait(time));\n\t  }\n\n\t  function trailingEdge(time) {\n\t    timerId = undefined;\n\n\t    // Only invoke if we have `lastArgs` which means `func` has been\n\t    // debounced at least once.\n\t    if (trailing && lastArgs) {\n\t      return invokeFunc(time);\n\t    }\n\t    lastArgs = lastThis = undefined;\n\t    return result;\n\t  }\n\n\t  function cancel() {\n\t    if (timerId !== undefined) {\n\t      clearTimeout(timerId);\n\t    }\n\t    lastInvokeTime = 0;\n\t    lastArgs = lastCallTime = lastThis = timerId = undefined;\n\t  }\n\n\t  function flush() {\n\t    return timerId === undefined ? result : trailingEdge(now());\n\t  }\n\n\t  function debounced() {\n\t    var time = now(),\n\t        isInvoking = shouldInvoke(time);\n\n\t    lastArgs = arguments;\n\t    lastThis = this;\n\t    lastCallTime = time;\n\n\t    if (isInvoking) {\n\t      if (timerId === undefined) {\n\t        return leadingEdge(lastCallTime);\n\t      }\n\t      if (maxing) {\n\t        // Handle invocations in a tight loop.\n\t        clearTimeout(timerId);\n\t        timerId = setTimeout(timerExpired, wait);\n\t        return invokeFunc(lastCallTime);\n\t      }\n\t    }\n\t    if (timerId === undefined) {\n\t      timerId = setTimeout(timerExpired, wait);\n\t    }\n\t    return result;\n\t  }\n\t  debounced.cancel = cancel;\n\t  debounced.flush = flush;\n\t  return debounced;\n\t}\n\n\tdebounce_1 = debounce;\n\treturn debounce_1;\n}\n\nvar debounceExports = requireDebounce();\nvar debounce = /*@__PURE__*/getDefaultExportFromCjs(debounceExports);\n\nvar performance$1 = _window ? _window.performance : null;\nvar pnow = performance$1 && performance$1.now ? function () {\n  return performance$1.now();\n} : function () {\n  return Date.now();\n};\nvar raf = function () {\n  if (_window) {\n    if (_window.requestAnimationFrame) {\n      return function (fn) {\n        _window.requestAnimationFrame(fn);\n      };\n    } else if (_window.mozRequestAnimationFrame) {\n      return function (fn) {\n        _window.mozRequestAnimationFrame(fn);\n      };\n    } else if (_window.webkitRequestAnimationFrame) {\n      return function (fn) {\n        _window.webkitRequestAnimationFrame(fn);\n      };\n    } else if (_window.msRequestAnimationFrame) {\n      return function (fn) {\n        _window.msRequestAnimationFrame(fn);\n      };\n    }\n  }\n  return function (fn) {\n    if (fn) {\n      setTimeout(function () {\n        fn(pnow());\n      }, 1000 / 60);\n    }\n  };\n}();\nvar requestAnimationFrame = function requestAnimationFrame(fn) {\n  return raf(fn);\n};\nvar performanceNow = pnow;\n\nvar DEFAULT_HASH_SEED = 9261;\nvar K = 65599; // 37 also works pretty well\nvar DEFAULT_HASH_SEED_ALT = 5381;\nvar hashIterableInts = function hashIterableInts(iterator) {\n  var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED;\n  // sdbm/string-hash\n  var hash = seed;\n  var entry;\n  for (;;) {\n    entry = iterator.next();\n    if (entry.done) {\n      break;\n    }\n    hash = hash * K + entry.value | 0;\n  }\n  return hash;\n};\nvar hashInt = function hashInt(num) {\n  var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED;\n  // sdbm/string-hash\n  return seed * K + num | 0;\n};\nvar hashIntAlt = function hashIntAlt(num) {\n  var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED_ALT;\n  // djb2/string-hash\n  return (seed << 5) + seed + num | 0;\n};\nvar combineHashes = function combineHashes(hash1, hash2) {\n  return hash1 * 0x200000 + hash2;\n};\nvar combineHashesArray = function combineHashesArray(hashes) {\n  return hashes[0] * 0x200000 + hashes[1];\n};\nvar hashArrays = function hashArrays(hashes1, hashes2) {\n  return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])];\n};\nvar hashIntsArray = function hashIntsArray(ints, seed) {\n  var entry = {\n    value: 0,\n    done: false\n  };\n  var i = 0;\n  var length = ints.length;\n  var iterator = {\n    next: function next() {\n      if (i < length) {\n        entry.value = ints[i++];\n      } else {\n        entry.done = true;\n      }\n      return entry;\n    }\n  };\n  return hashIterableInts(iterator, seed);\n};\nvar hashString = function hashString(str, seed) {\n  var entry = {\n    value: 0,\n    done: false\n  };\n  var i = 0;\n  var length = str.length;\n  var iterator = {\n    next: function next() {\n      if (i < length) {\n        entry.value = str.charCodeAt(i++);\n      } else {\n        entry.done = true;\n      }\n      return entry;\n    }\n  };\n  return hashIterableInts(iterator, seed);\n};\nvar hashStrings = function hashStrings() {\n  return hashStringsArray(arguments);\n};\nvar hashStringsArray = function hashStringsArray(strs) {\n  var hash;\n  for (var i = 0; i < strs.length; i++) {\n    var str = strs[i];\n    if (i === 0) {\n      hash = hashString(str);\n    } else {\n      hash = hashString(str, hash);\n    }\n  }\n  return hash;\n};\n\nfunction rotatePoint(x, y, centerX, centerY, angleDegrees) {\n  var angleRadians = angleDegrees * Math.PI / 180;\n  var rotatedX = Math.cos(angleRadians) * (x - centerX) - Math.sin(angleRadians) * (y - centerY) + centerX;\n  var rotatedY = Math.sin(angleRadians) * (x - centerX) + Math.cos(angleRadians) * (y - centerY) + centerY;\n  return {\n    x: rotatedX,\n    y: rotatedY\n  };\n}\nvar movePointByBoxAspect = function movePointByBoxAspect(x, y, boxX, boxY, skewX, skewY) {\n  return {\n    x: (x - boxX) * skewX + boxX,\n    y: (y - boxY) * skewY + boxY\n  };\n};\nfunction rotatePosAndSkewByBox(pos, box, angleDegrees) {\n  if (angleDegrees === 0) return pos;\n  var centerX = (box.x1 + box.x2) / 2;\n  var centerY = (box.y1 + box.y2) / 2;\n  var skewX = box.w / box.h;\n  var skewY = 1 / skewX;\n  var rotated = rotatePoint(pos.x, pos.y, centerX, centerY, angleDegrees);\n  var skewed = movePointByBoxAspect(rotated.x, rotated.y, centerX, centerY, skewX, skewY);\n  return {\n    x: skewed.x,\n    y: skewed.y\n  };\n}\n\nvar warningsEnabled = true;\nvar warnSupported = console.warn != null;\nvar traceSupported = console.trace != null;\nvar MAX_INT$1 = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar trueify = function trueify() {\n  return true;\n};\nvar falsify = function falsify() {\n  return false;\n};\nvar zeroify = function zeroify() {\n  return 0;\n};\nvar noop$1 = function noop() {};\nvar error = function error(msg) {\n  throw new Error(msg);\n};\nvar warnings = function warnings(enabled) {\n  if (enabled !== undefined) {\n    warningsEnabled = !!enabled;\n  } else {\n    return warningsEnabled;\n  }\n};\nvar warn = function warn(msg) {\n  if (!warnings()) {\n    return;\n  }\n  if (warnSupported) {\n    console.warn(msg);\n  } else {\n    console.log(msg);\n    if (traceSupported) {\n      console.trace();\n    }\n  }\n};\nvar clone = function clone(obj) {\n  return extend({}, obj);\n};\n\n// gets a shallow copy of the argument\nvar copy = function copy(obj) {\n  if (obj == null) {\n    return obj;\n  }\n  if (array(obj)) {\n    return obj.slice();\n  } else if (plainObject(obj)) {\n    return clone(obj);\n  } else {\n    return obj;\n  }\n};\nvar copyArray = function copyArray(arr) {\n  return arr.slice();\n};\nvar uuid = function uuid(a, b /* placeholders */) {\n  for (\n  // loop :)\n  b = a = '';\n  // b - result , a - numeric letiable\n  a++ < 36;\n  //\n  b += a * 51 & 52 // if \"a\" is not 9 or 14 or 19 or 24\n  ?\n  //  return a random number or 4\n  (a ^ 15 // if \"a\" is not 15\n  ?\n  // generate a random number from 0 to 15\n  8 ^ Math.random() * (a ^ 20 ? 16 : 4) // unless \"a\" is 20, in which case a random number from 8 to 11\n  : 4 //  otherwise 4\n  ).toString(16) : '-' //  in other cases (if \"a\" is 9,14,19,24) insert \"-\"\n  );\n  return b;\n};\nvar _staticEmptyObject = {};\nvar staticEmptyObject = function staticEmptyObject() {\n  return _staticEmptyObject;\n};\nvar defaults$g = function defaults(_defaults) {\n  var keys = Object.keys(_defaults);\n  return function (opts) {\n    var filledOpts = {};\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      var optVal = opts == null ? undefined : opts[key];\n      filledOpts[key] = optVal === undefined ? _defaults[key] : optVal;\n    }\n    return filledOpts;\n  };\n};\nvar removeFromArray = function removeFromArray(arr, ele, oneCopy) {\n  for (var i = arr.length - 1; i >= 0; i--) {\n    if (arr[i] === ele) {\n      arr.splice(i, 1);\n    }\n  }\n};\nvar clearArray = function clearArray(arr) {\n  arr.splice(0, arr.length);\n};\nvar push = function push(arr, otherArr) {\n  for (var i = 0; i < otherArr.length; i++) {\n    var el = otherArr[i];\n    arr.push(el);\n  }\n};\nvar getPrefixedProperty = function getPrefixedProperty(obj, propName, prefix) {\n  if (prefix) {\n    propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth\n  }\n  return obj[propName];\n};\nvar setPrefixedProperty = function setPrefixedProperty(obj, propName, prefix, value) {\n  if (prefix) {\n    propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth\n  }\n  obj[propName] = value;\n};\n\n/* global Map */\nvar ObjectMap = /*#__PURE__*/function () {\n  function ObjectMap() {\n    _classCallCheck(this, ObjectMap);\n    this._obj = {};\n  }\n  return _createClass(ObjectMap, [{\n    key: \"set\",\n    value: function set(key, val) {\n      this._obj[key] = val;\n      return this;\n    }\n  }, {\n    key: \"delete\",\n    value: function _delete(key) {\n      this._obj[key] = undefined;\n      return this;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this._obj = {};\n    }\n  }, {\n    key: \"has\",\n    value: function has(key) {\n      return this._obj[key] !== undefined;\n    }\n  }, {\n    key: \"get\",\n    value: function get(key) {\n      return this._obj[key];\n    }\n  }]);\n}();\nvar Map$1 = typeof Map !== 'undefined' ? Map : ObjectMap;\n\n/* global Set */\n\nvar undef = \"undefined\" ;\nvar ObjectSet = /*#__PURE__*/function () {\n  function ObjectSet(arrayOrObjectSet) {\n    _classCallCheck(this, ObjectSet);\n    this._obj = Object.create(null);\n    this.size = 0;\n    if (arrayOrObjectSet != null) {\n      var arr;\n      if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) {\n        arr = arrayOrObjectSet.toArray();\n      } else {\n        arr = arrayOrObjectSet;\n      }\n      for (var i = 0; i < arr.length; i++) {\n        this.add(arr[i]);\n      }\n    }\n  }\n  return _createClass(ObjectSet, [{\n    key: \"instanceString\",\n    value: function instanceString() {\n      return 'set';\n    }\n  }, {\n    key: \"add\",\n    value: function add(val) {\n      var o = this._obj;\n      if (o[val] !== 1) {\n        o[val] = 1;\n        this.size++;\n      }\n    }\n  }, {\n    key: \"delete\",\n    value: function _delete(val) {\n      var o = this._obj;\n      if (o[val] === 1) {\n        o[val] = 0;\n        this.size--;\n      }\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this._obj = Object.create(null);\n    }\n  }, {\n    key: \"has\",\n    value: function has(val) {\n      return this._obj[val] === 1;\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      var _this = this;\n      return Object.keys(this._obj).filter(function (key) {\n        return _this.has(key);\n      });\n    }\n  }, {\n    key: \"forEach\",\n    value: function forEach(callback, thisArg) {\n      return this.toArray().forEach(callback, thisArg);\n    }\n  }]);\n}();\nvar Set$1 = (typeof Set === \"undefined\" ? \"undefined\" : _typeof(Set)) !== undef ? Set : ObjectSet;\n\n// represents a node or an edge\nvar Element = function Element(cy, params) {\n  var restore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  if (cy === undefined || params === undefined || !core(cy)) {\n    error('An element must have a core reference and parameters set');\n    return;\n  }\n  var group = params.group;\n\n  // try to automatically infer the group if unspecified\n  if (group == null) {\n    if (params.data && params.data.source != null && params.data.target != null) {\n      group = 'edges';\n    } else {\n      group = 'nodes';\n    }\n  }\n\n  // validate group\n  if (group !== 'nodes' && group !== 'edges') {\n    error('An element must be of type `nodes` or `edges`; you specified `' + group + '`');\n    return;\n  }\n\n  // make the element array-like, just like a collection\n  this.length = 1;\n  this[0] = this;\n\n  // NOTE: when something is added here, add also to ele.json()\n  var _p = this._private = {\n    cy: cy,\n    single: true,\n    // indicates this is an element\n    data: params.data || {},\n    // data object\n    position: params.position || {\n      x: 0,\n      y: 0\n    },\n    // (x, y) position pair\n    autoWidth: undefined,\n    // width and height of nodes calculated by the renderer when set to special 'auto' value\n    autoHeight: undefined,\n    autoPadding: undefined,\n    compoundBoundsClean: false,\n    // whether the compound dimensions need to be recalculated the next time dimensions are read\n    listeners: [],\n    // array of bound listeners\n    group: group,\n    // string; 'nodes' or 'edges'\n    style: {},\n    // properties as set by the style\n    rstyle: {},\n    // properties for style sent from the renderer to the core\n    styleCxts: [],\n    // applied style contexts from the styler\n    styleKeys: {},\n    // per-group keys of style property values\n    removed: true,\n    // whether it's inside the vis; true if removed (set true here since we call restore)\n    selected: params.selected ? true : false,\n    // whether it's selected\n    selectable: params.selectable === undefined ? true : params.selectable ? true : false,\n    // whether it's selectable\n    locked: params.locked ? true : false,\n    // whether the element is locked (cannot be moved)\n    grabbed: false,\n    // whether the element is grabbed by the mouse; renderer sets this privately\n    grabbable: params.grabbable === undefined ? true : params.grabbable ? true : false,\n    // whether the element can be grabbed\n    pannable: params.pannable === undefined ? group === 'edges' ? true : false : params.pannable ? true : false,\n    // whether the element has passthrough panning enabled\n    active: false,\n    // whether the element is active from user interaction\n    classes: new Set$1(),\n    // map ( className => true )\n    animation: {\n      // object for currently-running animations\n      current: [],\n      queue: []\n    },\n    rscratch: {},\n    // object in which the renderer can store information\n    scratch: params.scratch || {},\n    // scratch objects\n    edges: [],\n    // array of connected edges\n    children: [],\n    // array of children\n    parent: params.parent && params.parent.isNode() ? params.parent : null,\n    // parent ref\n    traversalCache: {},\n    // cache of output of traversal functions\n    backgrounding: false,\n    // whether background images are loading\n    bbCache: null,\n    // cache of the current bounding box\n    bbCacheShift: {\n      x: 0,\n      y: 0\n    },\n    // shift applied to cached bb to be applied on next get\n    bodyBounds: null,\n    // bounds cache of element body, w/o overlay\n    overlayBounds: null,\n    // bounds cache of element body, including overlay\n    labelBounds: {\n      // bounds cache of labels\n      all: null,\n      source: null,\n      target: null,\n      main: null\n    },\n    arrowBounds: {\n      // bounds cache of edge arrows\n      source: null,\n      target: null,\n      'mid-source': null,\n      'mid-target': null\n    }\n  };\n  if (_p.position.x == null) {\n    _p.position.x = 0;\n  }\n  if (_p.position.y == null) {\n    _p.position.y = 0;\n  }\n\n  // renderedPosition overrides if specified\n  if (params.renderedPosition) {\n    var rpos = params.renderedPosition;\n    var pan = cy.pan();\n    var zoom = cy.zoom();\n    _p.position = {\n      x: (rpos.x - pan.x) / zoom,\n      y: (rpos.y - pan.y) / zoom\n    };\n  }\n  var classes = [];\n  if (array(params.classes)) {\n    classes = params.classes;\n  } else if (string(params.classes)) {\n    classes = params.classes.split(/\\s+/);\n  }\n  for (var i = 0, l = classes.length; i < l; i++) {\n    var cls = classes[i];\n    if (!cls || cls === '') {\n      continue;\n    }\n    _p.classes.add(cls);\n  }\n  this.createEmitter();\n  if (restore === undefined || restore) {\n    this.restore();\n  }\n  var bypass = params.style || params.css;\n  if (bypass) {\n    warn('Setting a `style` bypass at element creation should be done only when absolutely necessary.  Try to use the stylesheet instead.');\n    this.style(bypass);\n  }\n};\n\nvar defineSearch = function defineSearch(params) {\n  params = {\n    bfs: params.bfs || !params.dfs,\n    dfs: params.dfs || !params.bfs\n  };\n\n  // from pseudocode on wikipedia\n  return function searchFn(roots, fn, directed) {\n    var options;\n    if (plainObject(roots) && !elementOrCollection(roots)) {\n      options = roots;\n      roots = options.roots || options.root;\n      fn = options.visit;\n      directed = options.directed;\n    }\n    directed = arguments.length === 2 && !fn$6(fn) ? fn : directed;\n    fn = fn$6(fn) ? fn : function () {};\n    var cy = this._private.cy;\n    var v = roots = string(roots) ? this.filter(roots) : roots;\n    var Q = [];\n    var connectedNodes = [];\n    var connectedBy = {};\n    var id2depth = {};\n    var V = {};\n    var j = 0;\n    var found;\n    var _this$byGroup = this.byGroup(),\n      nodes = _this$byGroup.nodes,\n      edges = _this$byGroup.edges;\n\n    // enqueue v\n    for (var i = 0; i < v.length; i++) {\n      var vi = v[i];\n      var viId = vi.id();\n      if (vi.isNode()) {\n        Q.unshift(vi);\n        if (params.bfs) {\n          V[viId] = true;\n          connectedNodes.push(vi);\n        }\n        id2depth[viId] = 0;\n      }\n    }\n    var _loop = function _loop() {\n        var v = params.bfs ? Q.shift() : Q.pop();\n        var vId = v.id();\n        if (params.dfs) {\n          if (V[vId]) {\n            return 0; // continue\n          }\n          V[vId] = true;\n          connectedNodes.push(v);\n        }\n        var depth = id2depth[vId];\n        var prevEdge = connectedBy[vId];\n        var src = prevEdge != null ? prevEdge.source() : null;\n        var tgt = prevEdge != null ? prevEdge.target() : null;\n        var prevNode = prevEdge == null ? undefined : v.same(src) ? tgt[0] : src[0];\n        var ret;\n        ret = fn(v, prevEdge, prevNode, j++, depth);\n        if (ret === true) {\n          found = v;\n          return 1; // break\n        }\n        if (ret === false) {\n          return 1; // break\n        }\n        var vwEdges = v.connectedEdges().filter(function (e) {\n          return (!directed || e.source().same(v)) && edges.has(e);\n        });\n        for (var _i2 = 0; _i2 < vwEdges.length; _i2++) {\n          var e = vwEdges[_i2];\n          var w = e.connectedNodes().filter(function (n) {\n            return !n.same(v) && nodes.has(n);\n          });\n          var wId = w.id();\n          if (w.length !== 0 && !V[wId]) {\n            w = w[0];\n            Q.push(w);\n            if (params.bfs) {\n              V[wId] = true;\n              connectedNodes.push(w);\n            }\n            connectedBy[wId] = e;\n            id2depth[wId] = id2depth[vId] + 1;\n          }\n        }\n      },\n      _ret;\n    while (Q.length !== 0) {\n      _ret = _loop();\n      if (_ret === 0) continue;\n      if (_ret === 1) break;\n    }\n    var connectedEles = cy.collection();\n    for (var _i = 0; _i < connectedNodes.length; _i++) {\n      var node = connectedNodes[_i];\n      var edge = connectedBy[node.id()];\n      if (edge != null) {\n        connectedEles.push(edge);\n      }\n      connectedEles.push(node);\n    }\n    return {\n      path: cy.collection(connectedEles),\n      found: cy.collection(found)\n    };\n  };\n};\n\n// search, spanning trees, etc\nvar elesfn$v = {\n  breadthFirstSearch: defineSearch({\n    bfs: true\n  }),\n  depthFirstSearch: defineSearch({\n    dfs: true\n  })\n};\n\n// nice, short mathematical alias\nelesfn$v.bfs = elesfn$v.breadthFirstSearch;\nelesfn$v.dfs = elesfn$v.depthFirstSearch;\n\nvar heap$2 = {exports: {}};\n\nvar heap$1 = heap$2.exports;\n\nvar hasRequiredHeap$1;\n\nfunction requireHeap$1 () {\n\tif (hasRequiredHeap$1) return heap$2.exports;\n\thasRequiredHeap$1 = 1;\n\t(function (module, exports) {\n\t\t// Generated by CoffeeScript 1.8.0\n\t\t(function() {\n\t\t  var Heap, defaultCmp, floor, heapify, heappop, heappush, heappushpop, heapreplace, insort, min, nlargest, nsmallest, updateItem, _siftdown, _siftup;\n\n\t\t  floor = Math.floor, min = Math.min;\n\n\n\t\t  /*\n\t\t  Default comparison function to be used\n\t\t   */\n\n\t\t  defaultCmp = function(x, y) {\n\t\t    if (x < y) {\n\t\t      return -1;\n\t\t    }\n\t\t    if (x > y) {\n\t\t      return 1;\n\t\t    }\n\t\t    return 0;\n\t\t  };\n\n\n\t\t  /*\n\t\t  Insert item x in list a, and keep it sorted assuming a is sorted.\n\t\t  \n\t\t  If x is already in a, insert it to the right of the rightmost x.\n\t\t  \n\t\t  Optional args lo (default 0) and hi (default a.length) bound the slice\n\t\t  of a to be searched.\n\t\t   */\n\n\t\t  insort = function(a, x, lo, hi, cmp) {\n\t\t    var mid;\n\t\t    if (lo == null) {\n\t\t      lo = 0;\n\t\t    }\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    if (lo < 0) {\n\t\t      throw new Error('lo must be non-negative');\n\t\t    }\n\t\t    if (hi == null) {\n\t\t      hi = a.length;\n\t\t    }\n\t\t    while (lo < hi) {\n\t\t      mid = floor((lo + hi) / 2);\n\t\t      if (cmp(x, a[mid]) < 0) {\n\t\t        hi = mid;\n\t\t      } else {\n\t\t        lo = mid + 1;\n\t\t      }\n\t\t    }\n\t\t    return ([].splice.apply(a, [lo, lo - lo].concat(x)), x);\n\t\t  };\n\n\n\t\t  /*\n\t\t  Push item onto heap, maintaining the heap invariant.\n\t\t   */\n\n\t\t  heappush = function(array, item, cmp) {\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    array.push(item);\n\t\t    return _siftdown(array, 0, array.length - 1, cmp);\n\t\t  };\n\n\n\t\t  /*\n\t\t  Pop the smallest item off the heap, maintaining the heap invariant.\n\t\t   */\n\n\t\t  heappop = function(array, cmp) {\n\t\t    var lastelt, returnitem;\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    lastelt = array.pop();\n\t\t    if (array.length) {\n\t\t      returnitem = array[0];\n\t\t      array[0] = lastelt;\n\t\t      _siftup(array, 0, cmp);\n\t\t    } else {\n\t\t      returnitem = lastelt;\n\t\t    }\n\t\t    return returnitem;\n\t\t  };\n\n\n\t\t  /*\n\t\t  Pop and return the current smallest value, and add the new item.\n\t\t  \n\t\t  This is more efficient than heappop() followed by heappush(), and can be\n\t\t  more appropriate when using a fixed size heap. Note that the value\n\t\t  returned may be larger than item! That constrains reasonable use of\n\t\t  this routine unless written as part of a conditional replacement:\n\t\t      if item > array[0]\n\t\t        item = heapreplace(array, item)\n\t\t   */\n\n\t\t  heapreplace = function(array, item, cmp) {\n\t\t    var returnitem;\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    returnitem = array[0];\n\t\t    array[0] = item;\n\t\t    _siftup(array, 0, cmp);\n\t\t    return returnitem;\n\t\t  };\n\n\n\t\t  /*\n\t\t  Fast version of a heappush followed by a heappop.\n\t\t   */\n\n\t\t  heappushpop = function(array, item, cmp) {\n\t\t    var _ref;\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    if (array.length && cmp(array[0], item) < 0) {\n\t\t      _ref = [array[0], item], item = _ref[0], array[0] = _ref[1];\n\t\t      _siftup(array, 0, cmp);\n\t\t    }\n\t\t    return item;\n\t\t  };\n\n\n\t\t  /*\n\t\t  Transform list into a heap, in-place, in O(array.length) time.\n\t\t   */\n\n\t\t  heapify = function(array, cmp) {\n\t\t    var i, _i, _len, _ref1, _results, _results1;\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    _ref1 = (function() {\n\t\t      _results1 = [];\n\t\t      for (var _j = 0, _ref = floor(array.length / 2); 0 <= _ref ? _j < _ref : _j > _ref; 0 <= _ref ? _j++ : _j--){ _results1.push(_j); }\n\t\t      return _results1;\n\t\t    }).apply(this).reverse();\n\t\t    _results = [];\n\t\t    for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n\t\t      i = _ref1[_i];\n\t\t      _results.push(_siftup(array, i, cmp));\n\t\t    }\n\t\t    return _results;\n\t\t  };\n\n\n\t\t  /*\n\t\t  Update the position of the given item in the heap.\n\t\t  This function should be called every time the item is being modified.\n\t\t   */\n\n\t\t  updateItem = function(array, item, cmp) {\n\t\t    var pos;\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    pos = array.indexOf(item);\n\t\t    if (pos === -1) {\n\t\t      return;\n\t\t    }\n\t\t    _siftdown(array, 0, pos, cmp);\n\t\t    return _siftup(array, pos, cmp);\n\t\t  };\n\n\n\t\t  /*\n\t\t  Find the n largest elements in a dataset.\n\t\t   */\n\n\t\t  nlargest = function(array, n, cmp) {\n\t\t    var elem, result, _i, _len, _ref;\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    result = array.slice(0, n);\n\t\t    if (!result.length) {\n\t\t      return result;\n\t\t    }\n\t\t    heapify(result, cmp);\n\t\t    _ref = array.slice(n);\n\t\t    for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n\t\t      elem = _ref[_i];\n\t\t      heappushpop(result, elem, cmp);\n\t\t    }\n\t\t    return result.sort(cmp).reverse();\n\t\t  };\n\n\n\t\t  /*\n\t\t  Find the n smallest elements in a dataset.\n\t\t   */\n\n\t\t  nsmallest = function(array, n, cmp) {\n\t\t    var elem, los, result, _i, _j, _len, _ref, _ref1, _results;\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    if (n * 10 <= array.length) {\n\t\t      result = array.slice(0, n).sort(cmp);\n\t\t      if (!result.length) {\n\t\t        return result;\n\t\t      }\n\t\t      los = result[result.length - 1];\n\t\t      _ref = array.slice(n);\n\t\t      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n\t\t        elem = _ref[_i];\n\t\t        if (cmp(elem, los) < 0) {\n\t\t          insort(result, elem, 0, null, cmp);\n\t\t          result.pop();\n\t\t          los = result[result.length - 1];\n\t\t        }\n\t\t      }\n\t\t      return result;\n\t\t    }\n\t\t    heapify(array, cmp);\n\t\t    _results = [];\n\t\t    for (_j = 0, _ref1 = min(n, array.length); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; 0 <= _ref1 ? ++_j : --_j) {\n\t\t      _results.push(heappop(array, cmp));\n\t\t    }\n\t\t    return _results;\n\t\t  };\n\n\t\t  _siftdown = function(array, startpos, pos, cmp) {\n\t\t    var newitem, parent, parentpos;\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    newitem = array[pos];\n\t\t    while (pos > startpos) {\n\t\t      parentpos = (pos - 1) >> 1;\n\t\t      parent = array[parentpos];\n\t\t      if (cmp(newitem, parent) < 0) {\n\t\t        array[pos] = parent;\n\t\t        pos = parentpos;\n\t\t        continue;\n\t\t      }\n\t\t      break;\n\t\t    }\n\t\t    return array[pos] = newitem;\n\t\t  };\n\n\t\t  _siftup = function(array, pos, cmp) {\n\t\t    var childpos, endpos, newitem, rightpos, startpos;\n\t\t    if (cmp == null) {\n\t\t      cmp = defaultCmp;\n\t\t    }\n\t\t    endpos = array.length;\n\t\t    startpos = pos;\n\t\t    newitem = array[pos];\n\t\t    childpos = 2 * pos + 1;\n\t\t    while (childpos < endpos) {\n\t\t      rightpos = childpos + 1;\n\t\t      if (rightpos < endpos && !(cmp(array[childpos], array[rightpos]) < 0)) {\n\t\t        childpos = rightpos;\n\t\t      }\n\t\t      array[pos] = array[childpos];\n\t\t      pos = childpos;\n\t\t      childpos = 2 * pos + 1;\n\t\t    }\n\t\t    array[pos] = newitem;\n\t\t    return _siftdown(array, startpos, pos, cmp);\n\t\t  };\n\n\t\t  Heap = (function() {\n\t\t    Heap.push = heappush;\n\n\t\t    Heap.pop = heappop;\n\n\t\t    Heap.replace = heapreplace;\n\n\t\t    Heap.pushpop = heappushpop;\n\n\t\t    Heap.heapify = heapify;\n\n\t\t    Heap.updateItem = updateItem;\n\n\t\t    Heap.nlargest = nlargest;\n\n\t\t    Heap.nsmallest = nsmallest;\n\n\t\t    function Heap(cmp) {\n\t\t      this.cmp = cmp != null ? cmp : defaultCmp;\n\t\t      this.nodes = [];\n\t\t    }\n\n\t\t    Heap.prototype.push = function(x) {\n\t\t      return heappush(this.nodes, x, this.cmp);\n\t\t    };\n\n\t\t    Heap.prototype.pop = function() {\n\t\t      return heappop(this.nodes, this.cmp);\n\t\t    };\n\n\t\t    Heap.prototype.peek = function() {\n\t\t      return this.nodes[0];\n\t\t    };\n\n\t\t    Heap.prototype.contains = function(x) {\n\t\t      return this.nodes.indexOf(x) !== -1;\n\t\t    };\n\n\t\t    Heap.prototype.replace = function(x) {\n\t\t      return heapreplace(this.nodes, x, this.cmp);\n\t\t    };\n\n\t\t    Heap.prototype.pushpop = function(x) {\n\t\t      return heappushpop(this.nodes, x, this.cmp);\n\t\t    };\n\n\t\t    Heap.prototype.heapify = function() {\n\t\t      return heapify(this.nodes, this.cmp);\n\t\t    };\n\n\t\t    Heap.prototype.updateItem = function(x) {\n\t\t      return updateItem(this.nodes, x, this.cmp);\n\t\t    };\n\n\t\t    Heap.prototype.clear = function() {\n\t\t      return this.nodes = [];\n\t\t    };\n\n\t\t    Heap.prototype.empty = function() {\n\t\t      return this.nodes.length === 0;\n\t\t    };\n\n\t\t    Heap.prototype.size = function() {\n\t\t      return this.nodes.length;\n\t\t    };\n\n\t\t    Heap.prototype.clone = function() {\n\t\t      var heap;\n\t\t      heap = new Heap();\n\t\t      heap.nodes = this.nodes.slice(0);\n\t\t      return heap;\n\t\t    };\n\n\t\t    Heap.prototype.toArray = function() {\n\t\t      return this.nodes.slice(0);\n\t\t    };\n\n\t\t    Heap.prototype.insert = Heap.prototype.push;\n\n\t\t    Heap.prototype.top = Heap.prototype.peek;\n\n\t\t    Heap.prototype.front = Heap.prototype.peek;\n\n\t\t    Heap.prototype.has = Heap.prototype.contains;\n\n\t\t    Heap.prototype.copy = Heap.prototype.clone;\n\n\t\t    return Heap;\n\n\t\t  })();\n\n\t\t  (function(root, factory) {\n\t\t    {\n\t\t      return module.exports = factory();\n\t\t    }\n\t\t  })(this, function() {\n\t\t    return Heap;\n\t\t  });\n\n\t\t}).call(heap$1); \n\t} (heap$2));\n\treturn heap$2.exports;\n}\n\nvar heap;\nvar hasRequiredHeap;\n\nfunction requireHeap () {\n\tif (hasRequiredHeap) return heap;\n\thasRequiredHeap = 1;\n\theap = requireHeap$1();\n\treturn heap;\n}\n\nvar heapExports = requireHeap();\nvar Heap = /*@__PURE__*/getDefaultExportFromCjs(heapExports);\n\nvar dijkstraDefaults = defaults$g({\n  root: null,\n  weight: function weight(edge) {\n    return 1;\n  },\n  directed: false\n});\nvar elesfn$u = {\n  dijkstra: function dijkstra(options) {\n    if (!plainObject(options)) {\n      var args = arguments;\n      options = {\n        root: args[0],\n        weight: args[1],\n        directed: args[2]\n      };\n    }\n    var _dijkstraDefaults = dijkstraDefaults(options),\n      root = _dijkstraDefaults.root,\n      weight = _dijkstraDefaults.weight,\n      directed = _dijkstraDefaults.directed;\n    var eles = this;\n    var weightFn = weight;\n    var source = string(root) ? this.filter(root)[0] : root[0];\n    var dist = {};\n    var prev = {};\n    var knownDist = {};\n    var _this$byGroup = this.byGroup(),\n      nodes = _this$byGroup.nodes,\n      edges = _this$byGroup.edges;\n    edges.unmergeBy(function (ele) {\n      return ele.isLoop();\n    });\n    var getDist = function getDist(node) {\n      return dist[node.id()];\n    };\n    var setDist = function setDist(node, d) {\n      dist[node.id()] = d;\n      Q.updateItem(node);\n    };\n    var Q = new Heap(function (a, b) {\n      return getDist(a) - getDist(b);\n    });\n    for (var i = 0; i < nodes.length; i++) {\n      var node = nodes[i];\n      dist[node.id()] = node.same(source) ? 0 : Infinity;\n      Q.push(node);\n    }\n    var distBetween = function distBetween(u, v) {\n      var uvs = (directed ? u.edgesTo(v) : u.edgesWith(v)).intersect(edges);\n      var smallestDistance = Infinity;\n      var smallestEdge;\n      for (var _i = 0; _i < uvs.length; _i++) {\n        var edge = uvs[_i];\n        var _weight = weightFn(edge);\n        if (_weight < smallestDistance || !smallestEdge) {\n          smallestDistance = _weight;\n          smallestEdge = edge;\n        }\n      }\n      return {\n        edge: smallestEdge,\n        dist: smallestDistance\n      };\n    };\n    while (Q.size() > 0) {\n      var u = Q.pop();\n      var smalletsDist = getDist(u);\n      var uid = u.id();\n      knownDist[uid] = smalletsDist;\n      if (smalletsDist === Infinity) {\n        continue;\n      }\n      var neighbors = u.neighborhood().intersect(nodes);\n      for (var _i2 = 0; _i2 < neighbors.length; _i2++) {\n        var v = neighbors[_i2];\n        var vid = v.id();\n        var vDist = distBetween(u, v);\n        var alt = smalletsDist + vDist.dist;\n        if (alt < getDist(v)) {\n          setDist(v, alt);\n          prev[vid] = {\n            node: u,\n            edge: vDist.edge\n          };\n        }\n      } // for\n    } // while\n\n    return {\n      distanceTo: function distanceTo(node) {\n        var target = string(node) ? nodes.filter(node)[0] : node[0];\n        return knownDist[target.id()];\n      },\n      pathTo: function pathTo(node) {\n        var target = string(node) ? nodes.filter(node)[0] : node[0];\n        var S = [];\n        var u = target;\n        var uid = u.id();\n        if (target.length > 0) {\n          S.unshift(target);\n          while (prev[uid]) {\n            var p = prev[uid];\n            S.unshift(p.edge);\n            S.unshift(p.node);\n            u = p.node;\n            uid = u.id();\n          }\n        }\n        return eles.spawn(S);\n      }\n    };\n  }\n};\n\nvar elesfn$t = {\n  // kruskal's algorithm (finds min spanning tree, assuming undirected graph)\n  // implemented from pseudocode from wikipedia\n  kruskal: function kruskal(weightFn) {\n    weightFn = weightFn || function (edge) {\n      return 1;\n    };\n    var _this$byGroup = this.byGroup(),\n      nodes = _this$byGroup.nodes,\n      edges = _this$byGroup.edges;\n    var numNodes = nodes.length;\n    var forest = new Array(numNodes);\n    var A = nodes; // assumes byGroup() creates new collections that can be safely mutated\n\n    var findSetIndex = function findSetIndex(ele) {\n      for (var i = 0; i < forest.length; i++) {\n        var eles = forest[i];\n        if (eles.has(ele)) {\n          return i;\n        }\n      }\n    };\n\n    // start with one forest per node\n    for (var i = 0; i < numNodes; i++) {\n      forest[i] = this.spawn(nodes[i]);\n    }\n    var S = edges.sort(function (a, b) {\n      return weightFn(a) - weightFn(b);\n    });\n    for (var _i = 0; _i < S.length; _i++) {\n      var edge = S[_i];\n      var u = edge.source()[0];\n      var v = edge.target()[0];\n      var setUIndex = findSetIndex(u);\n      var setVIndex = findSetIndex(v);\n      var setU = forest[setUIndex];\n      var setV = forest[setVIndex];\n      if (setUIndex !== setVIndex) {\n        A.merge(edge);\n\n        // combine forests for u and v\n        setU.merge(setV);\n        forest.splice(setVIndex, 1);\n      }\n    }\n    return A;\n  }\n};\n\nvar aStarDefaults = defaults$g({\n  root: null,\n  goal: null,\n  weight: function weight(edge) {\n    return 1;\n  },\n  heuristic: function heuristic(edge) {\n    return 0;\n  },\n  directed: false\n});\nvar elesfn$s = {\n  // Implemented from pseudocode from wikipedia\n  aStar: function aStar(options) {\n    var cy = this.cy();\n    var _aStarDefaults = aStarDefaults(options),\n      root = _aStarDefaults.root,\n      goal = _aStarDefaults.goal,\n      heuristic = _aStarDefaults.heuristic,\n      directed = _aStarDefaults.directed,\n      weight = _aStarDefaults.weight;\n    root = cy.collection(root)[0];\n    goal = cy.collection(goal)[0];\n    var sid = root.id();\n    var tid = goal.id();\n    var gScore = {};\n    var fScore = {};\n    var closedSetIds = {};\n    var openSet = new Heap(function (a, b) {\n      return fScore[a.id()] - fScore[b.id()];\n    });\n    var openSetIds = new Set$1();\n    var cameFrom = {};\n    var cameFromEdge = {};\n    var addToOpenSet = function addToOpenSet(ele, id) {\n      openSet.push(ele);\n      openSetIds.add(id);\n    };\n    var cMin, cMinId;\n    var popFromOpenSet = function popFromOpenSet() {\n      cMin = openSet.pop();\n      cMinId = cMin.id();\n      openSetIds[\"delete\"](cMinId);\n    };\n    var isInOpenSet = function isInOpenSet(id) {\n      return openSetIds.has(id);\n    };\n    addToOpenSet(root, sid);\n    gScore[sid] = 0;\n    fScore[sid] = heuristic(root);\n\n    // Counter\n    var steps = 0;\n\n    // Main loop\n    while (openSet.size() > 0) {\n      popFromOpenSet();\n      steps++;\n\n      // If we've found our goal, then we are done\n      if (cMinId === tid) {\n        var path = [];\n        var pathNode = goal;\n        var pathNodeId = tid;\n        var pathEdge = cameFromEdge[pathNodeId];\n        for (;;) {\n          path.unshift(pathNode);\n          if (pathEdge != null) {\n            path.unshift(pathEdge);\n          }\n          pathNode = cameFrom[pathNodeId];\n          if (pathNode == null) {\n            break;\n          }\n          pathNodeId = pathNode.id();\n          pathEdge = cameFromEdge[pathNodeId];\n        }\n        return {\n          found: true,\n          distance: gScore[cMinId],\n          path: this.spawn(path),\n          steps: steps\n        };\n      }\n\n      // Add cMin to processed nodes\n      closedSetIds[cMinId] = true;\n\n      // Update scores for neighbors of cMin\n      // Take into account if graph is directed or not\n      var vwEdges = cMin._private.edges;\n      for (var i = 0; i < vwEdges.length; i++) {\n        var e = vwEdges[i];\n\n        // edge must be in set of calling eles\n        if (!this.hasElementWithId(e.id())) {\n          continue;\n        }\n\n        // cMin must be the source of edge if directed\n        if (directed && e.data('source') !== cMinId) {\n          continue;\n        }\n        var wSrc = e.source();\n        var wTgt = e.target();\n        var w = wSrc.id() !== cMinId ? wSrc : wTgt;\n        var wid = w.id();\n\n        // node must be in set of calling eles\n        if (!this.hasElementWithId(wid)) {\n          continue;\n        }\n\n        // if node is in closedSet, ignore it\n        if (closedSetIds[wid]) {\n          continue;\n        }\n\n        // New tentative score for node w\n        var tempScore = gScore[cMinId] + weight(e);\n\n        // Update gScore for node w if:\n        //   w not present in openSet\n        // OR\n        //   tentative gScore is less than previous value\n\n        // w not in openSet\n        if (!isInOpenSet(wid)) {\n          gScore[wid] = tempScore;\n          fScore[wid] = tempScore + heuristic(w);\n          addToOpenSet(w, wid);\n          cameFrom[wid] = cMin;\n          cameFromEdge[wid] = e;\n          continue;\n        }\n\n        // w already in openSet, but with greater gScore\n        if (tempScore < gScore[wid]) {\n          gScore[wid] = tempScore;\n          fScore[wid] = tempScore + heuristic(w);\n          cameFrom[wid] = cMin;\n          cameFromEdge[wid] = e;\n        }\n      } // End of neighbors update\n    } // End of main loop\n\n    // If we've reached here, then we've not reached our goal\n    return {\n      found: false,\n      distance: undefined,\n      path: undefined,\n      steps: steps\n    };\n  }\n}; // elesfn\n\nvar floydWarshallDefaults = defaults$g({\n  weight: function weight(edge) {\n    return 1;\n  },\n  directed: false\n});\nvar elesfn$r = {\n  // Implemented from pseudocode from wikipedia\n  floydWarshall: function floydWarshall(options) {\n    var cy = this.cy();\n    var _floydWarshallDefault = floydWarshallDefaults(options),\n      weight = _floydWarshallDefault.weight,\n      directed = _floydWarshallDefault.directed;\n    var weightFn = weight;\n    var _this$byGroup = this.byGroup(),\n      nodes = _this$byGroup.nodes,\n      edges = _this$byGroup.edges;\n    var N = nodes.length;\n    var Nsq = N * N;\n    var indexOf = function indexOf(node) {\n      return nodes.indexOf(node);\n    };\n    var atIndex = function atIndex(i) {\n      return nodes[i];\n    };\n\n    // Initialize distance matrix\n    var dist = new Array(Nsq);\n    for (var n = 0; n < Nsq; n++) {\n      var j = n % N;\n      var i = (n - j) / N;\n      if (i === j) {\n        dist[n] = 0;\n      } else {\n        dist[n] = Infinity;\n      }\n    }\n\n    // Initialize matrix used for path reconstruction\n    // Initialize distance matrix\n    var next = new Array(Nsq);\n    var edgeNext = new Array(Nsq);\n\n    // Process edges\n    for (var _i = 0; _i < edges.length; _i++) {\n      var edge = edges[_i];\n      var src = edge.source()[0];\n      var tgt = edge.target()[0];\n      if (src === tgt) {\n        continue;\n      } // exclude loops\n\n      var s = indexOf(src);\n      var t = indexOf(tgt);\n      var st = s * N + t; // source to target index\n      var _weight = weightFn(edge);\n\n      // Check if already process another edge between same 2 nodes\n      if (dist[st] > _weight) {\n        dist[st] = _weight;\n        next[st] = t;\n        edgeNext[st] = edge;\n      }\n\n      // If undirected graph, process 'reversed' edge\n      if (!directed) {\n        var ts = t * N + s; // target to source index\n\n        if (!directed && dist[ts] > _weight) {\n          dist[ts] = _weight;\n          next[ts] = s;\n          edgeNext[ts] = edge;\n        }\n      }\n    }\n\n    // Main loop\n    for (var k = 0; k < N; k++) {\n      for (var _i2 = 0; _i2 < N; _i2++) {\n        var ik = _i2 * N + k;\n        for (var _j = 0; _j < N; _j++) {\n          var ij = _i2 * N + _j;\n          var kj = k * N + _j;\n          if (dist[ik] + dist[kj] < dist[ij]) {\n            dist[ij] = dist[ik] + dist[kj];\n            next[ij] = next[ik];\n          }\n        }\n      }\n    }\n    var getArgEle = function getArgEle(ele) {\n      return (string(ele) ? cy.filter(ele) : ele)[0];\n    };\n    var indexOfArgEle = function indexOfArgEle(ele) {\n      return indexOf(getArgEle(ele));\n    };\n    var res = {\n      distance: function distance(from, to) {\n        var i = indexOfArgEle(from);\n        var j = indexOfArgEle(to);\n        return dist[i * N + j];\n      },\n      path: function path(from, to) {\n        var i = indexOfArgEle(from);\n        var j = indexOfArgEle(to);\n        var fromNode = atIndex(i);\n        if (i === j) {\n          return fromNode.collection();\n        }\n        if (next[i * N + j] == null) {\n          return cy.collection();\n        }\n        var path = cy.collection();\n        var prev = i;\n        var edge;\n        path.merge(fromNode);\n        while (i !== j) {\n          prev = i;\n          i = next[i * N + j];\n          edge = edgeNext[prev * N + i];\n          path.merge(edge);\n          path.merge(atIndex(i));\n        }\n        return path;\n      }\n    };\n    return res;\n  } // floydWarshall\n}; // elesfn\n\nvar bellmanFordDefaults = defaults$g({\n  weight: function weight(edge) {\n    return 1;\n  },\n  directed: false,\n  root: null\n});\nvar elesfn$q = {\n  // Implemented from pseudocode from wikipedia\n  bellmanFord: function bellmanFord(options) {\n    var _this = this;\n    var _bellmanFordDefaults = bellmanFordDefaults(options),\n      weight = _bellmanFordDefaults.weight,\n      directed = _bellmanFordDefaults.directed,\n      root = _bellmanFordDefaults.root;\n    var weightFn = weight;\n    var eles = this;\n    var cy = this.cy();\n    var _this$byGroup = this.byGroup(),\n      edges = _this$byGroup.edges,\n      nodes = _this$byGroup.nodes;\n    var numNodes = nodes.length;\n    var infoMap = new Map$1();\n    var hasNegativeWeightCycle = false;\n    var negativeWeightCycles = [];\n    root = cy.collection(root)[0]; // in case selector passed\n\n    edges.unmergeBy(function (edge) {\n      return edge.isLoop();\n    });\n    var numEdges = edges.length;\n    var getInfo = function getInfo(node) {\n      var obj = infoMap.get(node.id());\n      if (!obj) {\n        obj = {};\n        infoMap.set(node.id(), obj);\n      }\n      return obj;\n    };\n    var getNodeFromTo = function getNodeFromTo(to) {\n      return (string(to) ? cy.$(to) : to)[0];\n    };\n    var distanceTo = function distanceTo(to) {\n      return getInfo(getNodeFromTo(to)).dist;\n    };\n    var pathTo = function pathTo(to) {\n      var thisStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : root;\n      var end = getNodeFromTo(to);\n      var path = [];\n      var node = end;\n      for (;;) {\n        if (node == null) {\n          return _this.spawn();\n        }\n        var _getInfo = getInfo(node),\n          edge = _getInfo.edge,\n          pred = _getInfo.pred;\n        path.unshift(node[0]);\n        if (node.same(thisStart) && path.length > 0) {\n          break;\n        }\n        if (edge != null) {\n          path.unshift(edge);\n        }\n        node = pred;\n      }\n      return eles.spawn(path);\n    };\n\n    // Initializations { dist, pred, edge }\n    for (var i = 0; i < numNodes; i++) {\n      var node = nodes[i];\n      var info = getInfo(node);\n      if (node.same(root)) {\n        info.dist = 0;\n      } else {\n        info.dist = Infinity;\n      }\n      info.pred = null;\n      info.edge = null;\n    }\n\n    // Edges relaxation\n    var replacedEdge = false;\n    var checkForEdgeReplacement = function checkForEdgeReplacement(node1, node2, edge, info1, info2, weight) {\n      var dist = info1.dist + weight;\n      if (dist < info2.dist && !edge.same(info1.edge)) {\n        info2.dist = dist;\n        info2.pred = node1;\n        info2.edge = edge;\n        replacedEdge = true;\n      }\n    };\n    for (var _i = 1; _i < numNodes; _i++) {\n      replacedEdge = false;\n      for (var e = 0; e < numEdges; e++) {\n        var edge = edges[e];\n        var src = edge.source();\n        var tgt = edge.target();\n        var _weight = weightFn(edge);\n        var srcInfo = getInfo(src);\n        var tgtInfo = getInfo(tgt);\n        checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight);\n\n        // If undirected graph, we need to take into account the 'reverse' edge\n        if (!directed) {\n          checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight);\n        }\n      }\n      if (!replacedEdge) {\n        break;\n      }\n    }\n    if (replacedEdge) {\n      // Check for negative weight cycles\n      var negativeWeightCycleIds = [];\n      for (var _e = 0; _e < numEdges; _e++) {\n        var _edge = edges[_e];\n        var _src = _edge.source();\n        var _tgt = _edge.target();\n        var _weight2 = weightFn(_edge);\n        var srcDist = getInfo(_src).dist;\n        var tgtDist = getInfo(_tgt).dist;\n        if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) {\n          if (!hasNegativeWeightCycle) {\n            warn('Graph contains a negative weight cycle for Bellman-Ford');\n            hasNegativeWeightCycle = true;\n          }\n          if (options.findNegativeWeightCycles !== false) {\n            var negativeNodes = [];\n            if (srcDist + _weight2 < tgtDist) {\n              negativeNodes.push(_src);\n            }\n            if (!directed && tgtDist + _weight2 < srcDist) {\n              negativeNodes.push(_tgt);\n            }\n            var numNegativeNodes = negativeNodes.length;\n            for (var n = 0; n < numNegativeNodes; n++) {\n              var start = negativeNodes[n];\n              var cycle = [start];\n              cycle.push(getInfo(start).edge);\n              var _node = getInfo(start).pred;\n              while (cycle.indexOf(_node) === -1) {\n                cycle.push(_node);\n                cycle.push(getInfo(_node).edge);\n                _node = getInfo(_node).pred;\n              }\n              cycle = cycle.slice(cycle.indexOf(_node));\n              var smallestId = cycle[0].id();\n              var smallestIndex = 0;\n              for (var c = 2; c < cycle.length; c += 2) {\n                if (cycle[c].id() < smallestId) {\n                  smallestId = cycle[c].id();\n                  smallestIndex = c;\n                }\n              }\n              cycle = cycle.slice(smallestIndex).concat(cycle.slice(0, smallestIndex));\n              cycle.push(cycle[0]);\n              var cycleId = cycle.map(function (el) {\n                return el.id();\n              }).join(\",\");\n              if (negativeWeightCycleIds.indexOf(cycleId) === -1) {\n                negativeWeightCycles.push(eles.spawn(cycle));\n                negativeWeightCycleIds.push(cycleId);\n              }\n            }\n          } else {\n            break;\n          }\n        }\n      }\n    }\n    return {\n      distanceTo: distanceTo,\n      pathTo: pathTo,\n      hasNegativeWeightCycle: hasNegativeWeightCycle,\n      negativeWeightCycles: negativeWeightCycles\n    };\n  } // bellmanFord\n}; // elesfn\n\nvar sqrt2 = Math.sqrt(2);\n\n// Function which colapses 2 (meta) nodes into one\n// Updates the remaining edge lists\n// Receives as a paramater the edge which causes the collapse\nvar collapse = function collapse(edgeIndex, nodeMap, remainingEdges) {\n  if (remainingEdges.length === 0) {\n    error(\"Karger-Stein must be run on a connected (sub)graph\");\n  }\n  var edgeInfo = remainingEdges[edgeIndex];\n  var sourceIn = edgeInfo[1];\n  var targetIn = edgeInfo[2];\n  var partition1 = nodeMap[sourceIn];\n  var partition2 = nodeMap[targetIn];\n  var newEdges = remainingEdges; // re-use array\n\n  // Delete all edges between partition1 and partition2\n  for (var i = newEdges.length - 1; i >= 0; i--) {\n    var edge = newEdges[i];\n    var src = edge[1];\n    var tgt = edge[2];\n    if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) {\n      newEdges.splice(i, 1);\n    }\n  }\n\n  // All edges pointing to partition2 should now point to partition1\n  for (var _i = 0; _i < newEdges.length; _i++) {\n    var _edge = newEdges[_i];\n    if (_edge[1] === partition2) {\n      // Check source\n      newEdges[_i] = _edge.slice(); // copy\n      newEdges[_i][1] = partition1;\n    } else if (_edge[2] === partition2) {\n      // Check target\n      newEdges[_i] = _edge.slice(); // copy\n      newEdges[_i][2] = partition1;\n    }\n  }\n\n  // Move all nodes from partition2 to partition1\n  for (var _i2 = 0; _i2 < nodeMap.length; _i2++) {\n    if (nodeMap[_i2] === partition2) {\n      nodeMap[_i2] = partition1;\n    }\n  }\n  return newEdges;\n};\n\n// Contracts a graph until we reach a certain number of meta nodes\nvar contractUntil = function contractUntil(metaNodeMap, remainingEdges, size, sizeLimit) {\n  while (size > sizeLimit) {\n    // Choose an edge randomly\n    var edgeIndex = Math.floor(Math.random() * remainingEdges.length);\n\n    // Collapse graph based on edge\n    remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges);\n    size--;\n  }\n  return remainingEdges;\n};\nvar elesfn$p = {\n  // Computes the minimum cut of an undirected graph\n  // Returns the correct answer with high probability\n  kargerStein: function kargerStein() {\n    var _this = this;\n    var _this$byGroup = this.byGroup(),\n      nodes = _this$byGroup.nodes,\n      edges = _this$byGroup.edges;\n    edges.unmergeBy(function (edge) {\n      return edge.isLoop();\n    });\n    var numNodes = nodes.length;\n    var numEdges = edges.length;\n    var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2));\n    var stopSize = Math.floor(numNodes / sqrt2);\n    if (numNodes < 2) {\n      error('At least 2 nodes are required for Karger-Stein algorithm');\n      return undefined;\n    }\n\n    // Now store edge destination as indexes\n    // Format for each edge (edge index, source node index, target node index)\n    var edgeIndexes = [];\n    for (var i = 0; i < numEdges; i++) {\n      var e = edges[i];\n      edgeIndexes.push([i, nodes.indexOf(e.source()), nodes.indexOf(e.target())]);\n    }\n\n    // We will store the best cut found here\n    var minCutSize = Infinity;\n    var minCutEdgeIndexes = [];\n    var minCutNodeMap = new Array(numNodes);\n\n    // Initial meta node partition\n    var metaNodeMap = new Array(numNodes);\n    var metaNodeMap2 = new Array(numNodes);\n    var copyNodesMap = function copyNodesMap(from, to) {\n      for (var _i3 = 0; _i3 < numNodes; _i3++) {\n        to[_i3] = from[_i3];\n      }\n    };\n\n    // Main loop\n    for (var iter = 0; iter <= numIter; iter++) {\n      // Reset meta node partition\n      for (var _i4 = 0; _i4 < numNodes; _i4++) {\n        metaNodeMap[_i4] = _i4;\n      }\n\n      // Contract until stop point (stopSize nodes)\n      var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize);\n      var edgesState2 = edgesState.slice(); // copy\n\n      // Create a copy of the colapsed nodes state\n      copyNodesMap(metaNodeMap, metaNodeMap2);\n\n      // Run 2 iterations starting in the stop state\n      var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2);\n      var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2);\n\n      // Is any of the 2 results the best cut so far?\n      if (res1.length <= res2.length && res1.length < minCutSize) {\n        minCutSize = res1.length;\n        minCutEdgeIndexes = res1;\n        copyNodesMap(metaNodeMap, minCutNodeMap);\n      } else if (res2.length <= res1.length && res2.length < minCutSize) {\n        minCutSize = res2.length;\n        minCutEdgeIndexes = res2;\n        copyNodesMap(metaNodeMap2, minCutNodeMap);\n      }\n    } // end of main loop\n\n    // Construct result\n    var cut = this.spawn(minCutEdgeIndexes.map(function (e) {\n      return edges[e[0]];\n    }));\n    var partition1 = this.spawn();\n    var partition2 = this.spawn();\n\n    // traverse metaNodeMap for best cut\n    var witnessNodePartition = minCutNodeMap[0];\n    for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) {\n      var partitionId = minCutNodeMap[_i5];\n      var node = nodes[_i5];\n      if (partitionId === witnessNodePartition) {\n        partition1.merge(node);\n      } else {\n        partition2.merge(node);\n      }\n    }\n\n    // construct components corresponding to each disjoint subset of nodes\n    var constructComponent = function constructComponent(subset) {\n      var component = _this.spawn();\n      subset.forEach(function (node) {\n        component.merge(node);\n        node.connectedEdges().forEach(function (edge) {\n          // ensure edge is within calling collection and edge is not in cut\n          if (_this.contains(edge) && !cut.contains(edge)) {\n            component.merge(edge);\n          }\n        });\n      });\n      return component;\n    };\n    var components = [constructComponent(partition1), constructComponent(partition2)];\n    var ret = {\n      cut: cut,\n      components: components,\n      // n.b. partitions are included to be compatible with the old api spec\n      // (could be removed in a future major version)\n      partition1: partition1,\n      partition2: partition2\n    };\n    return ret;\n  }\n}; // elesfn\n\nvar _Math$hypot;\nvar copyPosition = function copyPosition(p) {\n  return {\n    x: p.x,\n    y: p.y\n  };\n};\nvar modelToRenderedPosition$1 = function modelToRenderedPosition(p, zoom, pan) {\n  return {\n    x: p.x * zoom + pan.x,\n    y: p.y * zoom + pan.y\n  };\n};\nvar renderedToModelPosition = function renderedToModelPosition(p, zoom, pan) {\n  return {\n    x: (p.x - pan.x) / zoom,\n    y: (p.y - pan.y) / zoom\n  };\n};\nvar array2point = function array2point(arr) {\n  return {\n    x: arr[0],\n    y: arr[1]\n  };\n};\nvar min = function min(arr) {\n  var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n  var min = Infinity;\n  for (var i = begin; i < end; i++) {\n    var val = arr[i];\n    if (isFinite(val)) {\n      min = Math.min(val, min);\n    }\n  }\n  return min;\n};\nvar max = function max(arr) {\n  var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n  var max = -Infinity;\n  for (var i = begin; i < end; i++) {\n    var val = arr[i];\n    if (isFinite(val)) {\n      max = Math.max(val, max);\n    }\n  }\n  return max;\n};\nvar mean = function mean(arr) {\n  var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n  var total = 0;\n  var n = 0;\n  for (var i = begin; i < end; i++) {\n    var val = arr[i];\n    if (isFinite(val)) {\n      total += val;\n      n++;\n    }\n  }\n  return total / n;\n};\nvar median = function median(arr) {\n  var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n  var copy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n  var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  var includeHoles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n  if (copy) {\n    arr = arr.slice(begin, end);\n  } else {\n    if (end < arr.length) {\n      arr.splice(end, arr.length - end);\n    }\n    if (begin > 0) {\n      arr.splice(0, begin);\n    }\n  }\n\n  // all non finite (e.g. Infinity, NaN) elements must be -Infinity so they go to the start\n  var off = 0; // offset from non-finite values\n  for (var i = arr.length - 1; i >= 0; i--) {\n    var v = arr[i];\n    if (includeHoles) {\n      if (!isFinite(v)) {\n        arr[i] = -Infinity;\n        off++;\n      }\n    } else {\n      // just remove it if we don't want to consider holes\n      arr.splice(i, 1);\n    }\n  }\n  if (sort) {\n    arr.sort(function (a, b) {\n      return a - b;\n    }); // requires copy = true if you don't want to change the orig\n  }\n  var len = arr.length;\n  var mid = Math.floor(len / 2);\n  if (len % 2 !== 0) {\n    return arr[mid + 1 + off];\n  } else {\n    return (arr[mid - 1 + off] + arr[mid + off]) / 2;\n  }\n};\nvar deg2rad = function deg2rad(deg) {\n  return Math.PI * deg / 180;\n};\nvar getAngleFromDisp = function getAngleFromDisp(dispX, dispY) {\n  return Math.atan2(dispY, dispX) - Math.PI / 2;\n};\nvar log2 = Math.log2 || function (n) {\n  return Math.log(n) / Math.log(2);\n};\nvar signum = function signum(x) {\n  if (x > 0) {\n    return 1;\n  } else if (x < 0) {\n    return -1;\n  } else {\n    return 0;\n  }\n};\nvar dist = function dist(p1, p2) {\n  return Math.sqrt(sqdist(p1, p2));\n};\nvar sqdist = function sqdist(p1, p2) {\n  var dx = p2.x - p1.x;\n  var dy = p2.y - p1.y;\n  return dx * dx + dy * dy;\n};\nvar inPlaceSumNormalize = function inPlaceSumNormalize(v) {\n  var length = v.length;\n\n  // First, get sum of all elements\n  var total = 0;\n  for (var i = 0; i < length; i++) {\n    total += v[i];\n  }\n\n  // Now, divide each by the sum of all elements\n  for (var _i = 0; _i < length; _i++) {\n    v[_i] = v[_i] / total;\n  }\n  return v;\n};\n\n// from http://en.wikipedia.org/wiki/Bézier_curve#Quadratic_curves\nvar qbezierAt = function qbezierAt(p0, p1, p2, t) {\n  return (1 - t) * (1 - t) * p0 + 2 * (1 - t) * t * p1 + t * t * p2;\n};\nvar qbezierPtAt = function qbezierPtAt(p0, p1, p2, t) {\n  return {\n    x: qbezierAt(p0.x, p1.x, p2.x, t),\n    y: qbezierAt(p0.y, p1.y, p2.y, t)\n  };\n};\nvar lineAt = function lineAt(p0, p1, t, d) {\n  var vec = {\n    x: p1.x - p0.x,\n    y: p1.y - p0.y\n  };\n  var vecDist = dist(p0, p1);\n  var normVec = {\n    x: vec.x / vecDist,\n    y: vec.y / vecDist\n  };\n  t = t == null ? 0 : t;\n  d = d != null ? d : t * vecDist;\n  return {\n    x: p0.x + normVec.x * d,\n    y: p0.y + normVec.y * d\n  };\n};\nvar bound = function bound(min, val, max) {\n  return Math.max(min, Math.min(max, val));\n};\n\n// makes a full bb (x1, y1, x2, y2, w, h) from implicit params\nvar makeBoundingBox = function makeBoundingBox(bb) {\n  if (bb == null) {\n    return {\n      x1: Infinity,\n      y1: Infinity,\n      x2: -Infinity,\n      y2: -Infinity,\n      w: 0,\n      h: 0\n    };\n  } else if (bb.x1 != null && bb.y1 != null) {\n    if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) {\n      return {\n        x1: bb.x1,\n        y1: bb.y1,\n        x2: bb.x2,\n        y2: bb.y2,\n        w: bb.x2 - bb.x1,\n        h: bb.y2 - bb.y1\n      };\n    } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) {\n      return {\n        x1: bb.x1,\n        y1: bb.y1,\n        x2: bb.x1 + bb.w,\n        y2: bb.y1 + bb.h,\n        w: bb.w,\n        h: bb.h\n      };\n    }\n  }\n};\nvar copyBoundingBox = function copyBoundingBox(bb) {\n  return {\n    x1: bb.x1,\n    x2: bb.x2,\n    w: bb.w,\n    y1: bb.y1,\n    y2: bb.y2,\n    h: bb.h\n  };\n};\nvar clearBoundingBox = function clearBoundingBox(bb) {\n  bb.x1 = Infinity;\n  bb.y1 = Infinity;\n  bb.x2 = -Infinity;\n  bb.y2 = -Infinity;\n  bb.w = 0;\n  bb.h = 0;\n};\nvar updateBoundingBox = function updateBoundingBox(bb1, bb2) {\n  // update bb1 with bb2 bounds\n\n  bb1.x1 = Math.min(bb1.x1, bb2.x1);\n  bb1.x2 = Math.max(bb1.x2, bb2.x2);\n  bb1.w = bb1.x2 - bb1.x1;\n  bb1.y1 = Math.min(bb1.y1, bb2.y1);\n  bb1.y2 = Math.max(bb1.y2, bb2.y2);\n  bb1.h = bb1.y2 - bb1.y1;\n};\nvar expandBoundingBoxByPoint = function expandBoundingBoxByPoint(bb, x, y) {\n  bb.x1 = Math.min(bb.x1, x);\n  bb.x2 = Math.max(bb.x2, x);\n  bb.w = bb.x2 - bb.x1;\n  bb.y1 = Math.min(bb.y1, y);\n  bb.y2 = Math.max(bb.y2, y);\n  bb.h = bb.y2 - bb.y1;\n};\nvar expandBoundingBox = function expandBoundingBox(bb) {\n  var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  bb.x1 -= padding;\n  bb.x2 += padding;\n  bb.y1 -= padding;\n  bb.y2 += padding;\n  bb.w = bb.x2 - bb.x1;\n  bb.h = bb.y2 - bb.y1;\n  return bb;\n};\nvar expandBoundingBoxSides = function expandBoundingBoxSides(bb) {\n  var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0];\n  var top, right, bottom, left;\n  if (padding.length === 1) {\n    top = right = bottom = left = padding[0];\n  } else if (padding.length === 2) {\n    top = bottom = padding[0];\n    left = right = padding[1];\n  } else if (padding.length === 4) {\n    var _padding = _slicedToArray(padding, 4);\n    top = _padding[0];\n    right = _padding[1];\n    bottom = _padding[2];\n    left = _padding[3];\n  }\n  bb.x1 -= left;\n  bb.x2 += right;\n  bb.y1 -= top;\n  bb.y2 += bottom;\n  bb.w = bb.x2 - bb.x1;\n  bb.h = bb.y2 - bb.y1;\n  return bb;\n};\n\n// assign the values of bb2 into bb1\nvar assignBoundingBox = function assignBoundingBox(bb1, bb2) {\n  bb1.x1 = bb2.x1;\n  bb1.y1 = bb2.y1;\n  bb1.x2 = bb2.x2;\n  bb1.y2 = bb2.y2;\n  bb1.w = bb1.x2 - bb1.x1;\n  bb1.h = bb1.y2 - bb1.y1;\n};\nvar boundingBoxesIntersect = function boundingBoxesIntersect(bb1, bb2) {\n  // case: one bb to right of other\n  if (bb1.x1 > bb2.x2) {\n    return false;\n  }\n  if (bb2.x1 > bb1.x2) {\n    return false;\n  }\n\n  // case: one bb to left of other\n  if (bb1.x2 < bb2.x1) {\n    return false;\n  }\n  if (bb2.x2 < bb1.x1) {\n    return false;\n  }\n\n  // case: one bb above other\n  if (bb1.y2 < bb2.y1) {\n    return false;\n  }\n  if (bb2.y2 < bb1.y1) {\n    return false;\n  }\n\n  // case: one bb below other\n  if (bb1.y1 > bb2.y2) {\n    return false;\n  }\n  if (bb2.y1 > bb1.y2) {\n    return false;\n  }\n\n  // otherwise, must have some overlap\n  return true;\n};\nvar inBoundingBox = function inBoundingBox(bb, x, y) {\n  return bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2;\n};\nvar pointInBoundingBox = function pointInBoundingBox(bb, pt) {\n  return inBoundingBox(bb, pt.x, pt.y);\n};\nvar boundingBoxInBoundingBox = function boundingBoxInBoundingBox(bb1, bb2) {\n  return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2);\n};\nvar hypot = (_Math$hypot = Math.hypot) !== null && _Math$hypot !== undefined ? _Math$hypot : function (x, y) {\n  return Math.sqrt(x * x + y * y);\n};\nfunction inflatePolygon(polygon, d) {\n  if (polygon.length < 3) {\n    throw new Error('Need at least 3 vertices');\n  }\n  // Helpers\n  var add = function add(a, b) {\n    return {\n      x: a.x + b.x,\n      y: a.y + b.y\n    };\n  };\n  var sub = function sub(a, b) {\n    return {\n      x: a.x - b.x,\n      y: a.y - b.y\n    };\n  };\n  var scale = function scale(v, s) {\n    return {\n      x: v.x * s,\n      y: v.y * s\n    };\n  };\n  var cross = function cross(u, v) {\n    return u.x * v.y - u.y * v.x;\n  };\n  var normalize = function normalize(v) {\n    var len = hypot(v.x, v.y);\n    return len === 0 ? {\n      x: 0,\n      y: 0\n    } : {\n      x: v.x / len,\n      y: v.y / len\n    };\n  };\n  // Signed area (positive = CCW)\n  var signedArea = function signedArea(pts) {\n    var A = 0;\n    for (var i = 0; i < pts.length; i++) {\n      var p = pts[i],\n        q = pts[(i + 1) % pts.length];\n      A += p.x * q.y - q.x * p.y;\n    }\n    return A / 2;\n  };\n  // Line–line intersection (infinite lines)\n  var intersectLines = function intersectLines(p1, p2, p3, p4) {\n    var r = sub(p2, p1);\n    var s = sub(p4, p3);\n    var denom = cross(r, s);\n    if (Math.abs(denom) < 1e-9) {\n      // Parallel or nearly so — fallback to midpoint\n      return add(p1, scale(r, 0.5));\n    }\n    var t = cross(sub(p3, p1), s) / denom;\n    return add(p1, scale(r, t));\n  };\n\n  // Make a shallow copy and enforce CCW\n  var pts = polygon.map(function (p) {\n    return {\n      x: p.x,\n      y: p.y\n    };\n  });\n  if (signedArea(pts) < 0) pts.reverse();\n  var n = pts.length;\n  // Compute outward normals for each edge\n  var normals = [];\n  for (var i = 0; i < n; i++) {\n    var p = pts[i],\n      q = pts[(i + 1) % n];\n    var edge = sub(q, p);\n    // For CCW polygon, inward normal = (-edge.y, edge.x)\n    // so outward normal = (edge.y, -edge.x)\n    var out = normalize({\n      x: edge.y,\n      y: -edge.x\n    });\n    normals.push(out);\n  }\n\n  // Build offset edges\n  var offsetEdges = normals.map(function (nrm, i) {\n    var p1 = add(pts[i], scale(nrm, d));\n    var p2 = add(pts[(i + 1) % n], scale(nrm, d));\n    return {\n      p1: p1,\n      p2: p2\n    };\n  });\n\n  // Intersect consecutive offset edges\n  var inflated = [];\n  for (var _i2 = 0; _i2 < n; _i2++) {\n    var prevEdge = offsetEdges[(_i2 - 1 + n) % n];\n    var currEdge = offsetEdges[_i2];\n    var ip = intersectLines(prevEdge.p1, prevEdge.p2, currEdge.p1, currEdge.p2);\n    inflated.push(ip);\n  }\n  return inflated;\n}\nfunction miterBox(pts, centerX, centerY, width, height, strokeWidth) {\n  var tpts = transformPoints(pts, centerX, centerY, width, height);\n  var offsetPoints = inflatePolygon(tpts, strokeWidth);\n  var bb = makeBoundingBox();\n  offsetPoints.forEach(function (pt) {\n    return expandBoundingBoxByPoint(bb, pt.x, pt.y);\n  });\n  return bb;\n}\nvar roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) {\n  var radius = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 'auto';\n  var cornerRadius = radius === 'auto' ? getRoundRectangleRadius(width, height) : radius;\n  var halfWidth = width / 2;\n  var halfHeight = height / 2;\n  cornerRadius = Math.min(cornerRadius, halfWidth, halfHeight);\n  var doWidth = cornerRadius !== halfWidth,\n    doHeight = cornerRadius !== halfHeight;\n\n  // Check intersections with straight line segments\n  var straightLineIntersections;\n\n  // Top segment, left to right\n  if (doWidth) {\n    var topStartX = nodeX - halfWidth + cornerRadius - padding;\n    var topStartY = nodeY - halfHeight - padding;\n    var topEndX = nodeX + halfWidth - cornerRadius + padding;\n    var topEndY = topStartY;\n    straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);\n    if (straightLineIntersections.length > 0) {\n      return straightLineIntersections;\n    }\n  }\n\n  // Right segment, top to bottom\n  if (doHeight) {\n    var rightStartX = nodeX + halfWidth + padding;\n    var rightStartY = nodeY - halfHeight + cornerRadius - padding;\n    var rightEndX = rightStartX;\n    var rightEndY = nodeY + halfHeight - cornerRadius + padding;\n    straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false);\n    if (straightLineIntersections.length > 0) {\n      return straightLineIntersections;\n    }\n  }\n\n  // Bottom segment, left to right\n  if (doWidth) {\n    var bottomStartX = nodeX - halfWidth + cornerRadius - padding;\n    var bottomStartY = nodeY + halfHeight + padding;\n    var bottomEndX = nodeX + halfWidth - cornerRadius + padding;\n    var bottomEndY = bottomStartY;\n    straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false);\n    if (straightLineIntersections.length > 0) {\n      return straightLineIntersections;\n    }\n  }\n\n  // Left segment, top to bottom\n  if (doHeight) {\n    var leftStartX = nodeX - halfWidth - padding;\n    var leftStartY = nodeY - halfHeight + cornerRadius - padding;\n    var leftEndX = leftStartX;\n    var leftEndY = nodeY + halfHeight - cornerRadius + padding;\n    straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false);\n    if (straightLineIntersections.length > 0) {\n      return straightLineIntersections;\n    }\n  }\n\n  // Check intersections with arc segments\n  var arcIntersections;\n\n  // Top Left\n  {\n    var topLeftCenterX = nodeX - halfWidth + cornerRadius;\n    var topLeftCenterY = nodeY - halfHeight + cornerRadius;\n    arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding);\n\n    // Ensure the intersection is on the desired quarter of the circle\n    if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) {\n      return [arcIntersections[0], arcIntersections[1]];\n    }\n  }\n\n  // Top Right\n  {\n    var topRightCenterX = nodeX + halfWidth - cornerRadius;\n    var topRightCenterY = nodeY - halfHeight + cornerRadius;\n    arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding);\n\n    // Ensure the intersection is on the desired quarter of the circle\n    if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) {\n      return [arcIntersections[0], arcIntersections[1]];\n    }\n  }\n\n  // Bottom Right\n  {\n    var bottomRightCenterX = nodeX + halfWidth - cornerRadius;\n    var bottomRightCenterY = nodeY + halfHeight - cornerRadius;\n    arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding);\n\n    // Ensure the intersection is on the desired quarter of the circle\n    if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) {\n      return [arcIntersections[0], arcIntersections[1]];\n    }\n  }\n\n  // Bottom Left\n  {\n    var bottomLeftCenterX = nodeX - halfWidth + cornerRadius;\n    var bottomLeftCenterY = nodeY + halfHeight - cornerRadius;\n    arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding);\n\n    // Ensure the intersection is on the desired quarter of the circle\n    if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) {\n      return [arcIntersections[0], arcIntersections[1]];\n    }\n  }\n  return []; // if nothing\n};\nvar inLineVicinity = function inLineVicinity(x, y, lx1, ly1, lx2, ly2, tolerance) {\n  var t = tolerance;\n  var x1 = Math.min(lx1, lx2);\n  var x2 = Math.max(lx1, lx2);\n  var y1 = Math.min(ly1, ly2);\n  var y2 = Math.max(ly1, ly2);\n  return x1 - t <= x && x <= x2 + t && y1 - t <= y && y <= y2 + t;\n};\nvar inBezierVicinity = function inBezierVicinity(x, y, x1, y1, x2, y2, x3, y3, tolerance) {\n  var bb = {\n    x1: Math.min(x1, x3, x2) - tolerance,\n    x2: Math.max(x1, x3, x2) + tolerance,\n    y1: Math.min(y1, y3, y2) - tolerance,\n    y2: Math.max(y1, y3, y2) + tolerance\n  };\n\n  // if outside the rough bounding box for the bezier, then it can't be a hit\n  if (x < bb.x1 || x > bb.x2 || y < bb.y1 || y > bb.y2) {\n    // console.log('bezier out of rough bb')\n    return false;\n  } else {\n    // console.log('do more expensive check');\n    return true;\n  }\n};\nvar solveQuadratic = function solveQuadratic(a, b, c, val) {\n  c -= val;\n  var r = b * b - 4 * a * c;\n  if (r < 0) {\n    return [];\n  }\n  var sqrtR = Math.sqrt(r);\n  var denom = 2 * a;\n  var root1 = (-b + sqrtR) / denom;\n  var root2 = (-b - sqrtR) / denom;\n  return [root1, root2];\n};\nvar solveCubic = function solveCubic(a, b, c, d, result) {\n  // Solves a cubic function, returns root in form [r1, i1, r2, i2, r3, i3], where\n  // r is the real component, i is the imaginary component\n\n  // An implementation of the Cardano method from the year 1545\n  // http://en.wikipedia.org/wiki/Cubic_function#The_nature_of_the_roots\n\n  var epsilon = 0.00001;\n\n  // avoid division by zero while keeping the overall expression close in value\n  if (a === 0) {\n    a = epsilon;\n  }\n  b /= a;\n  c /= a;\n  d /= a;\n  var discriminant, q, r, dum1, s, t, term1, r13;\n  q = (3.0 * c - b * b) / 9.0;\n  r = -(27.0 * d) + b * (9.0 * c - 2.0 * (b * b));\n  r /= 54.0;\n  discriminant = q * q * q + r * r;\n  result[1] = 0;\n  term1 = b / 3.0;\n  if (discriminant > 0) {\n    s = r + Math.sqrt(discriminant);\n    s = s < 0 ? -Math.pow(-s, 1.0 / 3.0) : Math.pow(s, 1.0 / 3.0);\n    t = r - Math.sqrt(discriminant);\n    t = t < 0 ? -Math.pow(-t, 1.0 / 3.0) : Math.pow(t, 1.0 / 3.0);\n    result[0] = -term1 + s + t;\n    term1 += (s + t) / 2.0;\n    result[4] = result[2] = -term1;\n    term1 = Math.sqrt(3.0) * (-t + s) / 2;\n    result[3] = term1;\n    result[5] = -term1;\n    return;\n  }\n  result[5] = result[3] = 0;\n  if (discriminant === 0) {\n    r13 = r < 0 ? -Math.pow(-r, 1.0 / 3.0) : Math.pow(r, 1.0 / 3.0);\n    result[0] = -term1 + 2.0 * r13;\n    result[4] = result[2] = -(r13 + term1);\n    return;\n  }\n  q = -q;\n  dum1 = q * q * q;\n  dum1 = Math.acos(r / Math.sqrt(dum1));\n  r13 = 2.0 * Math.sqrt(q);\n  result[0] = -term1 + r13 * Math.cos(dum1 / 3.0);\n  result[2] = -term1 + r13 * Math.cos((dum1 + 2.0 * Math.PI) / 3.0);\n  result[4] = -term1 + r13 * Math.cos((dum1 + 4.0 * Math.PI) / 3.0);\n  return;\n};\nvar sqdistToQuadraticBezier = function sqdistToQuadraticBezier(x, y, x1, y1, x2, y2, x3, y3) {\n  // Find minimum distance by using the minimum of the distance\n  // function between the given point and the curve\n\n  // This gives the coefficients of the resulting cubic equation\n  // whose roots tell us where a possible minimum is\n  // (Coefficients are divided by 4)\n\n  var a = 1.0 * x1 * x1 - 4 * x1 * x2 + 2 * x1 * x3 + 4 * x2 * x2 - 4 * x2 * x3 + x3 * x3 + y1 * y1 - 4 * y1 * y2 + 2 * y1 * y3 + 4 * y2 * y2 - 4 * y2 * y3 + y3 * y3;\n  var b = 1.0 * 9 * x1 * x2 - 3 * x1 * x1 - 3 * x1 * x3 - 6 * x2 * x2 + 3 * x2 * x3 + 9 * y1 * y2 - 3 * y1 * y1 - 3 * y1 * y3 - 6 * y2 * y2 + 3 * y2 * y3;\n  var c = 1.0 * 3 * x1 * x1 - 6 * x1 * x2 + x1 * x3 - x1 * x + 2 * x2 * x2 + 2 * x2 * x - x3 * x + 3 * y1 * y1 - 6 * y1 * y2 + y1 * y3 - y1 * y + 2 * y2 * y2 + 2 * y2 * y - y3 * y;\n  var d = 1.0 * x1 * x2 - x1 * x1 + x1 * x - x2 * x + y1 * y2 - y1 * y1 + y1 * y - y2 * y;\n\n  // debug(\"coefficients: \" + a / a + \", \" + b / a + \", \" + c / a + \", \" + d / a);\n\n  var roots = [];\n\n  // Use the cubic solving algorithm\n  solveCubic(a, b, c, d, roots);\n  var zeroThreshold = 0.0000001;\n  var params = [];\n  for (var index = 0; index < 6; index += 2) {\n    if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1.0) {\n      params.push(roots[index]);\n    }\n  }\n  params.push(1.0);\n  params.push(0.0);\n  var minDistanceSquared = -1;\n  var curX, curY, distSquared;\n  for (var i = 0; i < params.length; i++) {\n    curX = Math.pow(1.0 - params[i], 2.0) * x1 + 2.0 * (1 - params[i]) * params[i] * x2 + params[i] * params[i] * x3;\n    curY = Math.pow(1 - params[i], 2.0) * y1 + 2 * (1.0 - params[i]) * params[i] * y2 + params[i] * params[i] * y3;\n    distSquared = Math.pow(curX - x, 2) + Math.pow(curY - y, 2);\n    // debug('distance for param ' + params[i] + \": \" + Math.sqrt(distSquared));\n    if (minDistanceSquared >= 0) {\n      if (distSquared < minDistanceSquared) {\n        minDistanceSquared = distSquared;\n      }\n    } else {\n      minDistanceSquared = distSquared;\n    }\n  }\n  return minDistanceSquared;\n};\nvar sqdistToFiniteLine = function sqdistToFiniteLine(x, y, x1, y1, x2, y2) {\n  var offset = [x - x1, y - y1];\n  var line = [x2 - x1, y2 - y1];\n  var lineSq = line[0] * line[0] + line[1] * line[1];\n  var hypSq = offset[0] * offset[0] + offset[1] * offset[1];\n  var dotProduct = offset[0] * line[0] + offset[1] * line[1];\n  var adjSq = dotProduct * dotProduct / lineSq;\n  if (dotProduct < 0) {\n    return hypSq;\n  }\n  if (adjSq > lineSq) {\n    return (x - x2) * (x - x2) + (y - y2) * (y - y2);\n  }\n  return hypSq - adjSq;\n};\nvar pointInsidePolygonPoints = function pointInsidePolygonPoints(x, y, points) {\n  var x1, y1, x2, y2;\n  var y3;\n\n  // Intersect with vertical line through (x, y)\n  var up = 0;\n  // let down = 0;\n  for (var i = 0; i < points.length / 2; i++) {\n    x1 = points[i * 2];\n    y1 = points[i * 2 + 1];\n    if (i + 1 < points.length / 2) {\n      x2 = points[(i + 1) * 2];\n      y2 = points[(i + 1) * 2 + 1];\n    } else {\n      x2 = points[(i + 1 - points.length / 2) * 2];\n      y2 = points[(i + 1 - points.length / 2) * 2 + 1];\n    }\n    if (x1 == x && x2 == x) ; else if (x1 >= x && x >= x2 || x1 <= x && x <= x2) {\n      y3 = (x - x1) / (x2 - x1) * (y2 - y1) + y1;\n      if (y3 > y) {\n        up++;\n      }\n\n      // if( y3 < y ){\n      // down++;\n      // }\n    } else {\n      continue;\n    }\n  }\n  if (up % 2 === 0) {\n    return false;\n  } else {\n    return true;\n  }\n};\nvar pointInsidePolygon = function pointInsidePolygon(x, y, basePoints, centerX, centerY, width, height, direction, padding) {\n  var transformedPoints = new Array(basePoints.length);\n\n  // Gives negative angle\n  var angle;\n  if (direction[0] != null) {\n    angle = Math.atan(direction[1] / direction[0]);\n    if (direction[0] < 0) {\n      angle = angle + Math.PI / 2;\n    } else {\n      angle = -angle - Math.PI / 2;\n    }\n  } else {\n    angle = direction;\n  }\n  var cos = Math.cos(-angle);\n  var sin = Math.sin(-angle);\n\n  //    console.log(\"base: \" + basePoints);\n  for (var i = 0; i < transformedPoints.length / 2; i++) {\n    transformedPoints[i * 2] = width / 2 * (basePoints[i * 2] * cos - basePoints[i * 2 + 1] * sin);\n    transformedPoints[i * 2 + 1] = height / 2 * (basePoints[i * 2 + 1] * cos + basePoints[i * 2] * sin);\n    transformedPoints[i * 2] += centerX;\n    transformedPoints[i * 2 + 1] += centerY;\n  }\n  var points;\n  if (padding > 0) {\n    var expandedLineSet = expandPolygon(transformedPoints, -padding);\n    points = joinLines(expandedLineSet);\n  } else {\n    points = transformedPoints;\n  }\n  return pointInsidePolygonPoints(x, y, points);\n};\nvar pointInsideRoundPolygon = function pointInsideRoundPolygon(x, y, basePoints, centerX, centerY, width, height, corners) {\n  var cutPolygonPoints = new Array(basePoints.length * 2);\n  for (var i = 0; i < corners.length; i++) {\n    var corner = corners[i];\n    cutPolygonPoints[i * 4 + 0] = corner.startX;\n    cutPolygonPoints[i * 4 + 1] = corner.startY;\n    cutPolygonPoints[i * 4 + 2] = corner.stopX;\n    cutPolygonPoints[i * 4 + 3] = corner.stopY;\n    var squaredDistance = Math.pow(corner.cx - x, 2) + Math.pow(corner.cy - y, 2);\n    if (squaredDistance <= Math.pow(corner.radius, 2)) {\n      return true;\n    }\n  }\n  return pointInsidePolygonPoints(x, y, cutPolygonPoints);\n};\nvar joinLines = function joinLines(lineSet) {\n  var vertices = new Array(lineSet.length / 2);\n  var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY;\n  var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY;\n  for (var i = 0; i < lineSet.length / 4; i++) {\n    currentLineStartX = lineSet[i * 4];\n    currentLineStartY = lineSet[i * 4 + 1];\n    currentLineEndX = lineSet[i * 4 + 2];\n    currentLineEndY = lineSet[i * 4 + 3];\n    if (i < lineSet.length / 4 - 1) {\n      nextLineStartX = lineSet[(i + 1) * 4];\n      nextLineStartY = lineSet[(i + 1) * 4 + 1];\n      nextLineEndX = lineSet[(i + 1) * 4 + 2];\n      nextLineEndY = lineSet[(i + 1) * 4 + 3];\n    } else {\n      nextLineStartX = lineSet[0];\n      nextLineStartY = lineSet[1];\n      nextLineEndX = lineSet[2];\n      nextLineEndY = lineSet[3];\n    }\n    var intersection = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true);\n    vertices[i * 2] = intersection[0];\n    vertices[i * 2 + 1] = intersection[1];\n  }\n  return vertices;\n};\nvar expandPolygon = function expandPolygon(points, pad) {\n  var expandedLineSet = new Array(points.length * 2);\n  var currentPointX, currentPointY, nextPointX, nextPointY;\n  for (var i = 0; i < points.length / 2; i++) {\n    currentPointX = points[i * 2];\n    currentPointY = points[i * 2 + 1];\n    if (i < points.length / 2 - 1) {\n      nextPointX = points[(i + 1) * 2];\n      nextPointY = points[(i + 1) * 2 + 1];\n    } else {\n      nextPointX = points[0];\n      nextPointY = points[1];\n    }\n\n    // Current line: [currentPointX, currentPointY] to [nextPointX, nextPointY]\n\n    // Assume CCW polygon winding\n\n    var offsetX = nextPointY - currentPointY;\n    var offsetY = -(nextPointX - currentPointX);\n\n    // Normalize\n    var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY);\n    var normalizedOffsetX = offsetX / offsetLength;\n    var normalizedOffsetY = offsetY / offsetLength;\n    expandedLineSet[i * 4] = currentPointX + normalizedOffsetX * pad;\n    expandedLineSet[i * 4 + 1] = currentPointY + normalizedOffsetY * pad;\n    expandedLineSet[i * 4 + 2] = nextPointX + normalizedOffsetX * pad;\n    expandedLineSet[i * 4 + 3] = nextPointY + normalizedOffsetY * pad;\n  }\n  return expandedLineSet;\n};\nvar intersectLineEllipse = function intersectLineEllipse(x, y, centerX, centerY, ellipseWradius, ellipseHradius) {\n  var dispX = centerX - x;\n  var dispY = centerY - y;\n  dispX /= ellipseWradius;\n  dispY /= ellipseHradius;\n  var len = Math.sqrt(dispX * dispX + dispY * dispY);\n  var newLength = len - 1;\n  if (newLength < 0) {\n    return [];\n  }\n  var lenProportion = newLength / len;\n  return [(centerX - x) * lenProportion + x, (centerY - y) * lenProportion + y];\n};\nvar checkInEllipse = function checkInEllipse(x, y, width, height, centerX, centerY, padding) {\n  x -= centerX;\n  y -= centerY;\n  x /= width / 2 + padding;\n  y /= height / 2 + padding;\n  return x * x + y * y <= 1;\n};\n\n// Returns intersections of increasing distance from line's start point\nvar intersectLineCircle = function intersectLineCircle(x1, y1, x2, y2, centerX, centerY, radius) {\n  // Calculate d, direction vector of line\n  var d = [x2 - x1, y2 - y1]; // Direction vector of line\n  var f = [x1 - centerX, y1 - centerY];\n  var a = d[0] * d[0] + d[1] * d[1];\n  var b = 2 * (f[0] * d[0] + f[1] * d[1]);\n  var c = f[0] * f[0] + f[1] * f[1] - radius * radius;\n  var discriminant = b * b - 4 * a * c;\n  if (discriminant < 0) {\n    return [];\n  }\n  var t1 = (-b + Math.sqrt(discriminant)) / (2 * a);\n  var t2 = (-b - Math.sqrt(discriminant)) / (2 * a);\n  var tMin = Math.min(t1, t2);\n  var tMax = Math.max(t1, t2);\n  var inRangeParams = [];\n  if (tMin >= 0 && tMin <= 1) {\n    inRangeParams.push(tMin);\n  }\n  if (tMax >= 0 && tMax <= 1) {\n    inRangeParams.push(tMax);\n  }\n  if (inRangeParams.length === 0) {\n    return [];\n  }\n  var nearIntersectionX = inRangeParams[0] * d[0] + x1;\n  var nearIntersectionY = inRangeParams[0] * d[1] + y1;\n  if (inRangeParams.length > 1) {\n    if (inRangeParams[0] == inRangeParams[1]) {\n      return [nearIntersectionX, nearIntersectionY];\n    } else {\n      var farIntersectionX = inRangeParams[1] * d[0] + x1;\n      var farIntersectionY = inRangeParams[1] * d[1] + y1;\n      return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY];\n    }\n  } else {\n    return [nearIntersectionX, nearIntersectionY];\n  }\n};\nvar midOfThree = function midOfThree(a, b, c) {\n  if (b <= a && a <= c || c <= a && a <= b) {\n    return a;\n  } else if (a <= b && b <= c || c <= b && b <= a) {\n    return b;\n  } else {\n    return c;\n  }\n};\n\n// (x1,y1)=>(x2,y2) intersect with (x3,y3)=>(x4,y4)\nvar finiteLinesIntersect = function finiteLinesIntersect(x1, y1, x2, y2, x3, y3, x4, y4, infiniteLines) {\n  var dx13 = x1 - x3;\n  var dx21 = x2 - x1;\n  var dx43 = x4 - x3;\n  var dy13 = y1 - y3;\n  var dy21 = y2 - y1;\n  var dy43 = y4 - y3;\n  var ua_t = dx43 * dy13 - dy43 * dx13;\n  var ub_t = dx21 * dy13 - dy21 * dx13;\n  var u_b = dy43 * dx21 - dx43 * dy21;\n  if (u_b !== 0) {\n    var ua = ua_t / u_b;\n    var ub = ub_t / u_b;\n    var flptThreshold = 0.001;\n    var _min = 0 - flptThreshold;\n    var _max = 1 + flptThreshold;\n    if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) {\n      return [x1 + ua * dx21, y1 + ua * dy21];\n    } else {\n      if (!infiniteLines) {\n        return [];\n      } else {\n        return [x1 + ua * dx21, y1 + ua * dy21];\n      }\n    }\n  } else {\n    if (ua_t === 0 || ub_t === 0) {\n      // Parallel, coincident lines. Check if overlap\n\n      // Check endpoint of second line\n      if (midOfThree(x1, x2, x4) === x4) {\n        return [x4, y4];\n      }\n\n      // Check start point of second line\n      if (midOfThree(x1, x2, x3) === x3) {\n        return [x3, y3];\n      }\n\n      // Endpoint of first line\n      if (midOfThree(x3, x4, x2) === x2) {\n        return [x2, y2];\n      }\n      return [];\n    } else {\n      // Parallel, non-coincident\n      return [];\n    }\n  }\n};\nvar transformPoints = function transformPoints(points, centerX, centerY, width, height) {\n  var ret = [];\n  var halfW = width / 2;\n  var halfH = height / 2;\n  var x = centerX;\n  var y = centerY;\n  ret.push({\n    x: x + halfW * points[0],\n    y: y + halfH * points[1]\n  });\n  for (var i = 1; i < points.length / 2; i++) {\n    ret.push({\n      x: x + halfW * points[i * 2],\n      y: y + halfH * points[i * 2 + 1]\n    });\n  }\n  return ret;\n};\n\n// math.polygonIntersectLine( x, y, basePoints, centerX, centerY, width, height, padding )\n// intersect a node polygon (pts transformed)\n//\n// math.polygonIntersectLine( x, y, basePoints, centerX, centerY )\n// intersect the points (no transform)\nvar polygonIntersectLine = function polygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) {\n  var intersections = [];\n  var intersection;\n  var transformedPoints = new Array(basePoints.length);\n  var doTransform = true;\n  if (width == null) {\n    doTransform = false;\n  }\n  var points;\n  if (doTransform) {\n    for (var i = 0; i < transformedPoints.length / 2; i++) {\n      transformedPoints[i * 2] = basePoints[i * 2] * width + centerX;\n      transformedPoints[i * 2 + 1] = basePoints[i * 2 + 1] * height + centerY;\n    }\n    if (padding > 0) {\n      var expandedLineSet = expandPolygon(transformedPoints, -padding);\n      points = joinLines(expandedLineSet);\n    } else {\n      points = transformedPoints;\n    }\n  } else {\n    points = basePoints;\n  }\n  var currentX, currentY, nextX, nextY;\n  for (var _i3 = 0; _i3 < points.length / 2; _i3++) {\n    currentX = points[_i3 * 2];\n    currentY = points[_i3 * 2 + 1];\n    if (_i3 < points.length / 2 - 1) {\n      nextX = points[(_i3 + 1) * 2];\n      nextY = points[(_i3 + 1) * 2 + 1];\n    } else {\n      nextX = points[0];\n      nextY = points[1];\n    }\n    intersection = finiteLinesIntersect(x, y, centerX, centerY, currentX, currentY, nextX, nextY);\n    if (intersection.length !== 0) {\n      intersections.push(intersection[0], intersection[1]);\n    }\n  }\n  return intersections;\n};\nvar roundPolygonIntersectLine = function roundPolygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding, corners) {\n  var intersections = [];\n  var intersection;\n  var lines = new Array(basePoints.length * 2);\n  corners.forEach(function (corner, i) {\n    if (i === 0) {\n      lines[lines.length - 2] = corner.startX;\n      lines[lines.length - 1] = corner.startY;\n    } else {\n      lines[i * 4 - 2] = corner.startX;\n      lines[i * 4 - 1] = corner.startY;\n    }\n    lines[i * 4] = corner.stopX;\n    lines[i * 4 + 1] = corner.stopY;\n    intersection = intersectLineCircle(x, y, centerX, centerY, corner.cx, corner.cy, corner.radius);\n    if (intersection.length !== 0) {\n      intersections.push(intersection[0], intersection[1]);\n    }\n  });\n  for (var i = 0; i < lines.length / 4; i++) {\n    intersection = finiteLinesIntersect(x, y, centerX, centerY, lines[i * 4], lines[i * 4 + 1], lines[i * 4 + 2], lines[i * 4 + 3], false);\n    if (intersection.length !== 0) {\n      intersections.push(intersection[0], intersection[1]);\n    }\n  }\n  if (intersections.length > 2) {\n    var lowestIntersection = [intersections[0], intersections[1]];\n    var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x, 2) + Math.pow(lowestIntersection[1] - y, 2);\n    for (var _i4 = 1; _i4 < intersections.length / 2; _i4++) {\n      var squaredDistance = Math.pow(intersections[_i4 * 2] - x, 2) + Math.pow(intersections[_i4 * 2 + 1] - y, 2);\n      if (squaredDistance <= lowestSquaredDistance) {\n        lowestIntersection[0] = intersections[_i4 * 2];\n        lowestIntersection[1] = intersections[_i4 * 2 + 1];\n        lowestSquaredDistance = squaredDistance;\n      }\n    }\n    return lowestIntersection;\n  }\n  return intersections;\n};\nvar shortenIntersection = function shortenIntersection(intersection, offset, amount) {\n  var disp = [intersection[0] - offset[0], intersection[1] - offset[1]];\n  var length = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]);\n  var lenRatio = (length - amount) / length;\n  if (lenRatio < 0) {\n    lenRatio = 0.00001;\n  }\n  return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]];\n};\nvar generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) {\n  var points = generateUnitNgonPoints(sides, rotationRadians);\n  points = fitPolygonToSquare(points);\n  return points;\n};\nvar fitPolygonToSquare = function fitPolygonToSquare(points) {\n  var x, y;\n  var sides = points.length / 2;\n  var minX = Infinity,\n    minY = Infinity,\n    maxX = -Infinity,\n    maxY = -Infinity;\n  for (var i = 0; i < sides; i++) {\n    x = points[2 * i];\n    y = points[2 * i + 1];\n    minX = Math.min(minX, x);\n    maxX = Math.max(maxX, x);\n    minY = Math.min(minY, y);\n    maxY = Math.max(maxY, y);\n  }\n\n  // stretch factors\n  var sx = 2 / (maxX - minX);\n  var sy = 2 / (maxY - minY);\n  for (var _i5 = 0; _i5 < sides; _i5++) {\n    x = points[2 * _i5] = points[2 * _i5] * sx;\n    y = points[2 * _i5 + 1] = points[2 * _i5 + 1] * sy;\n    minX = Math.min(minX, x);\n    maxX = Math.max(maxX, x);\n    minY = Math.min(minY, y);\n    maxY = Math.max(maxY, y);\n  }\n  if (minY < -1) {\n    for (var _i6 = 0; _i6 < sides; _i6++) {\n      y = points[2 * _i6 + 1] = points[2 * _i6 + 1] + (-1 - minY);\n    }\n  }\n  return points;\n};\nvar generateUnitNgonPoints = function generateUnitNgonPoints(sides, rotationRadians) {\n  var increment = 1.0 / sides * 2 * Math.PI;\n  var startAngle = sides % 2 === 0 ? Math.PI / 2.0 + increment / 2.0 : Math.PI / 2.0;\n  startAngle += rotationRadians;\n  var points = new Array(sides * 2);\n  var currentAngle;\n  for (var i = 0; i < sides; i++) {\n    currentAngle = i * increment + startAngle;\n    points[2 * i] = Math.cos(currentAngle); // x\n    points[2 * i + 1] = Math.sin(-currentAngle); // y\n  }\n  return points;\n};\n\n// Set the default radius, unless half of width or height is smaller than default\nvar getRoundRectangleRadius = function getRoundRectangleRadius(width, height) {\n  return Math.min(width / 4, height / 4, 8);\n};\n\n// Set the default radius\nvar getRoundPolygonRadius = function getRoundPolygonRadius(width, height) {\n  return Math.min(width / 10, height / 10, 8);\n};\nvar getCutRectangleCornerLength = function getCutRectangleCornerLength() {\n  return 8;\n};\nvar bezierPtsToQuadCoeff = function bezierPtsToQuadCoeff(p0, p1, p2) {\n  return [p0 - 2 * p1 + p2, 2 * (p1 - p0), p0];\n};\n\n// get curve width, height, and control point position offsets as a percentage of node height / width\nvar getBarrelCurveConstants = function getBarrelCurveConstants(width, height) {\n  return {\n    heightOffset: Math.min(15, 0.05 * height),\n    widthOffset: Math.min(100, 0.25 * width),\n    ctrlPtOffsetPct: 0.05\n  };\n};\n\n// Separating Axis Theorem (SAT) to determine if two polygons intersect. \n// The function takes two polygons as input and returns a boolean value indicating \n// whether the two polygons intersect.\nfunction satPolygonIntersection(poly1, poly2) {\n  function getAxes(polygon) {\n    var axes = [];\n    for (var i = 0; i < polygon.length; i++) {\n      var p1 = polygon[i];\n      var p2 = polygon[(i + 1) % polygon.length];\n      var edge = {\n        x: p2.x - p1.x,\n        y: p2.y - p1.y\n      };\n      var normal = {\n        x: -edge.y,\n        y: edge.x\n      };\n      var length = Math.sqrt(normal.x * normal.x + normal.y * normal.y);\n      axes.push({\n        x: normal.x / length,\n        y: normal.y / length\n      });\n    }\n    return axes;\n  }\n  function project(polygon, axis) {\n    var min = Infinity;\n    var max = -Infinity;\n    var _iterator = _createForOfIteratorHelper(polygon),\n      _step;\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var point = _step.value;\n        var projection = point.x * axis.x + point.y * axis.y;\n        min = Math.min(min, projection);\n        max = Math.max(max, projection);\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n    return {\n      min: min,\n      max: max\n    };\n  }\n  function overlaps(proj1, proj2) {\n    return !(proj1.max < proj2.min || proj2.max < proj1.min);\n  }\n  var axes = [].concat(_toConsumableArray(getAxes(poly1)), _toConsumableArray(getAxes(poly2)));\n  var _iterator2 = _createForOfIteratorHelper(axes),\n    _step2;\n  try {\n    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n      var axis = _step2.value;\n      var proj1 = project(poly1, axis);\n      var proj2 = project(poly2, axis);\n      if (!overlaps(proj1, proj2)) {\n        return false; // No overlap, so the polygons do not intersect\n      }\n    }\n  } catch (err) {\n    _iterator2.e(err);\n  } finally {\n    _iterator2.f();\n  }\n  return true; // polygons intersect\n}\n\nvar pageRankDefaults = defaults$g({\n  dampingFactor: 0.8,\n  precision: 0.000001,\n  iterations: 200,\n  weight: function weight(edge) {\n    return 1;\n  }\n});\nvar elesfn$o = {\n  pageRank: function pageRank(options) {\n    var _pageRankDefaults = pageRankDefaults(options),\n      dampingFactor = _pageRankDefaults.dampingFactor,\n      precision = _pageRankDefaults.precision,\n      iterations = _pageRankDefaults.iterations,\n      weight = _pageRankDefaults.weight;\n    var cy = this._private.cy;\n    var _this$byGroup = this.byGroup(),\n      nodes = _this$byGroup.nodes,\n      edges = _this$byGroup.edges;\n    var numNodes = nodes.length;\n    var numNodesSqd = numNodes * numNodes;\n    var numEdges = edges.length;\n\n    // Construct transposed adjacency matrix\n    // First lets have a zeroed matrix of the right size\n    // We'll also keep track of the sum of each column\n    var matrix = new Array(numNodesSqd);\n    var columnSum = new Array(numNodes);\n    var additionalProb = (1 - dampingFactor) / numNodes;\n\n    // Create null matrix\n    for (var i = 0; i < numNodes; i++) {\n      for (var j = 0; j < numNodes; j++) {\n        var n = i * numNodes + j;\n        matrix[n] = 0;\n      }\n      columnSum[i] = 0;\n    }\n\n    // Now, process edges\n    for (var _i = 0; _i < numEdges; _i++) {\n      var edge = edges[_i];\n      var srcId = edge.data('source');\n      var tgtId = edge.data('target');\n\n      // Don't include loops in the matrix\n      if (srcId === tgtId) {\n        continue;\n      }\n      var s = nodes.indexOfId(srcId);\n      var t = nodes.indexOfId(tgtId);\n      var w = weight(edge);\n      var _n = t * numNodes + s;\n\n      // Update matrix\n      matrix[_n] += w;\n\n      // Update column sum\n      columnSum[s] += w;\n    }\n\n    // Add additional probability based on damping factor\n    // Also, take into account columns that have sum = 0\n    var p = 1.0 / numNodes + additionalProb; // Shorthand\n\n    // Traverse matrix, column by column\n    for (var _j = 0; _j < numNodes; _j++) {\n      if (columnSum[_j] === 0) {\n        // No 'links' out from node jth, assume equal probability for each possible node\n        for (var _i2 = 0; _i2 < numNodes; _i2++) {\n          var _n2 = _i2 * numNodes + _j;\n          matrix[_n2] = p;\n        }\n      } else {\n        // Node jth has outgoing link, compute normalized probabilities\n        for (var _i3 = 0; _i3 < numNodes; _i3++) {\n          var _n3 = _i3 * numNodes + _j;\n          matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb;\n        }\n      }\n    }\n\n    // Compute dominant eigenvector using power method\n    var eigenvector = new Array(numNodes);\n    var temp = new Array(numNodes);\n    var previous;\n\n    // Start with a vector of all 1's\n    // Also, initialize a null vector which will be used as shorthand\n    for (var _i4 = 0; _i4 < numNodes; _i4++) {\n      eigenvector[_i4] = 1;\n    }\n    for (var iter = 0; iter < iterations; iter++) {\n      // Temp array with all 0's\n      for (var _i5 = 0; _i5 < numNodes; _i5++) {\n        temp[_i5] = 0;\n      }\n\n      // Multiply matrix with previous result\n      for (var _i6 = 0; _i6 < numNodes; _i6++) {\n        for (var _j2 = 0; _j2 < numNodes; _j2++) {\n          var _n4 = _i6 * numNodes + _j2;\n          temp[_i6] += matrix[_n4] * eigenvector[_j2];\n        }\n      }\n      inPlaceSumNormalize(temp);\n      previous = eigenvector;\n      eigenvector = temp;\n      temp = previous;\n      var diff = 0;\n      // Compute difference (squared module) of both vectors\n      for (var _i7 = 0; _i7 < numNodes; _i7++) {\n        var delta = previous[_i7] - eigenvector[_i7];\n        diff += delta * delta;\n      }\n\n      // If difference is less than the desired threshold, stop iterating\n      if (diff < precision) {\n        break;\n      }\n    }\n\n    // Construct result\n    var res = {\n      rank: function rank(node) {\n        node = cy.collection(node)[0];\n        return eigenvector[nodes.indexOf(node)];\n      }\n    };\n    return res;\n  } // pageRank\n}; // elesfn\n\nvar defaults$f = defaults$g({\n  root: null,\n  weight: function weight(edge) {\n    return 1;\n  },\n  directed: false,\n  alpha: 0\n});\nvar elesfn$n = {\n  degreeCentralityNormalized: function degreeCentralityNormalized(options) {\n    options = defaults$f(options);\n    var cy = this.cy();\n    var nodes = this.nodes();\n    var numNodes = nodes.length;\n    if (!options.directed) {\n      var degrees = {};\n      var maxDegree = 0;\n      for (var i = 0; i < numNodes; i++) {\n        var node = nodes[i];\n\n        // add current node to the current options object and call degreeCentrality\n        options.root = node;\n        var currDegree = this.degreeCentrality(options);\n        if (maxDegree < currDegree.degree) {\n          maxDegree = currDegree.degree;\n        }\n        degrees[node.id()] = currDegree.degree;\n      }\n      return {\n        degree: function degree(node) {\n          if (maxDegree === 0) {\n            return 0;\n          }\n          if (string(node)) {\n            // from is a selector string\n            node = cy.filter(node);\n          }\n          return degrees[node.id()] / maxDegree;\n        }\n      };\n    } else {\n      var indegrees = {};\n      var outdegrees = {};\n      var maxIndegree = 0;\n      var maxOutdegree = 0;\n      for (var _i = 0; _i < numNodes; _i++) {\n        var _node = nodes[_i];\n        var id = _node.id();\n\n        // add current node to the current options object and call degreeCentrality\n        options.root = _node;\n        var _currDegree = this.degreeCentrality(options);\n        if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree;\n        if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree;\n        indegrees[id] = _currDegree.indegree;\n        outdegrees[id] = _currDegree.outdegree;\n      }\n      return {\n        indegree: function indegree(node) {\n          if (maxIndegree == 0) {\n            return 0;\n          }\n          if (string(node)) {\n            // from is a selector string\n            node = cy.filter(node);\n          }\n          return indegrees[node.id()] / maxIndegree;\n        },\n        outdegree: function outdegree(node) {\n          if (maxOutdegree === 0) {\n            return 0;\n          }\n          if (string(node)) {\n            // from is a selector string\n            node = cy.filter(node);\n          }\n          return outdegrees[node.id()] / maxOutdegree;\n        }\n      };\n    }\n  },\n  // degreeCentralityNormalized\n\n  // Implemented from the algorithm in Opsahl's paper\n  // \"Node centrality in weighted networks: Generalizing degree and shortest paths\"\n  // check the heading 2 \"Degree\"\n  degreeCentrality: function degreeCentrality(options) {\n    options = defaults$f(options);\n    var cy = this.cy();\n    var callingEles = this;\n    var _options = options,\n      root = _options.root,\n      weight = _options.weight,\n      directed = _options.directed,\n      alpha = _options.alpha;\n    root = cy.collection(root)[0];\n    if (!directed) {\n      var connEdges = root.connectedEdges().intersection(callingEles);\n      var k = connEdges.length;\n      var s = 0;\n\n      // Now, sum edge weights\n      for (var i = 0; i < connEdges.length; i++) {\n        s += weight(connEdges[i]);\n      }\n      return {\n        degree: Math.pow(k, 1 - alpha) * Math.pow(s, alpha)\n      };\n    } else {\n      var edges = root.connectedEdges();\n      var incoming = edges.filter(function (edge) {\n        return edge.target().same(root) && callingEles.has(edge);\n      });\n      var outgoing = edges.filter(function (edge) {\n        return edge.source().same(root) && callingEles.has(edge);\n      });\n      var k_in = incoming.length;\n      var k_out = outgoing.length;\n      var s_in = 0;\n      var s_out = 0;\n\n      // Now, sum incoming edge weights\n      for (var _i2 = 0; _i2 < incoming.length; _i2++) {\n        s_in += weight(incoming[_i2]);\n      }\n\n      // Now, sum outgoing edge weights\n      for (var _i3 = 0; _i3 < outgoing.length; _i3++) {\n        s_out += weight(outgoing[_i3]);\n      }\n      return {\n        indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha),\n        outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha)\n      };\n    }\n  } // degreeCentrality\n}; // elesfn\n\n// nice, short mathematical alias\nelesfn$n.dc = elesfn$n.degreeCentrality;\nelesfn$n.dcn = elesfn$n.degreeCentralityNormalised = elesfn$n.degreeCentralityNormalized;\n\nvar defaults$e = defaults$g({\n  harmonic: true,\n  weight: function weight() {\n    return 1;\n  },\n  directed: false,\n  root: null\n});\nvar elesfn$m = {\n  closenessCentralityNormalized: function closenessCentralityNormalized(options) {\n    var _defaults = defaults$e(options),\n      harmonic = _defaults.harmonic,\n      weight = _defaults.weight,\n      directed = _defaults.directed;\n    var cy = this.cy();\n    var closenesses = {};\n    var maxCloseness = 0;\n    var nodes = this.nodes();\n    var fw = this.floydWarshall({\n      weight: weight,\n      directed: directed\n    });\n\n    // Compute closeness for every node and find the maximum closeness\n    for (var i = 0; i < nodes.length; i++) {\n      var currCloseness = 0;\n      var node_i = nodes[i];\n      for (var j = 0; j < nodes.length; j++) {\n        if (i !== j) {\n          var d = fw.distance(node_i, nodes[j]);\n          if (harmonic) {\n            currCloseness += 1 / d;\n          } else {\n            currCloseness += d;\n          }\n        }\n      }\n      if (!harmonic) {\n        currCloseness = 1 / currCloseness;\n      }\n      if (maxCloseness < currCloseness) {\n        maxCloseness = currCloseness;\n      }\n      closenesses[node_i.id()] = currCloseness;\n    }\n    return {\n      closeness: function closeness(node) {\n        if (maxCloseness == 0) {\n          return 0;\n        }\n        if (string(node)) {\n          // from is a selector string\n          node = cy.filter(node)[0].id();\n        } else {\n          // from is a node\n          node = node.id();\n        }\n        return closenesses[node] / maxCloseness;\n      }\n    };\n  },\n  // Implemented from pseudocode from wikipedia\n  closenessCentrality: function closenessCentrality(options) {\n    var _defaults2 = defaults$e(options),\n      root = _defaults2.root,\n      weight = _defaults2.weight,\n      directed = _defaults2.directed,\n      harmonic = _defaults2.harmonic;\n    root = this.filter(root)[0];\n\n    // we need distance from this node to every other node\n    var dijkstra = this.dijkstra({\n      root: root,\n      weight: weight,\n      directed: directed\n    });\n    var totalDistance = 0;\n    var nodes = this.nodes();\n    for (var i = 0; i < nodes.length; i++) {\n      var n = nodes[i];\n      if (!n.same(root)) {\n        var d = dijkstra.distanceTo(n);\n        if (harmonic) {\n          totalDistance += 1 / d;\n        } else {\n          totalDistance += d;\n        }\n      }\n    }\n    return harmonic ? totalDistance : 1 / totalDistance;\n  } // closenessCentrality\n}; // elesfn\n\n// nice, short mathematical alias\nelesfn$m.cc = elesfn$m.closenessCentrality;\nelesfn$m.ccn = elesfn$m.closenessCentralityNormalised = elesfn$m.closenessCentralityNormalized;\n\nvar defaults$d = defaults$g({\n  weight: null,\n  directed: false\n});\nvar elesfn$l = {\n  // Implemented from the algorithm in the paper \"On Variants of Shortest-Path Betweenness Centrality and their Generic Computation\" by Ulrik Brandes\n  betweennessCentrality: function betweennessCentrality(options) {\n    var _defaults = defaults$d(options),\n      directed = _defaults.directed,\n      weight = _defaults.weight;\n    var weighted = weight != null;\n    var cy = this.cy();\n\n    // starting\n    var V = this.nodes();\n    var A = {};\n    var _C = {};\n    var max = 0;\n    var C = {\n      set: function set(key, val) {\n        _C[key] = val;\n        if (val > max) {\n          max = val;\n        }\n      },\n      get: function get(key) {\n        return _C[key];\n      }\n    };\n\n    // A contains the neighborhoods of every node\n    for (var i = 0; i < V.length; i++) {\n      var v = V[i];\n      var vid = v.id();\n      if (directed) {\n        A[vid] = v.outgoers().nodes(); // get outgoers of every node\n      } else {\n        A[vid] = v.openNeighborhood().nodes(); // get neighbors of every node\n      }\n      C.set(vid, 0);\n    }\n    var _loop = function _loop() {\n      var sid = V[s].id();\n      var S = []; // stack\n      var P = {};\n      var g = {};\n      var d = {};\n      var Q = new Heap(function (a, b) {\n        return d[a] - d[b];\n      }); // queue\n\n      // init dictionaries\n      for (var _i = 0; _i < V.length; _i++) {\n        var _vid = V[_i].id();\n        P[_vid] = [];\n        g[_vid] = 0;\n        d[_vid] = Infinity;\n      }\n      g[sid] = 1; // sigma\n      d[sid] = 0; // distance to s\n\n      Q.push(sid);\n      while (!Q.empty()) {\n        var _v = Q.pop();\n        S.push(_v);\n        if (weighted) {\n          for (var j = 0; j < A[_v].length; j++) {\n            var w = A[_v][j];\n            var vEle = cy.getElementById(_v);\n            var edge = undefined;\n            if (vEle.edgesTo(w).length > 0) {\n              edge = vEle.edgesTo(w)[0];\n            } else {\n              edge = w.edgesTo(vEle)[0];\n            }\n            var edgeWeight = weight(edge);\n            w = w.id();\n            if (d[w] > d[_v] + edgeWeight) {\n              d[w] = d[_v] + edgeWeight;\n              if (Q.nodes.indexOf(w) < 0) {\n                //if w is not in Q\n                Q.push(w);\n              } else {\n                // update position if w is in Q\n                Q.updateItem(w);\n              }\n              g[w] = 0;\n              P[w] = [];\n            }\n            if (d[w] == d[_v] + edgeWeight) {\n              g[w] = g[w] + g[_v];\n              P[w].push(_v);\n            }\n          }\n        } else {\n          for (var _j = 0; _j < A[_v].length; _j++) {\n            var _w = A[_v][_j].id();\n            if (d[_w] == Infinity) {\n              Q.push(_w);\n              d[_w] = d[_v] + 1;\n            }\n            if (d[_w] == d[_v] + 1) {\n              g[_w] = g[_w] + g[_v];\n              P[_w].push(_v);\n            }\n          }\n        }\n      }\n      var e = {};\n      for (var _i2 = 0; _i2 < V.length; _i2++) {\n        e[V[_i2].id()] = 0;\n      }\n      while (S.length > 0) {\n        var _w2 = S.pop();\n        for (var _j2 = 0; _j2 < P[_w2].length; _j2++) {\n          var _v2 = P[_w2][_j2];\n          e[_v2] = e[_v2] + g[_v2] / g[_w2] * (1 + e[_w2]);\n        }\n        if (_w2 != V[s].id()) {\n          C.set(_w2, C.get(_w2) + e[_w2]);\n        }\n      }\n    };\n    for (var s = 0; s < V.length; s++) {\n      _loop();\n    }\n    var ret = {\n      betweenness: function betweenness(node) {\n        var id = cy.collection(node).id();\n        return C.get(id);\n      },\n      betweennessNormalized: function betweennessNormalized(node) {\n        if (max == 0) {\n          return 0;\n        }\n        var id = cy.collection(node).id();\n        return C.get(id) / max;\n      }\n    };\n\n    // alias\n    ret.betweennessNormalised = ret.betweennessNormalized;\n    return ret;\n  } // betweennessCentrality\n}; // elesfn\n\n// nice, short mathematical alias\nelesfn$l.bc = elesfn$l.betweennessCentrality;\n\n// Implemented by Zoe Xi @zoexi for GSOC 2016\n// https://github.com/cytoscape/cytoscape.js-markov-cluster\n\n\n/* eslint-disable no-unused-vars */\nvar defaults$c = defaults$g({\n  expandFactor: 2,\n  // affects time of computation and cluster granularity to some extent: M * M\n  inflateFactor: 2,\n  // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j)\n  multFactor: 1,\n  // optional self loops for each node. Use a neutral value to improve cluster computations.\n  maxIterations: 20,\n  // maximum number of iterations of the MCL algorithm in a single run\n  attributes: [\n  // attributes/features used to group nodes, ie. similarity values between nodes\n  function (edge) {\n    return 1;\n  }]\n});\n/* eslint-enable */\n\nvar setOptions$3 = function setOptions(options) {\n  return defaults$c(options);\n};\n/* eslint-enable */\n\nvar getSimilarity$1 = function getSimilarity(edge, attributes) {\n  var total = 0;\n  for (var i = 0; i < attributes.length; i++) {\n    total += attributes[i](edge);\n  }\n  return total;\n};\nvar addLoops = function addLoops(M, n, val) {\n  for (var i = 0; i < n; i++) {\n    M[i * n + i] = val;\n  }\n};\nvar normalize = function normalize(M, n) {\n  var sum;\n  for (var col = 0; col < n; col++) {\n    sum = 0;\n    for (var row = 0; row < n; row++) {\n      sum += M[row * n + col];\n    }\n    for (var _row = 0; _row < n; _row++) {\n      M[_row * n + col] = M[_row * n + col] / sum;\n    }\n  }\n};\n\n// TODO: blocked matrix multiplication?\nvar mmult = function mmult(A, B, n) {\n  var C = new Array(n * n);\n  for (var i = 0; i < n; i++) {\n    for (var j = 0; j < n; j++) {\n      C[i * n + j] = 0;\n    }\n    for (var k = 0; k < n; k++) {\n      for (var _j = 0; _j < n; _j++) {\n        C[i * n + _j] += A[i * n + k] * B[k * n + _j];\n      }\n    }\n  }\n  return C;\n};\nvar expand = function expand(M, n, expandFactor /** power **/) {\n  var _M = M.slice(0);\n  for (var p = 1; p < expandFactor; p++) {\n    M = mmult(M, _M, n);\n  }\n  return M;\n};\nvar inflate = function inflate(M, n, inflateFactor /** r **/) {\n  var _M = new Array(n * n);\n\n  // M(i,j) ^ inflatePower\n  for (var i = 0; i < n * n; i++) {\n    _M[i] = Math.pow(M[i], inflateFactor);\n  }\n  normalize(_M, n);\n  return _M;\n};\nvar hasConverged = function hasConverged(M, _M, n2, roundFactor) {\n  // Check that both matrices have the same elements (i,j)\n  for (var i = 0; i < n2; i++) {\n    var v1 = Math.round(M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); // truncate to 'roundFactor' decimal places\n    var v2 = Math.round(_M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor);\n    if (v1 !== v2) {\n      return false;\n    }\n  }\n  return true;\n};\nvar assign$2 = function assign(M, n, nodes, cy) {\n  var clusters = [];\n  for (var i = 0; i < n; i++) {\n    var cluster = [];\n    for (var j = 0; j < n; j++) {\n      // Row-wise attractors and elements that they attract belong in same cluster\n      if (Math.round(M[i * n + j] * 1000) / 1000 > 0) {\n        cluster.push(nodes[j]);\n      }\n    }\n    if (cluster.length !== 0) {\n      clusters.push(cy.collection(cluster));\n    }\n  }\n  return clusters;\n};\nvar isDuplicate = function isDuplicate(c1, c2) {\n  for (var i = 0; i < c1.length; i++) {\n    if (!c2[i] || c1[i].id() !== c2[i].id()) {\n      return false;\n    }\n  }\n  return true;\n};\nvar removeDuplicates = function removeDuplicates(clusters) {\n  for (var i = 0; i < clusters.length; i++) {\n    for (var j = 0; j < clusters.length; j++) {\n      if (i != j && isDuplicate(clusters[i], clusters[j])) {\n        clusters.splice(j, 1);\n      }\n    }\n  }\n  return clusters;\n};\nvar markovClustering = function markovClustering(options) {\n  var nodes = this.nodes();\n  var edges = this.edges();\n  var cy = this.cy();\n\n  // Set parameters of algorithm:\n  var opts = setOptions$3(options);\n\n  // Map each node to its position in node array\n  var id2position = {};\n  for (var i = 0; i < nodes.length; i++) {\n    id2position[nodes[i].id()] = i;\n  }\n\n  // Generate stochastic matrix M from input graph G (should be symmetric/undirected)\n  var n = nodes.length,\n    n2 = n * n;\n  var M = new Array(n2),\n    _M;\n  for (var _i = 0; _i < n2; _i++) {\n    M[_i] = 0;\n  }\n  for (var e = 0; e < edges.length; e++) {\n    var edge = edges[e];\n    var _i2 = id2position[edge.source().id()];\n    var j = id2position[edge.target().id()];\n    var sim = getSimilarity$1(edge, opts.attributes);\n    M[_i2 * n + j] += sim; // G should be symmetric and undirected\n    M[j * n + _i2] += sim;\n  }\n\n  // Begin Markov cluster algorithm\n\n  // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonal\n  addLoops(M, n, opts.multFactor);\n\n  // Step 2: M = normalize( M );\n  normalize(M, n);\n  var isStillMoving = true;\n  var iterations = 0;\n  while (isStillMoving && iterations < opts.maxIterations) {\n    isStillMoving = false;\n\n    // Step 3:\n    _M = expand(M, n, opts.expandFactor);\n\n    // Step 4:\n    M = inflate(_M, n, opts.inflateFactor);\n\n    // Step 5: check to see if ~steady state has been reached\n    if (!hasConverged(M, _M, n2, 4)) {\n      isStillMoving = true;\n    }\n    iterations++;\n  }\n\n  // Build clusters from matrix\n  var clusters = assign$2(M, n, nodes, cy);\n\n  // Remove duplicate clusters due to symmetry of graph and M matrix\n  clusters = removeDuplicates(clusters);\n  return clusters;\n};\nvar markovClustering$1 = {\n  markovClustering: markovClustering,\n  mcl: markovClustering\n};\n\n// Common distance metrics for clustering algorithms\n// https://en.wikipedia.org/wiki/Hierarchical_clustering#Metric\n\nvar identity$1 = function identity(x) {\n  return x;\n};\nvar absDiff = function absDiff(p, q) {\n  return Math.abs(q - p);\n};\nvar addAbsDiff = function addAbsDiff(total, p, q) {\n  return total + absDiff(p, q);\n};\nvar addSquaredDiff = function addSquaredDiff(total, p, q) {\n  return total + Math.pow(q - p, 2);\n};\nvar sqrt = function sqrt(x) {\n  return Math.sqrt(x);\n};\nvar maxAbsDiff = function maxAbsDiff(currentMax, p, q) {\n  return Math.max(currentMax, absDiff(p, q));\n};\nvar getDistance = function getDistance(length, getP, getQ, init, visit) {\n  var post = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : identity$1;\n  var ret = init;\n  var p, q;\n  for (var dim = 0; dim < length; dim++) {\n    p = getP(dim);\n    q = getQ(dim);\n    ret = visit(ret, p, q);\n  }\n  return post(ret);\n};\nvar distances = {\n  euclidean: function euclidean(length, getP, getQ) {\n    if (length >= 2) {\n      return getDistance(length, getP, getQ, 0, addSquaredDiff, sqrt);\n    } else {\n      // for single attr case, more efficient to avoid sqrt\n      return getDistance(length, getP, getQ, 0, addAbsDiff);\n    }\n  },\n  squaredEuclidean: function squaredEuclidean(length, getP, getQ) {\n    return getDistance(length, getP, getQ, 0, addSquaredDiff);\n  },\n  manhattan: function manhattan(length, getP, getQ) {\n    return getDistance(length, getP, getQ, 0, addAbsDiff);\n  },\n  max: function max(length, getP, getQ) {\n    return getDistance(length, getP, getQ, -Infinity, maxAbsDiff);\n  }\n};\n\n// in case the user accidentally doesn't use camel case\ndistances['squared-euclidean'] = distances['squaredEuclidean'];\ndistances['squaredeuclidean'] = distances['squaredEuclidean'];\nfunction clusteringDistance (method, length, getP, getQ, nodeP, nodeQ) {\n  var impl;\n  if (fn$6(method)) {\n    impl = method;\n  } else {\n    impl = distances[method] || distances.euclidean;\n  }\n  if (length === 0 && fn$6(method)) {\n    return impl(nodeP, nodeQ);\n  } else {\n    return impl(length, getP, getQ, nodeP, nodeQ);\n  }\n}\n\nvar defaults$b = defaults$g({\n  k: 2,\n  m: 2,\n  sensitivityThreshold: 0.0001,\n  distance: 'euclidean',\n  maxIterations: 10,\n  attributes: [],\n  testMode: false,\n  testCentroids: null\n});\nvar setOptions$2 = function setOptions(options) {\n  return defaults$b(options);\n};\n\nvar getDist = function getDist(type, node, centroid, attributes, mode) {\n  var noNodeP = mode !== 'kMedoids';\n  var getP = noNodeP ? function (i) {\n    return centroid[i];\n  } : function (i) {\n    return attributes[i](centroid);\n  };\n  var getQ = function getQ(i) {\n    return attributes[i](node);\n  };\n  var nodeP = centroid;\n  var nodeQ = node;\n  return clusteringDistance(type, attributes.length, getP, getQ, nodeP, nodeQ);\n};\nvar randomCentroids = function randomCentroids(nodes, k, attributes) {\n  var ndim = attributes.length;\n  var min = new Array(ndim);\n  var max = new Array(ndim);\n  var centroids = new Array(k);\n  var centroid = null;\n\n  // Find min, max values for each attribute dimension\n  for (var i = 0; i < ndim; i++) {\n    min[i] = nodes.min(attributes[i]).value;\n    max[i] = nodes.max(attributes[i]).value;\n  }\n\n  // Build k centroids, each represented as an n-dim feature vector\n  for (var c = 0; c < k; c++) {\n    centroid = [];\n    for (var _i = 0; _i < ndim; _i++) {\n      centroid[_i] = Math.random() * (max[_i] - min[_i]) + min[_i]; // random initial value\n    }\n    centroids[c] = centroid;\n  }\n  return centroids;\n};\nvar classify = function classify(node, centroids, distance, attributes, type) {\n  var min = Infinity;\n  var index = 0;\n  for (var i = 0; i < centroids.length; i++) {\n    var dist = getDist(distance, node, centroids[i], attributes, type);\n    if (dist < min) {\n      min = dist;\n      index = i;\n    }\n  }\n  return index;\n};\nvar buildCluster = function buildCluster(centroid, nodes, assignment) {\n  var cluster = [];\n  var node = null;\n  for (var n = 0; n < nodes.length; n++) {\n    node = nodes[n];\n    if (assignment[node.id()] === centroid) {\n      //console.log(\"Node \" + node.id() + \" is associated with medoid #: \" + m);\n      cluster.push(node);\n    }\n  }\n  return cluster;\n};\nvar haveValuesConverged = function haveValuesConverged(v1, v2, sensitivityThreshold) {\n  return Math.abs(v2 - v1) <= sensitivityThreshold;\n};\nvar haveMatricesConverged = function haveMatricesConverged(v1, v2, sensitivityThreshold) {\n  for (var i = 0; i < v1.length; i++) {\n    for (var j = 0; j < v1[i].length; j++) {\n      var diff = Math.abs(v1[i][j] - v2[i][j]);\n      if (diff > sensitivityThreshold) {\n        return false;\n      }\n    }\n  }\n  return true;\n};\nvar seenBefore = function seenBefore(node, medoids, n) {\n  for (var i = 0; i < n; i++) {\n    if (node === medoids[i]) return true;\n  }\n  return false;\n};\nvar randomMedoids = function randomMedoids(nodes, k) {\n  var medoids = new Array(k);\n\n  // For small data sets, the probability of medoid conflict is greater,\n  // so we need to check to see if we've already seen or chose this node before.\n  if (nodes.length < 50) {\n    // Randomly select k medoids from the n nodes\n    for (var i = 0; i < k; i++) {\n      var node = nodes[Math.floor(Math.random() * nodes.length)];\n\n      // If we've already chosen this node to be a medoid, don't choose it again (for small data sets).\n      // Instead choose a different random node.\n      while (seenBefore(node, medoids, i)) {\n        node = nodes[Math.floor(Math.random() * nodes.length)];\n      }\n      medoids[i] = node;\n    }\n  } else {\n    // Relatively large data set, so pretty safe to not check and just select random nodes\n    for (var _i2 = 0; _i2 < k; _i2++) {\n      medoids[_i2] = nodes[Math.floor(Math.random() * nodes.length)];\n    }\n  }\n  return medoids;\n};\nvar findCost = function findCost(potentialNewMedoid, cluster, attributes) {\n  var cost = 0;\n  for (var n = 0; n < cluster.length; n++) {\n    cost += getDist('manhattan', cluster[n], potentialNewMedoid, attributes, 'kMedoids');\n  }\n  return cost;\n};\nvar kMeans = function kMeans(options) {\n  var cy = this.cy();\n  var nodes = this.nodes();\n  var node = null;\n\n  // Set parameters of algorithm: # of clusters, distance metric, etc.\n  var opts = setOptions$2(options);\n\n  // Begin k-means algorithm\n  var clusters = new Array(opts.k);\n  var assignment = {};\n  var centroids;\n\n  // Step 1: Initialize centroid positions\n  if (opts.testMode) {\n    if (typeof opts.testCentroids === 'number') {\n      // TODO: implement a seeded random number generator.\n      opts.testCentroids;\n      centroids = randomCentroids(nodes, opts.k, opts.attributes);\n    } else if (_typeof(opts.testCentroids) === 'object') {\n      centroids = opts.testCentroids;\n    } else {\n      centroids = randomCentroids(nodes, opts.k, opts.attributes);\n    }\n  } else {\n    centroids = randomCentroids(nodes, opts.k, opts.attributes);\n  }\n  var isStillMoving = true;\n  var iterations = 0;\n  while (isStillMoving && iterations < opts.maxIterations) {\n    // Step 2: Assign nodes to the nearest centroid\n    for (var n = 0; n < nodes.length; n++) {\n      node = nodes[n];\n      // Determine which cluster this node belongs to: node id => cluster #\n      assignment[node.id()] = classify(node, centroids, opts.distance, opts.attributes, 'kMeans');\n    }\n\n    // Step 3: For each of the k clusters, update its centroid\n    isStillMoving = false;\n    for (var c = 0; c < opts.k; c++) {\n      // Get all nodes that belong to this cluster\n      var cluster = buildCluster(c, nodes, assignment);\n      if (cluster.length === 0) {\n        // If cluster is empty, break out early & move to next cluster\n        continue;\n      }\n\n      // Update centroids by calculating avg of all nodes within the cluster.\n      var ndim = opts.attributes.length;\n      var centroid = centroids[c]; // [ dim_1, dim_2, dim_3, ... , dim_n ]\n      var newCentroid = new Array(ndim);\n      var sum = new Array(ndim);\n      for (var d = 0; d < ndim; d++) {\n        sum[d] = 0.0;\n        for (var i = 0; i < cluster.length; i++) {\n          node = cluster[i];\n          sum[d] += opts.attributes[d](node);\n        }\n        newCentroid[d] = sum[d] / cluster.length;\n\n        // Check to see if algorithm has converged, i.e. when centroids no longer change\n        if (!haveValuesConverged(newCentroid[d], centroid[d], opts.sensitivityThreshold)) {\n          isStillMoving = true;\n        }\n      }\n      centroids[c] = newCentroid;\n      clusters[c] = cy.collection(cluster);\n    }\n    iterations++;\n  }\n  return clusters;\n};\nvar kMedoids = function kMedoids(options) {\n  var cy = this.cy();\n  var nodes = this.nodes();\n  var node = null;\n  var opts = setOptions$2(options);\n\n  // Begin k-medoids algorithm\n  var clusters = new Array(opts.k);\n  var medoids;\n  var assignment = {};\n  var curCost;\n  var minCosts = new Array(opts.k); // minimum cost configuration for each cluster\n\n  // Step 1: Initialize k medoids\n  if (opts.testMode) {\n    if (typeof opts.testCentroids === 'number') ; else if (_typeof(opts.testCentroids) === 'object') {\n      medoids = opts.testCentroids;\n    } else {\n      medoids = randomMedoids(nodes, opts.k);\n    }\n  } else {\n    medoids = randomMedoids(nodes, opts.k);\n  }\n  var isStillMoving = true;\n  var iterations = 0;\n  while (isStillMoving && iterations < opts.maxIterations) {\n    // Step 2: Assign nodes to the nearest medoid\n    for (var n = 0; n < nodes.length; n++) {\n      node = nodes[n];\n      // Determine which cluster this node belongs to: node id => cluster #\n      assignment[node.id()] = classify(node, medoids, opts.distance, opts.attributes, 'kMedoids');\n    }\n    isStillMoving = false;\n    // Step 3: For each medoid m, and for each node associated with mediod m,\n    // select the node with the lowest configuration cost as new medoid.\n    for (var m = 0; m < medoids.length; m++) {\n      // Get all nodes that belong to this medoid\n      var cluster = buildCluster(m, nodes, assignment);\n      if (cluster.length === 0) {\n        // If cluster is empty, break out early & move to next cluster\n        continue;\n      }\n      minCosts[m] = findCost(medoids[m], cluster, opts.attributes); // original cost\n\n      // Select different medoid if its configuration has the lowest cost\n      for (var _n = 0; _n < cluster.length; _n++) {\n        curCost = findCost(cluster[_n], cluster, opts.attributes);\n        if (curCost < minCosts[m]) {\n          minCosts[m] = curCost;\n          medoids[m] = cluster[_n];\n          isStillMoving = true;\n        }\n      }\n      clusters[m] = cy.collection(cluster);\n    }\n    iterations++;\n  }\n  return clusters;\n};\nvar updateCentroids = function updateCentroids(centroids, nodes, U, weight, opts) {\n  var numerator, denominator;\n  for (var n = 0; n < nodes.length; n++) {\n    for (var c = 0; c < centroids.length; c++) {\n      weight[n][c] = Math.pow(U[n][c], opts.m);\n    }\n  }\n  for (var _c = 0; _c < centroids.length; _c++) {\n    for (var dim = 0; dim < opts.attributes.length; dim++) {\n      numerator = 0;\n      denominator = 0;\n      for (var _n2 = 0; _n2 < nodes.length; _n2++) {\n        numerator += weight[_n2][_c] * opts.attributes[dim](nodes[_n2]);\n        denominator += weight[_n2][_c];\n      }\n      centroids[_c][dim] = numerator / denominator;\n    }\n  }\n};\nvar updateMembership = function updateMembership(U, _U, centroids, nodes, opts) {\n  // Save previous step\n  for (var i = 0; i < U.length; i++) {\n    _U[i] = U[i].slice();\n  }\n  var sum, numerator, denominator;\n  var pow = 2 / (opts.m - 1);\n  for (var c = 0; c < centroids.length; c++) {\n    for (var n = 0; n < nodes.length; n++) {\n      sum = 0;\n      for (var k = 0; k < centroids.length; k++) {\n        // against all other centroids\n        numerator = getDist(opts.distance, nodes[n], centroids[c], opts.attributes, 'cmeans');\n        denominator = getDist(opts.distance, nodes[n], centroids[k], opts.attributes, 'cmeans');\n        sum += Math.pow(numerator / denominator, pow);\n      }\n      U[n][c] = 1 / sum;\n    }\n  }\n};\nvar assign$1 = function assign(nodes, U, opts, cy) {\n  var clusters = new Array(opts.k);\n  for (var c = 0; c < clusters.length; c++) {\n    clusters[c] = [];\n  }\n  var max;\n  var index;\n  for (var n = 0; n < U.length; n++) {\n    // for each node (U is N x C matrix)\n    max = -Infinity;\n    index = -1;\n    // Determine which cluster the node is most likely to belong in\n    for (var _c2 = 0; _c2 < U[0].length; _c2++) {\n      if (U[n][_c2] > max) {\n        max = U[n][_c2];\n        index = _c2;\n      }\n    }\n    clusters[index].push(nodes[n]);\n  }\n\n  // Turn every array into a collection of nodes\n  for (var _c3 = 0; _c3 < clusters.length; _c3++) {\n    clusters[_c3] = cy.collection(clusters[_c3]);\n  }\n  return clusters;\n};\nvar fuzzyCMeans = function fuzzyCMeans(options) {\n  var cy = this.cy();\n  var nodes = this.nodes();\n  var opts = setOptions$2(options);\n\n  // Begin fuzzy c-means algorithm\n  var clusters;\n  var centroids;\n  var U;\n  var _U;\n  var weight;\n\n  // Step 1: Initialize letiables.\n  _U = new Array(nodes.length);\n  for (var i = 0; i < nodes.length; i++) {\n    // N x C matrix\n    _U[i] = new Array(opts.k);\n  }\n  U = new Array(nodes.length);\n  for (var _i3 = 0; _i3 < nodes.length; _i3++) {\n    // N x C matrix\n    U[_i3] = new Array(opts.k);\n  }\n  for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n    var total = 0;\n    for (var j = 0; j < opts.k; j++) {\n      U[_i4][j] = Math.random();\n      total += U[_i4][j];\n    }\n    for (var _j = 0; _j < opts.k; _j++) {\n      U[_i4][_j] = U[_i4][_j] / total;\n    }\n  }\n  centroids = new Array(opts.k);\n  for (var _i5 = 0; _i5 < opts.k; _i5++) {\n    centroids[_i5] = new Array(opts.attributes.length);\n  }\n  weight = new Array(nodes.length);\n  for (var _i6 = 0; _i6 < nodes.length; _i6++) {\n    // N x C matrix\n    weight[_i6] = new Array(opts.k);\n  }\n  // end init FCM\n\n  var isStillMoving = true;\n  var iterations = 0;\n  while (isStillMoving && iterations < opts.maxIterations) {\n    isStillMoving = false;\n\n    // Step 2: Calculate the centroids for each step.\n    updateCentroids(centroids, nodes, U, weight, opts);\n\n    // Step 3: Update the partition matrix U.\n    updateMembership(U, _U, centroids, nodes, opts);\n\n    // Step 4: Check for convergence.\n    if (!haveMatricesConverged(U, _U, opts.sensitivityThreshold)) {\n      isStillMoving = true;\n    }\n    iterations++;\n  }\n\n  // Assign nodes to clusters with highest probability.\n  clusters = assign$1(nodes, U, opts, cy);\n  return {\n    clusters: clusters,\n    degreeOfMembership: U\n  };\n};\nvar kClustering = {\n  kMeans: kMeans,\n  kMedoids: kMedoids,\n  fuzzyCMeans: fuzzyCMeans,\n  fcm: fuzzyCMeans\n};\n\n// Implemented by Zoe Xi @zoexi for GSOC 2016\n// https://github.com/cytoscape/cytoscape.js-hierarchical\n\nvar defaults$a = defaults$g({\n  distance: 'euclidean',\n  // distance metric to compare nodes\n  linkage: 'min',\n  // linkage criterion : how to determine the distance between clusters of nodes\n  mode: 'threshold',\n  // mode:'threshold' => clusters must be threshold distance apart\n  threshold: Infinity,\n  // the distance threshold\n  // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters\n  addDendrogram: false,\n  // whether to add the dendrogram to the graph for viz\n  dendrogramDepth: 0,\n  // depth at which dendrogram branches are merged into the returned clusters\n  attributes: [] // array of attr functions\n});\nvar linkageAliases = {\n  'single': 'min',\n  'complete': 'max'\n};\nvar setOptions$1 = function setOptions(options) {\n  var opts = defaults$a(options);\n  var preferredAlias = linkageAliases[opts.linkage];\n  if (preferredAlias != null) {\n    opts.linkage = preferredAlias;\n  }\n  return opts;\n};\nvar mergeClosest = function mergeClosest(clusters, index, dists, mins, opts) {\n  // Find two closest clusters from cached mins\n  var minKey = 0;\n  var min = Infinity;\n  var dist;\n  var attrs = opts.attributes;\n  var getDist = function getDist(n1, n2) {\n    return clusteringDistance(opts.distance, attrs.length, function (i) {\n      return attrs[i](n1);\n    }, function (i) {\n      return attrs[i](n2);\n    }, n1, n2);\n  };\n  for (var i = 0; i < clusters.length; i++) {\n    var key = clusters[i].key;\n    var _dist = dists[key][mins[key]];\n    if (_dist < min) {\n      minKey = key;\n      min = _dist;\n    }\n  }\n  if (opts.mode === 'threshold' && min >= opts.threshold || opts.mode === 'dendrogram' && clusters.length === 1) {\n    return false;\n  }\n  var c1 = index[minKey];\n  var c2 = index[mins[minKey]];\n  var merged;\n\n  // Merge two closest clusters\n  if (opts.mode === 'dendrogram') {\n    merged = {\n      left: c1,\n      right: c2,\n      key: c1.key\n    };\n  } else {\n    merged = {\n      value: c1.value.concat(c2.value),\n      key: c1.key\n    };\n  }\n  clusters[c1.index] = merged;\n  clusters.splice(c2.index, 1);\n  index[c1.key] = merged;\n\n  // Update distances with new merged cluster\n  for (var _i = 0; _i < clusters.length; _i++) {\n    var cur = clusters[_i];\n    if (c1.key === cur.key) {\n      dist = Infinity;\n    } else if (opts.linkage === 'min') {\n      dist = dists[c1.key][cur.key];\n      if (dists[c1.key][cur.key] > dists[c2.key][cur.key]) {\n        dist = dists[c2.key][cur.key];\n      }\n    } else if (opts.linkage === 'max') {\n      dist = dists[c1.key][cur.key];\n      if (dists[c1.key][cur.key] < dists[c2.key][cur.key]) {\n        dist = dists[c2.key][cur.key];\n      }\n    } else if (opts.linkage === 'mean') {\n      dist = (dists[c1.key][cur.key] * c1.size + dists[c2.key][cur.key] * c2.size) / (c1.size + c2.size);\n    } else {\n      if (opts.mode === 'dendrogram') dist = getDist(cur.value, c1.value);else dist = getDist(cur.value[0], c1.value[0]);\n    }\n    dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist; // distance matrix is symmetric\n  }\n\n  // Update cached mins\n  for (var _i2 = 0; _i2 < clusters.length; _i2++) {\n    var key1 = clusters[_i2].key;\n    if (mins[key1] === c1.key || mins[key1] === c2.key) {\n      var _min = key1;\n      for (var j = 0; j < clusters.length; j++) {\n        var key2 = clusters[j].key;\n        if (dists[key1][key2] < dists[key1][_min]) {\n          _min = key2;\n        }\n      }\n      mins[key1] = _min;\n    }\n    clusters[_i2].index = _i2;\n  }\n\n  // Clean up meta data used for clustering\n  c1.key = c2.key = c1.index = c2.index = null;\n  return true;\n};\nvar _getAllChildren = function getAllChildren(root, arr, cy) {\n  if (!root) return;\n  if (root.value) {\n    arr.push(root.value);\n  } else {\n    if (root.left) _getAllChildren(root.left, arr);\n    if (root.right) _getAllChildren(root.right, arr);\n  }\n};\nvar _buildDendrogram = function buildDendrogram(root, cy) {\n  if (!root) return '';\n  if (root.left && root.right) {\n    var leftStr = _buildDendrogram(root.left, cy);\n    var rightStr = _buildDendrogram(root.right, cy);\n    var node = cy.add({\n      group: 'nodes',\n      data: {\n        id: leftStr + ',' + rightStr\n      }\n    });\n    cy.add({\n      group: 'edges',\n      data: {\n        source: leftStr,\n        target: node.id()\n      }\n    });\n    cy.add({\n      group: 'edges',\n      data: {\n        source: rightStr,\n        target: node.id()\n      }\n    });\n    return node.id();\n  } else if (root.value) {\n    return root.value.id();\n  }\n};\nvar _buildClustersFromTree = function buildClustersFromTree(root, k, cy) {\n  if (!root) return [];\n  var left = [],\n    right = [],\n    leaves = [];\n  if (k === 0) {\n    // don't cut tree, simply return all nodes as 1 single cluster\n    if (root.left) _getAllChildren(root.left, left);\n    if (root.right) _getAllChildren(root.right, right);\n    leaves = left.concat(right);\n    return [cy.collection(leaves)];\n  } else if (k === 1) {\n    // cut at root\n\n    if (root.value) {\n      // leaf node\n      return [cy.collection(root.value)];\n    } else {\n      if (root.left) _getAllChildren(root.left, left);\n      if (root.right) _getAllChildren(root.right, right);\n      return [cy.collection(left), cy.collection(right)];\n    }\n  } else {\n    if (root.value) {\n      return [cy.collection(root.value)];\n    } else {\n      if (root.left) left = _buildClustersFromTree(root.left, k - 1, cy);\n      if (root.right) right = _buildClustersFromTree(root.right, k - 1, cy);\n      return left.concat(right);\n    }\n  }\n};\n\nvar hierarchicalClustering = function hierarchicalClustering(options) {\n  var cy = this.cy();\n  var nodes = this.nodes();\n\n  // Set parameters of algorithm: linkage type, distance metric, etc.\n  var opts = setOptions$1(options);\n  var attrs = opts.attributes;\n  var getDist = function getDist(n1, n2) {\n    return clusteringDistance(opts.distance, attrs.length, function (i) {\n      return attrs[i](n1);\n    }, function (i) {\n      return attrs[i](n2);\n    }, n1, n2);\n  };\n\n  // Begin hierarchical algorithm\n  var clusters = [];\n  var dists = []; // distances between each pair of clusters\n  var mins = []; // closest cluster for each cluster\n  var index = []; // hash of all clusters by key\n\n  // In agglomerative (bottom-up) clustering, each node starts as its own cluster\n  for (var n = 0; n < nodes.length; n++) {\n    var cluster = {\n      value: opts.mode === 'dendrogram' ? nodes[n] : [nodes[n]],\n      key: n,\n      index: n\n    };\n    clusters[n] = cluster;\n    index[n] = cluster;\n    dists[n] = [];\n    mins[n] = 0;\n  }\n\n  // Calculate the distance between each pair of clusters\n  for (var i = 0; i < clusters.length; i++) {\n    for (var j = 0; j <= i; j++) {\n      var dist = undefined;\n      if (opts.mode === 'dendrogram') {\n        // modes store cluster values differently\n        dist = i === j ? Infinity : getDist(clusters[i].value, clusters[j].value);\n      } else {\n        dist = i === j ? Infinity : getDist(clusters[i].value[0], clusters[j].value[0]);\n      }\n      dists[i][j] = dist;\n      dists[j][i] = dist;\n      if (dist < dists[i][mins[i]]) {\n        mins[i] = j; // Cache mins: closest cluster to cluster i is cluster j\n      }\n    }\n  }\n\n  // Find the closest pair of clusters and merge them into a single cluster.\n  // Update distances between new cluster and each of the old clusters, and loop until threshold reached.\n  var merged = mergeClosest(clusters, index, dists, mins, opts);\n  while (merged) {\n    merged = mergeClosest(clusters, index, dists, mins, opts);\n  }\n  var retClusters;\n\n  // Dendrogram mode builds the hierarchy and adds intermediary nodes + edges\n  // in addition to returning the clusters.\n  if (opts.mode === 'dendrogram') {\n    retClusters = _buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy);\n    if (opts.addDendrogram) _buildDendrogram(clusters[0], cy);\n  } else {\n    // Regular mode simply returns the clusters\n\n    retClusters = new Array(clusters.length);\n    clusters.forEach(function (cluster, i) {\n      // Clean up meta data used for clustering\n      cluster.key = cluster.index = null;\n      retClusters[i] = cy.collection(cluster.value);\n    });\n  }\n  return retClusters;\n};\nvar hierarchicalClustering$1 = {\n  hierarchicalClustering: hierarchicalClustering,\n  hca: hierarchicalClustering\n};\n\n// Implemented by Zoe Xi @zoexi for GSOC 2016\n// https://github.com/cytoscape/cytoscape.js-affinity-propagation\n\nvar defaults$9 = defaults$g({\n  distance: 'euclidean',\n  // distance metric to compare attributes between two nodes\n  preference: 'median',\n  // suitability of a data point to serve as an exemplar\n  damping: 0.8,\n  // damping factor between [0.5, 1)\n  maxIterations: 1000,\n  // max number of iterations to run\n  minIterations: 100,\n  // min number of iterations to run in order for clustering to stop\n  attributes: [// functions to quantify the similarity between any two points\n    // e.g. node => node.data('weight')\n  ]\n});\nvar setOptions = function setOptions(options) {\n  var dmp = options.damping;\n  var pref = options.preference;\n  if (!(0.5 <= dmp && dmp < 1)) {\n    error(\"Damping must range on [0.5, 1).  Got: \".concat(dmp));\n  }\n  var validPrefs = ['median', 'mean', 'min', 'max'];\n  if (!(validPrefs.some(function (v) {\n    return v === pref;\n  }) || number$1(pref))) {\n    error(\"Preference must be one of [\".concat(validPrefs.map(function (p) {\n      return \"'\".concat(p, \"'\");\n    }).join(', '), \"] or a number.  Got: \").concat(pref));\n  }\n  return defaults$9(options);\n};\n\nvar getSimilarity = function getSimilarity(type, n1, n2, attributes) {\n  var attr = function attr(n, i) {\n    return attributes[i](n);\n  };\n\n  // nb negative because similarity should have an inverse relationship to distance\n  return -clusteringDistance(type, attributes.length, function (i) {\n    return attr(n1, i);\n  }, function (i) {\n    return attr(n2, i);\n  }, n1, n2);\n};\nvar getPreference = function getPreference(S, preference) {\n  // larger preference = greater # of clusters\n  var p = null;\n  if (preference === 'median') {\n    p = median(S);\n  } else if (preference === 'mean') {\n    p = mean(S);\n  } else if (preference === 'min') {\n    p = min(S);\n  } else if (preference === 'max') {\n    p = max(S);\n  } else {\n    // Custom preference number, as set by user\n    p = preference;\n  }\n  return p;\n};\nvar findExemplars = function findExemplars(n, R, A) {\n  var indices = [];\n  for (var i = 0; i < n; i++) {\n    if (R[i * n + i] + A[i * n + i] > 0) {\n      indices.push(i);\n    }\n  }\n  return indices;\n};\nvar assignClusters = function assignClusters(n, S, exemplars) {\n  var clusters = [];\n  for (var i = 0; i < n; i++) {\n    var index = -1;\n    var max = -Infinity;\n    for (var ei = 0; ei < exemplars.length; ei++) {\n      var e = exemplars[ei];\n      if (S[i * n + e] > max) {\n        index = e;\n        max = S[i * n + e];\n      }\n    }\n    if (index > 0) {\n      clusters.push(index);\n    }\n  }\n  for (var _ei = 0; _ei < exemplars.length; _ei++) {\n    clusters[exemplars[_ei]] = exemplars[_ei];\n  }\n  return clusters;\n};\nvar assign = function assign(n, S, exemplars) {\n  var clusters = assignClusters(n, S, exemplars);\n  for (var ei = 0; ei < exemplars.length; ei++) {\n    var ii = [];\n    for (var c = 0; c < clusters.length; c++) {\n      if (clusters[c] === exemplars[ei]) {\n        ii.push(c);\n      }\n    }\n    var maxI = -1;\n    var maxSum = -Infinity;\n    for (var i = 0; i < ii.length; i++) {\n      var sum = 0;\n      for (var j = 0; j < ii.length; j++) {\n        sum += S[ii[j] * n + ii[i]];\n      }\n      if (sum > maxSum) {\n        maxI = i;\n        maxSum = sum;\n      }\n    }\n    exemplars[ei] = ii[maxI];\n  }\n  clusters = assignClusters(n, S, exemplars);\n  return clusters;\n};\nvar affinityPropagation = function affinityPropagation(options) {\n  var cy = this.cy();\n  var nodes = this.nodes();\n  var opts = setOptions(options);\n\n  // Map each node to its position in node array\n  var id2position = {};\n  for (var i = 0; i < nodes.length; i++) {\n    id2position[nodes[i].id()] = i;\n  }\n\n  // Begin affinity propagation algorithm\n\n  var n; // number of data points\n  var n2; // size of matrices\n  var S; // similarity matrix (1D array)\n  var p; // preference/suitability of a data point to serve as an exemplar\n  var R; // responsibility matrix (1D array)\n  var A; // availability matrix (1D array)\n\n  n = nodes.length;\n  n2 = n * n;\n\n  // Initialize and build S similarity matrix\n  S = new Array(n2);\n  for (var _i = 0; _i < n2; _i++) {\n    S[_i] = -Infinity; // for cases where two data points shouldn't be linked together\n  }\n  for (var _i2 = 0; _i2 < n; _i2++) {\n    for (var j = 0; j < n; j++) {\n      if (_i2 !== j) {\n        S[_i2 * n + j] = getSimilarity(opts.distance, nodes[_i2], nodes[j], opts.attributes);\n      }\n    }\n  }\n\n  // Place preferences on the diagonal of S\n  p = getPreference(S, opts.preference);\n  for (var _i3 = 0; _i3 < n; _i3++) {\n    S[_i3 * n + _i3] = p;\n  }\n\n  // Initialize R responsibility matrix\n  R = new Array(n2);\n  for (var _i4 = 0; _i4 < n2; _i4++) {\n    R[_i4] = 0.0;\n  }\n\n  // Initialize A availability matrix\n  A = new Array(n2);\n  for (var _i5 = 0; _i5 < n2; _i5++) {\n    A[_i5] = 0.0;\n  }\n  var old = new Array(n);\n  var Rp = new Array(n);\n  var se = new Array(n);\n  for (var _i6 = 0; _i6 < n; _i6++) {\n    old[_i6] = 0.0;\n    Rp[_i6] = 0.0;\n    se[_i6] = 0;\n  }\n  var e = new Array(n * opts.minIterations);\n  for (var _i7 = 0; _i7 < e.length; _i7++) {\n    e[_i7] = 0;\n  }\n  var iter;\n  for (iter = 0; iter < opts.maxIterations; iter++) {\n    // main algorithmic loop\n\n    // Update R responsibility matrix\n    for (var _i8 = 0; _i8 < n; _i8++) {\n      var max = -Infinity,\n        max2 = -Infinity,\n        maxI = -1,\n        AS = 0.0;\n      for (var _j = 0; _j < n; _j++) {\n        old[_j] = R[_i8 * n + _j];\n        AS = A[_i8 * n + _j] + S[_i8 * n + _j];\n        if (AS >= max) {\n          max2 = max;\n          max = AS;\n          maxI = _j;\n        } else if (AS > max2) {\n          max2 = AS;\n        }\n      }\n      for (var _j2 = 0; _j2 < n; _j2++) {\n        R[_i8 * n + _j2] = (1 - opts.damping) * (S[_i8 * n + _j2] - max) + opts.damping * old[_j2];\n      }\n      R[_i8 * n + maxI] = (1 - opts.damping) * (S[_i8 * n + maxI] - max2) + opts.damping * old[maxI];\n    }\n\n    // Update A availability matrix\n    for (var _i9 = 0; _i9 < n; _i9++) {\n      var sum = 0;\n      for (var _j3 = 0; _j3 < n; _j3++) {\n        old[_j3] = A[_j3 * n + _i9];\n        Rp[_j3] = Math.max(0, R[_j3 * n + _i9]);\n        sum += Rp[_j3];\n      }\n      sum -= Rp[_i9];\n      Rp[_i9] = R[_i9 * n + _i9];\n      sum += Rp[_i9];\n      for (var _j4 = 0; _j4 < n; _j4++) {\n        A[_j4 * n + _i9] = (1 - opts.damping) * Math.min(0, sum - Rp[_j4]) + opts.damping * old[_j4];\n      }\n      A[_i9 * n + _i9] = (1 - opts.damping) * (sum - Rp[_i9]) + opts.damping * old[_i9];\n    }\n\n    // Check for convergence\n    var K = 0;\n    for (var _i10 = 0; _i10 < n; _i10++) {\n      var E = A[_i10 * n + _i10] + R[_i10 * n + _i10] > 0 ? 1 : 0;\n      e[iter % opts.minIterations * n + _i10] = E;\n      K += E;\n    }\n    if (K > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) {\n      var _sum = 0;\n      for (var _i11 = 0; _i11 < n; _i11++) {\n        se[_i11] = 0;\n        for (var _j5 = 0; _j5 < opts.minIterations; _j5++) {\n          se[_i11] += e[_j5 * n + _i11];\n        }\n        if (se[_i11] === 0 || se[_i11] === opts.minIterations) {\n          _sum++;\n        }\n      }\n      if (_sum === n) {\n        // then we have convergence\n        break;\n      }\n    }\n  }\n\n  // Identify exemplars (cluster centers)\n  var exemplarsIndices = findExemplars(n, R, A);\n\n  // Assign nodes to clusters\n  var clusterIndices = assign(n, S, exemplarsIndices);\n  var clusters = {};\n  for (var c = 0; c < exemplarsIndices.length; c++) {\n    clusters[exemplarsIndices[c]] = [];\n  }\n  for (var _i12 = 0; _i12 < nodes.length; _i12++) {\n    var pos = id2position[nodes[_i12].id()];\n    var clusterIndex = clusterIndices[pos];\n    if (clusterIndex != null) {\n      // the node may have not been assigned a cluster if no valid attributes were specified\n      clusters[clusterIndex].push(nodes[_i12]);\n    }\n  }\n  var retClusters = new Array(exemplarsIndices.length);\n  for (var _c = 0; _c < exemplarsIndices.length; _c++) {\n    retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]);\n  }\n  return retClusters;\n};\nvar affinityPropagation$1 = {\n  affinityPropagation: affinityPropagation,\n  ap: affinityPropagation\n};\n\nvar hierholzerDefaults = defaults$g({\n  root: undefined,\n  directed: false\n});\nvar elesfn$k = {\n  hierholzer: function hierholzer(options) {\n    if (!plainObject(options)) {\n      var args = arguments;\n      options = {\n        root: args[0],\n        directed: args[1]\n      };\n    }\n    var _hierholzerDefaults = hierholzerDefaults(options),\n      root = _hierholzerDefaults.root,\n      directed = _hierholzerDefaults.directed;\n    var eles = this;\n    var dflag = false;\n    var oddIn;\n    var oddOut;\n    var startVertex;\n    if (root) startVertex = string(root) ? this.filter(root)[0].id() : root[0].id();\n    var nodes = {};\n    var edges = {};\n    if (directed) {\n      eles.forEach(function (ele) {\n        var id = ele.id();\n        if (ele.isNode()) {\n          var ind = ele.indegree(true);\n          var outd = ele.outdegree(true);\n          var d1 = ind - outd;\n          var d2 = outd - ind;\n          if (d1 == 1) {\n            if (oddIn) dflag = true;else oddIn = id;\n          } else if (d2 == 1) {\n            if (oddOut) dflag = true;else oddOut = id;\n          } else if (d2 > 1 || d1 > 1) {\n            dflag = true;\n          }\n          nodes[id] = [];\n          ele.outgoers().forEach(function (e) {\n            if (e.isEdge()) nodes[id].push(e.id());\n          });\n        } else {\n          edges[id] = [undefined, ele.target().id()];\n        }\n      });\n    } else {\n      eles.forEach(function (ele) {\n        var id = ele.id();\n        if (ele.isNode()) {\n          var d = ele.degree(true);\n          if (d % 2) {\n            if (!oddIn) oddIn = id;else if (!oddOut) oddOut = id;else dflag = true;\n          }\n          nodes[id] = [];\n          ele.connectedEdges().forEach(function (e) {\n            return nodes[id].push(e.id());\n          });\n        } else {\n          edges[id] = [ele.source().id(), ele.target().id()];\n        }\n      });\n    }\n    var result = {\n      found: false,\n      trail: undefined\n    };\n    if (dflag) return result;else if (oddOut && oddIn) {\n      if (directed) {\n        if (startVertex && oddOut != startVertex) {\n          return result;\n        }\n        startVertex = oddOut;\n      } else {\n        if (startVertex && oddOut != startVertex && oddIn != startVertex) {\n          return result;\n        } else if (!startVertex) {\n          startVertex = oddOut;\n        }\n      }\n    } else {\n      if (!startVertex) startVertex = eles[0].id();\n    }\n    var walk = function walk(v) {\n      var currentNode = v;\n      var subtour = [v];\n      var adj, adjTail, adjHead;\n      while (nodes[currentNode].length) {\n        adj = nodes[currentNode].shift();\n        adjTail = edges[adj][0];\n        adjHead = edges[adj][1];\n        if (currentNode != adjHead) {\n          nodes[adjHead] = nodes[adjHead].filter(function (e) {\n            return e != adj;\n          });\n          currentNode = adjHead;\n        } else if (!directed && currentNode != adjTail) {\n          nodes[adjTail] = nodes[adjTail].filter(function (e) {\n            return e != adj;\n          });\n          currentNode = adjTail;\n        }\n        subtour.unshift(adj);\n        subtour.unshift(currentNode);\n      }\n      return subtour;\n    };\n    var trail = [];\n    var subtour = [];\n    subtour = walk(startVertex);\n    while (subtour.length != 1) {\n      if (nodes[subtour[0]].length == 0) {\n        trail.unshift(eles.getElementById(subtour.shift()));\n        trail.unshift(eles.getElementById(subtour.shift()));\n      } else {\n        subtour = walk(subtour.shift()).concat(subtour);\n      }\n    }\n    trail.unshift(eles.getElementById(subtour.shift())); // final node\n\n    for (var d in nodes) {\n      if (nodes[d].length) {\n        return result;\n      }\n    }\n    result.found = true;\n    result.trail = this.spawn(trail, true);\n    return result;\n  }\n};\n\nvar hopcroftTarjanBiconnected = function hopcroftTarjanBiconnected() {\n  var eles = this;\n  var nodes = {};\n  var id = 0;\n  var edgeCount = 0;\n  var components = [];\n  var stack = [];\n  var visitedEdges = {};\n  var buildComponent = function buildComponent(x, y) {\n    var i = stack.length - 1;\n    var cutset = [];\n    var component = eles.spawn();\n    while (stack[i].x != x || stack[i].y != y) {\n      cutset.push(stack.pop().edge);\n      i--;\n    }\n    cutset.push(stack.pop().edge);\n    cutset.forEach(function (edge) {\n      var connectedNodes = edge.connectedNodes().intersection(eles);\n      component.merge(edge);\n      connectedNodes.forEach(function (node) {\n        var nodeId = node.id();\n        var connectedEdges = node.connectedEdges().intersection(eles);\n        component.merge(node);\n        if (!nodes[nodeId].cutVertex) {\n          component.merge(connectedEdges);\n        } else {\n          component.merge(connectedEdges.filter(function (edge) {\n            return edge.isLoop();\n          }));\n        }\n      });\n    });\n    components.push(component);\n  };\n  var _biconnectedSearch = function biconnectedSearch(root, currentNode, parent) {\n    if (root === parent) edgeCount += 1;\n    nodes[currentNode] = {\n      id: id,\n      low: id++,\n      cutVertex: false\n    };\n    var edges = eles.getElementById(currentNode).connectedEdges().intersection(eles);\n    if (edges.size() === 0) {\n      components.push(eles.spawn(eles.getElementById(currentNode)));\n    } else {\n      var sourceId, targetId, otherNodeId, edgeId;\n      edges.forEach(function (edge) {\n        sourceId = edge.source().id();\n        targetId = edge.target().id();\n        otherNodeId = sourceId === currentNode ? targetId : sourceId;\n        if (otherNodeId !== parent) {\n          edgeId = edge.id();\n          if (!visitedEdges[edgeId]) {\n            visitedEdges[edgeId] = true;\n            stack.push({\n              x: currentNode,\n              y: otherNodeId,\n              edge: edge\n            });\n          }\n          if (!(otherNodeId in nodes)) {\n            _biconnectedSearch(root, otherNodeId, currentNode);\n            nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].low);\n            if (nodes[currentNode].id <= nodes[otherNodeId].low) {\n              nodes[currentNode].cutVertex = true;\n              buildComponent(currentNode, otherNodeId);\n            }\n          } else {\n            nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].id);\n          }\n        }\n      });\n    }\n  };\n  eles.forEach(function (ele) {\n    if (ele.isNode()) {\n      var nodeId = ele.id();\n      if (!(nodeId in nodes)) {\n        edgeCount = 0;\n        _biconnectedSearch(nodeId, nodeId);\n        nodes[nodeId].cutVertex = edgeCount > 1;\n      }\n    }\n  });\n  var cutVertices = Object.keys(nodes).filter(function (id) {\n    return nodes[id].cutVertex;\n  }).map(function (id) {\n    return eles.getElementById(id);\n  });\n  return {\n    cut: eles.spawn(cutVertices),\n    components: components\n  };\n};\nvar hopcroftTarjanBiconnected$1 = {\n  hopcroftTarjanBiconnected: hopcroftTarjanBiconnected,\n  htbc: hopcroftTarjanBiconnected,\n  htb: hopcroftTarjanBiconnected,\n  hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected\n};\n\nvar tarjanStronglyConnected = function tarjanStronglyConnected() {\n  var eles = this;\n  var nodes = {};\n  var index = 0;\n  var components = [];\n  var stack = [];\n  var cut = eles.spawn(eles);\n  var _stronglyConnectedSearch = function stronglyConnectedSearch(sourceNodeId) {\n    stack.push(sourceNodeId);\n    nodes[sourceNodeId] = {\n      index: index,\n      low: index++,\n      explored: false\n    };\n    var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles);\n    connectedEdges.forEach(function (edge) {\n      var targetNodeId = edge.target().id();\n      if (targetNodeId !== sourceNodeId) {\n        if (!(targetNodeId in nodes)) {\n          _stronglyConnectedSearch(targetNodeId);\n        }\n        if (!nodes[targetNodeId].explored) {\n          nodes[sourceNodeId].low = Math.min(nodes[sourceNodeId].low, nodes[targetNodeId].low);\n        }\n      }\n    });\n    if (nodes[sourceNodeId].index === nodes[sourceNodeId].low) {\n      var componentNodes = eles.spawn();\n      for (;;) {\n        var nodeId = stack.pop();\n        componentNodes.merge(eles.getElementById(nodeId));\n        nodes[nodeId].low = nodes[sourceNodeId].index;\n        nodes[nodeId].explored = true;\n        if (nodeId === sourceNodeId) {\n          break;\n        }\n      }\n      var componentEdges = componentNodes.edgesWith(componentNodes);\n      var component = componentNodes.merge(componentEdges);\n      components.push(component);\n      cut = cut.difference(component);\n    }\n  };\n  eles.forEach(function (ele) {\n    if (ele.isNode()) {\n      var nodeId = ele.id();\n      if (!(nodeId in nodes)) {\n        _stronglyConnectedSearch(nodeId);\n      }\n    }\n  });\n  return {\n    cut: cut,\n    components: components\n  };\n};\nvar tarjanStronglyConnected$1 = {\n  tarjanStronglyConnected: tarjanStronglyConnected,\n  tsc: tarjanStronglyConnected,\n  tscc: tarjanStronglyConnected,\n  tarjanStronglyConnectedComponents: tarjanStronglyConnected\n};\n\nvar elesfn$j = {};\n[elesfn$v, elesfn$u, elesfn$t, elesfn$s, elesfn$r, elesfn$q, elesfn$p, elesfn$o, elesfn$n, elesfn$m, elesfn$l, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$k, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function (props) {\n  extend(elesfn$j, props);\n});\n\n/*!\nEmbeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable\nCopyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com)\nLicensed under The MIT License (http://opensource.org/licenses/MIT)\n*/\n\n/*  promise states [Promises/A+ 2.1]  */\nvar STATE_PENDING = 0; /*  [Promises/A+ 2.1.1]  */\nvar STATE_FULFILLED = 1; /*  [Promises/A+ 2.1.2]  */\nvar STATE_REJECTED = 2; /*  [Promises/A+ 2.1.3]  */\n\n/*  promise object constructor  */\nvar _api = function api(executor) {\n  /*  optionally support non-constructor/plain-function call  */\n  if (!(this instanceof _api)) return new _api(executor);\n\n  /*  initialize object  */\n  this.id = 'Thenable/1.0.7';\n  this.state = STATE_PENDING; /*  initial state  */\n  this.fulfillValue = undefined; /*  initial value  */ /*  [Promises/A+ 1.3, 2.1.2.2]  */\n  this.rejectReason = undefined; /*  initial reason */ /*  [Promises/A+ 1.5, 2.1.3.2]  */\n  this.onFulfilled = []; /*  initial handlers  */\n  this.onRejected = []; /*  initial handlers  */\n\n  /*  provide optional information-hiding proxy  */\n  this.proxy = {\n    then: this.then.bind(this)\n  };\n\n  /*  support optional executor function  */\n  if (typeof executor === 'function') executor.call(this, this.fulfill.bind(this), this.reject.bind(this));\n};\n\n/*  promise API methods  */\n_api.prototype = {\n  /*  promise resolving methods  */\n  fulfill: function fulfill(value) {\n    return deliver(this, STATE_FULFILLED, 'fulfillValue', value);\n  },\n  reject: function reject(value) {\n    return deliver(this, STATE_REJECTED, 'rejectReason', value);\n  },\n  /*  \"The then Method\" [Promises/A+ 1.1, 1.2, 2.2]  */\n  then: function then(onFulfilled, onRejected) {\n    var curr = this;\n    var next = new _api(); /*  [Promises/A+ 2.2.7]  */\n    curr.onFulfilled.push(resolver(onFulfilled, next, 'fulfill')); /*  [Promises/A+ 2.2.2/2.2.6]  */\n    curr.onRejected.push(resolver(onRejected, next, 'reject')); /*  [Promises/A+ 2.2.3/2.2.6]  */\n    execute(curr);\n    return next.proxy; /*  [Promises/A+ 2.2.7, 3.3]  */\n  }\n};\n\n/*  deliver an action  */\nvar deliver = function deliver(curr, state, name, value) {\n  if (curr.state === STATE_PENDING) {\n    curr.state = state; /*  [Promises/A+ 2.1.2.1, 2.1.3.1]  */\n    curr[name] = value; /*  [Promises/A+ 2.1.2.2, 2.1.3.2]  */\n    execute(curr);\n  }\n  return curr;\n};\n\n/*  execute all handlers  */\nvar execute = function execute(curr) {\n  if (curr.state === STATE_FULFILLED) execute_handlers(curr, 'onFulfilled', curr.fulfillValue);else if (curr.state === STATE_REJECTED) execute_handlers(curr, 'onRejected', curr.rejectReason);\n};\n\n/*  execute particular set of handlers  */\nvar execute_handlers = function execute_handlers(curr, name, value) {\n  /* global setImmediate: true */\n  /* global setTimeout: true */\n\n  /*  short-circuit processing  */\n  if (curr[name].length === 0) return;\n\n  /*  iterate over all handlers, exactly once  */\n  var handlers = curr[name];\n  curr[name] = []; /*  [Promises/A+ 2.2.2.3, 2.2.3.3]  */\n  var func = function func() {\n    for (var i = 0; i < handlers.length; i++) handlers[i](value); /*  [Promises/A+ 2.2.5]  */\n  };\n\n  /*  execute procedure asynchronously  */ /*  [Promises/A+ 2.2.4, 3.1]  */\n  if (typeof setImmediate === 'function') setImmediate(func);else setTimeout(func, 0);\n};\n\n/*  generate a resolver function  */\nvar resolver = function resolver(cb, next, method) {\n  return function (value) {\n    if (typeof cb !== 'function') /*  [Promises/A+ 2.2.1, 2.2.7.3, 2.2.7.4]  */\n      next[method].call(next, value); /*  [Promises/A+ 2.2.7.3, 2.2.7.4]  */else {\n      var result;\n      try {\n        result = cb(value);\n      } /*  [Promises/A+ 2.2.2.1, 2.2.3.1, 2.2.5, 3.2]  */ catch (e) {\n        next.reject(e); /*  [Promises/A+ 2.2.7.2]  */\n        return;\n      }\n      _resolve(next, result); /*  [Promises/A+ 2.2.7.1]  */\n    }\n  };\n};\n\n/*  \"Promise Resolution Procedure\"  */ /*  [Promises/A+ 2.3]  */\nvar _resolve = function resolve(promise, x) {\n  /*  sanity check arguments  */ /*  [Promises/A+ 2.3.1]  */\n  if (promise === x || promise.proxy === x) {\n    promise.reject(new TypeError('cannot resolve promise with itself'));\n    return;\n  }\n\n  /*  surgically check for a \"then\" method\n    (mainly to just call the \"getter\" of \"then\" only once)  */\n  var then;\n  if (_typeof(x) === 'object' && x !== null || typeof x === 'function') {\n    try {\n      then = x.then;\n    } /*  [Promises/A+ 2.3.3.1, 3.5]  */ catch (e) {\n      promise.reject(e); /*  [Promises/A+ 2.3.3.2]  */\n      return;\n    }\n  }\n\n  /*  handle own Thenables    [Promises/A+ 2.3.2]\n    and similar \"thenables\" [Promises/A+ 2.3.3]  */\n  if (typeof then === 'function') {\n    var resolved = false;\n    try {\n      /*  call retrieved \"then\" method */ /*  [Promises/A+ 2.3.3.3]  */\n      then.call(x, /*  resolvePromise  */ /*  [Promises/A+ 2.3.3.3.1]  */\n      function (y) {\n        if (resolved) return;\n        resolved = true; /*  [Promises/A+ 2.3.3.3.3]  */\n        if (y === x) /*  [Promises/A+ 3.6]  */\n          promise.reject(new TypeError('circular thenable chain'));else _resolve(promise, y);\n      }, /*  rejectPromise  */ /*  [Promises/A+ 2.3.3.3.2]  */\n      function (r) {\n        if (resolved) return;\n        resolved = true; /*  [Promises/A+ 2.3.3.3.3]  */\n        promise.reject(r);\n      });\n    } catch (e) {\n      if (!resolved) /*  [Promises/A+ 2.3.3.3.3]  */\n        promise.reject(e); /*  [Promises/A+ 2.3.3.3.4]  */\n    }\n    return;\n  }\n\n  /*  handle other values  */\n  promise.fulfill(x); /*  [Promises/A+ 2.3.4, 2.3.3.4]  */\n};\n\n// so we always have Promise.all()\n_api.all = function (ps) {\n  return new _api(function (resolveAll, rejectAll) {\n    var vals = new Array(ps.length);\n    var doneCount = 0;\n    var fulfill = function fulfill(i, val) {\n      vals[i] = val;\n      doneCount++;\n      if (doneCount === ps.length) {\n        resolveAll(vals);\n      }\n    };\n    for (var i = 0; i < ps.length; i++) {\n      (function (i) {\n        var p = ps[i];\n        var isPromise = p != null && p.then != null;\n        if (isPromise) {\n          p.then(function (val) {\n            fulfill(i, val);\n          }, function (err) {\n            rejectAll(err);\n          });\n        } else {\n          var val = p;\n          fulfill(i, val);\n        }\n      })(i);\n    }\n  });\n};\n_api.resolve = function (val) {\n  return new _api(function (resolve, reject) {\n    resolve(val);\n  });\n};\n_api.reject = function (val) {\n  return new _api(function (resolve, reject) {\n    reject(val);\n  });\n};\nvar Promise$1 = typeof Promise !== 'undefined' ? Promise : _api; // eslint-disable-line no-undef\n\nvar Animation = function Animation(target, opts, opts2) {\n  var isCore = core(target);\n  var isEle = !isCore;\n  var _p = this._private = extend({\n    duration: 1000\n  }, opts, opts2);\n  _p.target = target;\n  _p.style = _p.style || _p.css;\n  _p.started = false;\n  _p.playing = false;\n  _p.hooked = false;\n  _p.applying = false;\n  _p.progress = 0;\n  _p.completes = [];\n  _p.frames = [];\n  if (_p.complete && fn$6(_p.complete)) {\n    _p.completes.push(_p.complete);\n  }\n  if (isEle) {\n    var pos = target.position();\n    _p.startPosition = _p.startPosition || {\n      x: pos.x,\n      y: pos.y\n    };\n    _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style);\n  }\n  if (isCore) {\n    var pan = target.pan();\n    _p.startPan = {\n      x: pan.x,\n      y: pan.y\n    };\n    _p.startZoom = target.zoom();\n  }\n\n  // for future timeline/animations impl\n  this.length = 1;\n  this[0] = this;\n};\nvar anifn = Animation.prototype;\nextend(anifn, {\n  instanceString: function instanceString() {\n    return 'animation';\n  },\n  hook: function hook() {\n    var _p = this._private;\n    if (!_p.hooked) {\n      // add to target's animation queue\n      var q;\n      var tAni = _p.target._private.animation;\n      if (_p.queue) {\n        q = tAni.queue;\n      } else {\n        q = tAni.current;\n      }\n      q.push(this);\n\n      // add to the animation loop pool\n      if (elementOrCollection(_p.target)) {\n        _p.target.cy().addToAnimationPool(_p.target);\n      }\n      _p.hooked = true;\n    }\n    return this;\n  },\n  play: function play() {\n    var _p = this._private;\n\n    // autorewind\n    if (_p.progress === 1) {\n      _p.progress = 0;\n    }\n    _p.playing = true;\n    _p.started = false; // needs to be started by animation loop\n    _p.stopped = false;\n    this.hook();\n\n    // the animation loop will start the animation...\n\n    return this;\n  },\n  playing: function playing() {\n    return this._private.playing;\n  },\n  apply: function apply() {\n    var _p = this._private;\n    _p.applying = true;\n    _p.started = false; // needs to be started by animation loop\n    _p.stopped = false;\n    this.hook();\n\n    // the animation loop will apply the animation at this progress\n\n    return this;\n  },\n  applying: function applying() {\n    return this._private.applying;\n  },\n  pause: function pause() {\n    var _p = this._private;\n    _p.playing = false;\n    _p.started = false;\n    return this;\n  },\n  stop: function stop() {\n    var _p = this._private;\n    _p.playing = false;\n    _p.started = false;\n    _p.stopped = true; // to be removed from animation queues\n\n    return this;\n  },\n  rewind: function rewind() {\n    return this.progress(0);\n  },\n  fastforward: function fastforward() {\n    return this.progress(1);\n  },\n  time: function time(t) {\n    var _p = this._private;\n    if (t === undefined) {\n      return _p.progress * _p.duration;\n    } else {\n      return this.progress(t / _p.duration);\n    }\n  },\n  progress: function progress(p) {\n    var _p = this._private;\n    var wasPlaying = _p.playing;\n    if (p === undefined) {\n      return _p.progress;\n    } else {\n      if (wasPlaying) {\n        this.pause();\n      }\n      _p.progress = p;\n      _p.started = false;\n      if (wasPlaying) {\n        this.play();\n      }\n    }\n    return this;\n  },\n  completed: function completed() {\n    return this._private.progress === 1;\n  },\n  reverse: function reverse() {\n    var _p = this._private;\n    var wasPlaying = _p.playing;\n    if (wasPlaying) {\n      this.pause();\n    }\n    _p.progress = 1 - _p.progress;\n    _p.started = false;\n    var swap = function swap(a, b) {\n      var _pa = _p[a];\n      if (_pa == null) {\n        return;\n      }\n      _p[a] = _p[b];\n      _p[b] = _pa;\n    };\n    swap('zoom', 'startZoom');\n    swap('pan', 'startPan');\n    swap('position', 'startPosition');\n\n    // swap styles\n    if (_p.style) {\n      for (var i = 0; i < _p.style.length; i++) {\n        var prop = _p.style[i];\n        var name = prop.name;\n        var startStyleProp = _p.startStyle[name];\n        _p.startStyle[name] = prop;\n        _p.style[i] = startStyleProp;\n      }\n    }\n    if (wasPlaying) {\n      this.play();\n    }\n    return this;\n  },\n  promise: function promise(type) {\n    var _p = this._private;\n    var arr;\n    switch (type) {\n      case 'frame':\n        arr = _p.frames;\n        break;\n      default:\n      case 'complete':\n      case 'completed':\n        arr = _p.completes;\n    }\n    return new Promise$1(function (resolve, reject) {\n      arr.push(function () {\n        resolve();\n      });\n    });\n  }\n});\nanifn.complete = anifn.completed;\nanifn.run = anifn.play;\nanifn.running = anifn.playing;\n\nvar define$3 = {\n  animated: function animated() {\n    return function animatedImpl() {\n      var self = this;\n      var selfIsArrayLike = self.length !== undefined;\n      var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n      var cy = this._private.cy || this;\n      if (!cy.styleEnabled()) {\n        return false;\n      }\n      var ele = all[0];\n      if (ele) {\n        return ele._private.animation.current.length > 0;\n      }\n    };\n  },\n  // animated\n\n  clearQueue: function clearQueue() {\n    return function clearQueueImpl() {\n      var self = this;\n      var selfIsArrayLike = self.length !== undefined;\n      var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n      var cy = this._private.cy || this;\n      if (!cy.styleEnabled()) {\n        return this;\n      }\n      for (var i = 0; i < all.length; i++) {\n        var ele = all[i];\n        ele._private.animation.queue = [];\n      }\n      return this;\n    };\n  },\n  // clearQueue\n\n  delay: function delay() {\n    return function delayImpl(time, complete) {\n      var cy = this._private.cy || this;\n      if (!cy.styleEnabled()) {\n        return this;\n      }\n      return this.animate({\n        delay: time,\n        duration: time,\n        complete: complete\n      });\n    };\n  },\n  // delay\n\n  delayAnimation: function delayAnimation() {\n    return function delayAnimationImpl(time, complete) {\n      var cy = this._private.cy || this;\n      if (!cy.styleEnabled()) {\n        return this;\n      }\n      return this.animation({\n        delay: time,\n        duration: time,\n        complete: complete\n      });\n    };\n  },\n  // delay\n\n  animation: function animation() {\n    return function animationImpl(properties, params) {\n      var self = this;\n      var selfIsArrayLike = self.length !== undefined;\n      var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n      var cy = this._private.cy || this;\n      var isCore = !selfIsArrayLike;\n      var isEles = !isCore;\n      if (!cy.styleEnabled()) {\n        return this;\n      }\n      var style = cy.style();\n      properties = extend({}, properties, params);\n      var propertiesEmpty = Object.keys(properties).length === 0;\n      if (propertiesEmpty) {\n        return new Animation(all[0], properties); // nothing to animate\n      }\n      if (properties.duration === undefined) {\n        properties.duration = 400;\n      }\n      switch (properties.duration) {\n        case 'slow':\n          properties.duration = 600;\n          break;\n        case 'fast':\n          properties.duration = 200;\n          break;\n      }\n      if (isEles) {\n        properties.style = style.getPropsList(properties.style || properties.css);\n        properties.css = undefined;\n      }\n      if (isEles && properties.renderedPosition != null) {\n        var rpos = properties.renderedPosition;\n        var pan = cy.pan();\n        var zoom = cy.zoom();\n        properties.position = renderedToModelPosition(rpos, zoom, pan);\n      }\n\n      // override pan w/ panBy if set\n      if (isCore && properties.panBy != null) {\n        var panBy = properties.panBy;\n        var cyPan = cy.pan();\n        properties.pan = {\n          x: cyPan.x + panBy.x,\n          y: cyPan.y + panBy.y\n        };\n      }\n\n      // override pan w/ center if set\n      var center = properties.center || properties.centre;\n      if (isCore && center != null) {\n        var centerPan = cy.getCenterPan(center.eles, properties.zoom);\n        if (centerPan != null) {\n          properties.pan = centerPan;\n        }\n      }\n\n      // override pan & zoom w/ fit if set\n      if (isCore && properties.fit != null) {\n        var fit = properties.fit;\n        var fitVp = cy.getFitViewport(fit.eles || fit.boundingBox, fit.padding);\n        if (fitVp != null) {\n          properties.pan = fitVp.pan;\n          properties.zoom = fitVp.zoom;\n        }\n      }\n\n      // override zoom (& potentially pan) w/ zoom obj if set\n      if (isCore && plainObject(properties.zoom)) {\n        var vp = cy.getZoomedViewport(properties.zoom);\n        if (vp != null) {\n          if (vp.zoomed) {\n            properties.zoom = vp.zoom;\n          }\n          if (vp.panned) {\n            properties.pan = vp.pan;\n          }\n        } else {\n          properties.zoom = null; // an inavalid zoom (e.g. no delta) gets automatically destroyed\n        }\n      }\n      return new Animation(all[0], properties);\n    };\n  },\n  // animate\n\n  animate: function animate() {\n    return function animateImpl(properties, params) {\n      var self = this;\n      var selfIsArrayLike = self.length !== undefined;\n      var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n      var cy = this._private.cy || this;\n      if (!cy.styleEnabled()) {\n        return this;\n      }\n      if (params) {\n        properties = extend({}, properties, params);\n      }\n\n      // manually hook and run the animation\n      for (var i = 0; i < all.length; i++) {\n        var ele = all[i];\n        var queue = ele.animated() && (properties.queue === undefined || properties.queue);\n        var ani = ele.animation(properties, queue ? {\n          queue: true\n        } : undefined);\n        ani.play();\n      }\n      return this; // chaining\n    };\n  },\n  // animate\n\n  stop: function stop() {\n    return function stopImpl(clearQueue, jumpToEnd) {\n      var self = this;\n      var selfIsArrayLike = self.length !== undefined;\n      var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n      var cy = this._private.cy || this;\n      if (!cy.styleEnabled()) {\n        return this;\n      }\n      for (var i = 0; i < all.length; i++) {\n        var ele = all[i];\n        var _p = ele._private;\n        var anis = _p.animation.current;\n        for (var j = 0; j < anis.length; j++) {\n          var ani = anis[j];\n          var ani_p = ani._private;\n          if (jumpToEnd) {\n            // next iteration of the animation loop, the animation\n            // will go straight to the end and be removed\n            ani_p.duration = 0;\n          }\n        }\n\n        // clear the queue of future animations\n        if (clearQueue) {\n          _p.animation.queue = [];\n        }\n        if (!jumpToEnd) {\n          _p.animation.current = [];\n        }\n      }\n\n      // we have to notify (the animation loop doesn't do it for us on `stop`)\n      cy.notify('draw');\n      return this;\n    };\n  } // stop\n}; // define\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\nvar isArray_1;\nvar hasRequiredIsArray;\n\nfunction requireIsArray () {\n\tif (hasRequiredIsArray) return isArray_1;\n\thasRequiredIsArray = 1;\n\tvar isArray = Array.isArray;\n\n\tisArray_1 = isArray;\n\treturn isArray_1;\n}\n\nvar _isKey;\nvar hasRequired_isKey;\n\nfunction require_isKey () {\n\tif (hasRequired_isKey) return _isKey;\n\thasRequired_isKey = 1;\n\tvar isArray = requireIsArray(),\n\t    isSymbol = requireIsSymbol();\n\n\t/** Used to match property names within property paths. */\n\tvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n\t    reIsPlainProp = /^\\w*$/;\n\n\t/**\n\t * Checks if `value` is a property name and not a property path.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {Object} [object] The object to query keys on.\n\t * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n\t */\n\tfunction isKey(value, object) {\n\t  if (isArray(value)) {\n\t    return false;\n\t  }\n\t  var type = typeof value;\n\t  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n\t      value == null || isSymbol(value)) {\n\t    return true;\n\t  }\n\t  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n\t    (object != null && value in Object(object));\n\t}\n\n\t_isKey = isKey;\n\treturn _isKey;\n}\n\nvar isFunction_1;\nvar hasRequiredIsFunction;\n\nfunction requireIsFunction () {\n\tif (hasRequiredIsFunction) return isFunction_1;\n\thasRequiredIsFunction = 1;\n\tvar baseGetTag = require_baseGetTag(),\n\t    isObject = requireIsObject();\n\n\t/** `Object#toString` result references. */\n\tvar asyncTag = '[object AsyncFunction]',\n\t    funcTag = '[object Function]',\n\t    genTag = '[object GeneratorFunction]',\n\t    proxyTag = '[object Proxy]';\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t  if (!isObject(value)) {\n\t    return false;\n\t  }\n\t  // The use of `Object#toString` avoids issues with the `typeof` operator\n\t  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\t  var tag = baseGetTag(value);\n\t  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n\t}\n\n\tisFunction_1 = isFunction;\n\treturn isFunction_1;\n}\n\nvar _coreJsData;\nvar hasRequired_coreJsData;\n\nfunction require_coreJsData () {\n\tif (hasRequired_coreJsData) return _coreJsData;\n\thasRequired_coreJsData = 1;\n\tvar root = require_root();\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t_coreJsData = coreJsData;\n\treturn _coreJsData;\n}\n\nvar _isMasked;\nvar hasRequired_isMasked;\n\nfunction require_isMasked () {\n\tif (hasRequired_isMasked) return _isMasked;\n\thasRequired_isMasked = 1;\n\tvar coreJsData = require_coreJsData();\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t  return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t  return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t_isMasked = isMasked;\n\treturn _isMasked;\n}\n\n/** Used for built-in method references. */\n\nvar _toSource;\nvar hasRequired_toSource;\n\nfunction require_toSource () {\n\tif (hasRequired_toSource) return _toSource;\n\thasRequired_toSource = 1;\n\tvar funcProto = Function.prototype;\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to convert.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t  if (func != null) {\n\t    try {\n\t      return funcToString.call(func);\n\t    } catch (e) {}\n\t    try {\n\t      return (func + '');\n\t    } catch (e) {}\n\t  }\n\t  return '';\n\t}\n\n\t_toSource = toSource;\n\treturn _toSource;\n}\n\nvar _baseIsNative;\nvar hasRequired_baseIsNative;\n\nfunction require_baseIsNative () {\n\tif (hasRequired_baseIsNative) return _baseIsNative;\n\thasRequired_baseIsNative = 1;\n\tvar isFunction = requireIsFunction(),\n\t    isMasked = require_isMasked(),\n\t    isObject = requireIsObject(),\n\t    toSource = require_toSource();\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used for built-in method references. */\n\tvar funcProto = Function.prototype,\n\t    objectProto = Object.prototype;\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t *  else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t  if (!isObject(value) || isMasked(value)) {\n\t    return false;\n\t  }\n\t  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n\t  return pattern.test(toSource(value));\n\t}\n\n\t_baseIsNative = baseIsNative;\n\treturn _baseIsNative;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\nvar _getValue;\nvar hasRequired_getValue;\n\nfunction require_getValue () {\n\tif (hasRequired_getValue) return _getValue;\n\thasRequired_getValue = 1;\n\tfunction getValue(object, key) {\n\t  return object == null ? undefined : object[key];\n\t}\n\n\t_getValue = getValue;\n\treturn _getValue;\n}\n\nvar _getNative;\nvar hasRequired_getNative;\n\nfunction require_getNative () {\n\tif (hasRequired_getNative) return _getNative;\n\thasRequired_getNative = 1;\n\tvar baseIsNative = require_baseIsNative(),\n\t    getValue = require_getValue();\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t  var value = getValue(object, key);\n\t  return baseIsNative(value) ? value : undefined;\n\t}\n\n\t_getNative = getNative;\n\treturn _getNative;\n}\n\nvar _nativeCreate;\nvar hasRequired_nativeCreate;\n\nfunction require_nativeCreate () {\n\tif (hasRequired_nativeCreate) return _nativeCreate;\n\thasRequired_nativeCreate = 1;\n\tvar getNative = require_getNative();\n\n\t/* Built-in method references that are verified to be native. */\n\tvar nativeCreate = getNative(Object, 'create');\n\n\t_nativeCreate = nativeCreate;\n\treturn _nativeCreate;\n}\n\nvar _hashClear;\nvar hasRequired_hashClear;\n\nfunction require_hashClear () {\n\tif (hasRequired_hashClear) return _hashClear;\n\thasRequired_hashClear = 1;\n\tvar nativeCreate = require_nativeCreate();\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t  this.size = 0;\n\t}\n\n\t_hashClear = hashClear;\n\treturn _hashClear;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\nvar _hashDelete;\nvar hasRequired_hashDelete;\n\nfunction require_hashDelete () {\n\tif (hasRequired_hashDelete) return _hashDelete;\n\thasRequired_hashDelete = 1;\n\tfunction hashDelete(key) {\n\t  var result = this.has(key) && delete this.__data__[key];\n\t  this.size -= result ? 1 : 0;\n\t  return result;\n\t}\n\n\t_hashDelete = hashDelete;\n\treturn _hashDelete;\n}\n\nvar _hashGet;\nvar hasRequired_hashGet;\n\nfunction require_hashGet () {\n\tif (hasRequired_hashGet) return _hashGet;\n\thasRequired_hashGet = 1;\n\tvar nativeCreate = require_nativeCreate();\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t  var data = this.__data__;\n\t  if (nativeCreate) {\n\t    var result = data[key];\n\t    return result === HASH_UNDEFINED ? undefined : result;\n\t  }\n\t  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t_hashGet = hashGet;\n\treturn _hashGet;\n}\n\nvar _hashHas;\nvar hasRequired_hashHas;\n\nfunction require_hashHas () {\n\tif (hasRequired_hashHas) return _hashHas;\n\thasRequired_hashHas = 1;\n\tvar nativeCreate = require_nativeCreate();\n\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t  var data = this.__data__;\n\t  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n\t}\n\n\t_hashHas = hashHas;\n\treturn _hashHas;\n}\n\nvar _hashSet;\nvar hasRequired_hashSet;\n\nfunction require_hashSet () {\n\tif (hasRequired_hashSet) return _hashSet;\n\thasRequired_hashSet = 1;\n\tvar nativeCreate = require_nativeCreate();\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t  var data = this.__data__;\n\t  this.size += this.has(key) ? 0 : 1;\n\t  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t  return this;\n\t}\n\n\t_hashSet = hashSet;\n\treturn _hashSet;\n}\n\nvar _Hash;\nvar hasRequired_Hash;\n\nfunction require_Hash () {\n\tif (hasRequired_Hash) return _Hash;\n\thasRequired_Hash = 1;\n\tvar hashClear = require_hashClear(),\n\t    hashDelete = require_hashDelete(),\n\t    hashGet = require_hashGet(),\n\t    hashHas = require_hashHas(),\n\t    hashSet = require_hashSet();\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t  var index = -1,\n\t      length = entries == null ? 0 : entries.length;\n\n\t  this.clear();\n\t  while (++index < length) {\n\t    var entry = entries[index];\n\t    this.set(entry[0], entry[1]);\n\t  }\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t_Hash = Hash;\n\treturn _Hash;\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\nvar _listCacheClear;\nvar hasRequired_listCacheClear;\n\nfunction require_listCacheClear () {\n\tif (hasRequired_listCacheClear) return _listCacheClear;\n\thasRequired_listCacheClear = 1;\n\tfunction listCacheClear() {\n\t  this.__data__ = [];\n\t  this.size = 0;\n\t}\n\n\t_listCacheClear = listCacheClear;\n\treturn _listCacheClear;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\nvar eq_1;\nvar hasRequiredEq;\n\nfunction requireEq () {\n\tif (hasRequiredEq) return eq_1;\n\thasRequiredEq = 1;\n\tfunction eq(value, other) {\n\t  return value === other || (value !== value && other !== other);\n\t}\n\n\teq_1 = eq;\n\treturn eq_1;\n}\n\nvar _assocIndexOf;\nvar hasRequired_assocIndexOf;\n\nfunction require_assocIndexOf () {\n\tif (hasRequired_assocIndexOf) return _assocIndexOf;\n\thasRequired_assocIndexOf = 1;\n\tvar eq = requireEq();\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t  var length = array.length;\n\t  while (length--) {\n\t    if (eq(array[length][0], key)) {\n\t      return length;\n\t    }\n\t  }\n\t  return -1;\n\t}\n\n\t_assocIndexOf = assocIndexOf;\n\treturn _assocIndexOf;\n}\n\nvar _listCacheDelete;\nvar hasRequired_listCacheDelete;\n\nfunction require_listCacheDelete () {\n\tif (hasRequired_listCacheDelete) return _listCacheDelete;\n\thasRequired_listCacheDelete = 1;\n\tvar assocIndexOf = require_assocIndexOf();\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype;\n\n\t/** Built-in value references. */\n\tvar splice = arrayProto.splice;\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t  var data = this.__data__,\n\t      index = assocIndexOf(data, key);\n\n\t  if (index < 0) {\n\t    return false;\n\t  }\n\t  var lastIndex = data.length - 1;\n\t  if (index == lastIndex) {\n\t    data.pop();\n\t  } else {\n\t    splice.call(data, index, 1);\n\t  }\n\t  --this.size;\n\t  return true;\n\t}\n\n\t_listCacheDelete = listCacheDelete;\n\treturn _listCacheDelete;\n}\n\nvar _listCacheGet;\nvar hasRequired_listCacheGet;\n\nfunction require_listCacheGet () {\n\tif (hasRequired_listCacheGet) return _listCacheGet;\n\thasRequired_listCacheGet = 1;\n\tvar assocIndexOf = require_assocIndexOf();\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t  var data = this.__data__,\n\t      index = assocIndexOf(data, key);\n\n\t  return index < 0 ? undefined : data[index][1];\n\t}\n\n\t_listCacheGet = listCacheGet;\n\treturn _listCacheGet;\n}\n\nvar _listCacheHas;\nvar hasRequired_listCacheHas;\n\nfunction require_listCacheHas () {\n\tif (hasRequired_listCacheHas) return _listCacheHas;\n\thasRequired_listCacheHas = 1;\n\tvar assocIndexOf = require_assocIndexOf();\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t  return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t_listCacheHas = listCacheHas;\n\treturn _listCacheHas;\n}\n\nvar _listCacheSet;\nvar hasRequired_listCacheSet;\n\nfunction require_listCacheSet () {\n\tif (hasRequired_listCacheSet) return _listCacheSet;\n\thasRequired_listCacheSet = 1;\n\tvar assocIndexOf = require_assocIndexOf();\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t  var data = this.__data__,\n\t      index = assocIndexOf(data, key);\n\n\t  if (index < 0) {\n\t    ++this.size;\n\t    data.push([key, value]);\n\t  } else {\n\t    data[index][1] = value;\n\t  }\n\t  return this;\n\t}\n\n\t_listCacheSet = listCacheSet;\n\treturn _listCacheSet;\n}\n\nvar _ListCache;\nvar hasRequired_ListCache;\n\nfunction require_ListCache () {\n\tif (hasRequired_ListCache) return _ListCache;\n\thasRequired_ListCache = 1;\n\tvar listCacheClear = require_listCacheClear(),\n\t    listCacheDelete = require_listCacheDelete(),\n\t    listCacheGet = require_listCacheGet(),\n\t    listCacheHas = require_listCacheHas(),\n\t    listCacheSet = require_listCacheSet();\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t  var index = -1,\n\t      length = entries == null ? 0 : entries.length;\n\n\t  this.clear();\n\t  while (++index < length) {\n\t    var entry = entries[index];\n\t    this.set(entry[0], entry[1]);\n\t  }\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t_ListCache = ListCache;\n\treturn _ListCache;\n}\n\nvar _Map;\nvar hasRequired_Map;\n\nfunction require_Map () {\n\tif (hasRequired_Map) return _Map;\n\thasRequired_Map = 1;\n\tvar getNative = require_getNative(),\n\t    root = require_root();\n\n\t/* Built-in method references that are verified to be native. */\n\tvar Map = getNative(root, 'Map');\n\n\t_Map = Map;\n\treturn _Map;\n}\n\nvar _mapCacheClear;\nvar hasRequired_mapCacheClear;\n\nfunction require_mapCacheClear () {\n\tif (hasRequired_mapCacheClear) return _mapCacheClear;\n\thasRequired_mapCacheClear = 1;\n\tvar Hash = require_Hash(),\n\t    ListCache = require_ListCache(),\n\t    Map = require_Map();\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t  this.size = 0;\n\t  this.__data__ = {\n\t    'hash': new Hash,\n\t    'map': new (Map || ListCache),\n\t    'string': new Hash\n\t  };\n\t}\n\n\t_mapCacheClear = mapCacheClear;\n\treturn _mapCacheClear;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\nvar _isKeyable;\nvar hasRequired_isKeyable;\n\nfunction require_isKeyable () {\n\tif (hasRequired_isKeyable) return _isKeyable;\n\thasRequired_isKeyable = 1;\n\tfunction isKeyable(value) {\n\t  var type = typeof value;\n\t  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t    ? (value !== '__proto__')\n\t    : (value === null);\n\t}\n\n\t_isKeyable = isKeyable;\n\treturn _isKeyable;\n}\n\nvar _getMapData;\nvar hasRequired_getMapData;\n\nfunction require_getMapData () {\n\tif (hasRequired_getMapData) return _getMapData;\n\thasRequired_getMapData = 1;\n\tvar isKeyable = require_isKeyable();\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t  var data = map.__data__;\n\t  return isKeyable(key)\n\t    ? data[typeof key == 'string' ? 'string' : 'hash']\n\t    : data.map;\n\t}\n\n\t_getMapData = getMapData;\n\treturn _getMapData;\n}\n\nvar _mapCacheDelete;\nvar hasRequired_mapCacheDelete;\n\nfunction require_mapCacheDelete () {\n\tif (hasRequired_mapCacheDelete) return _mapCacheDelete;\n\thasRequired_mapCacheDelete = 1;\n\tvar getMapData = require_getMapData();\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t  var result = getMapData(this, key)['delete'](key);\n\t  this.size -= result ? 1 : 0;\n\t  return result;\n\t}\n\n\t_mapCacheDelete = mapCacheDelete;\n\treturn _mapCacheDelete;\n}\n\nvar _mapCacheGet;\nvar hasRequired_mapCacheGet;\n\nfunction require_mapCacheGet () {\n\tif (hasRequired_mapCacheGet) return _mapCacheGet;\n\thasRequired_mapCacheGet = 1;\n\tvar getMapData = require_getMapData();\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t  return getMapData(this, key).get(key);\n\t}\n\n\t_mapCacheGet = mapCacheGet;\n\treturn _mapCacheGet;\n}\n\nvar _mapCacheHas;\nvar hasRequired_mapCacheHas;\n\nfunction require_mapCacheHas () {\n\tif (hasRequired_mapCacheHas) return _mapCacheHas;\n\thasRequired_mapCacheHas = 1;\n\tvar getMapData = require_getMapData();\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t  return getMapData(this, key).has(key);\n\t}\n\n\t_mapCacheHas = mapCacheHas;\n\treturn _mapCacheHas;\n}\n\nvar _mapCacheSet;\nvar hasRequired_mapCacheSet;\n\nfunction require_mapCacheSet () {\n\tif (hasRequired_mapCacheSet) return _mapCacheSet;\n\thasRequired_mapCacheSet = 1;\n\tvar getMapData = require_getMapData();\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t  var data = getMapData(this, key),\n\t      size = data.size;\n\n\t  data.set(key, value);\n\t  this.size += data.size == size ? 0 : 1;\n\t  return this;\n\t}\n\n\t_mapCacheSet = mapCacheSet;\n\treturn _mapCacheSet;\n}\n\nvar _MapCache;\nvar hasRequired_MapCache;\n\nfunction require_MapCache () {\n\tif (hasRequired_MapCache) return _MapCache;\n\thasRequired_MapCache = 1;\n\tvar mapCacheClear = require_mapCacheClear(),\n\t    mapCacheDelete = require_mapCacheDelete(),\n\t    mapCacheGet = require_mapCacheGet(),\n\t    mapCacheHas = require_mapCacheHas(),\n\t    mapCacheSet = require_mapCacheSet();\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t  var index = -1,\n\t      length = entries == null ? 0 : entries.length;\n\n\t  this.clear();\n\t  while (++index < length) {\n\t    var entry = entries[index];\n\t    this.set(entry[0], entry[1]);\n\t  }\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t_MapCache = MapCache;\n\treturn _MapCache;\n}\n\nvar memoize_1;\nvar hasRequiredMemoize;\n\nfunction requireMemoize () {\n\tif (hasRequiredMemoize) return memoize_1;\n\thasRequiredMemoize = 1;\n\tvar MapCache = require_MapCache();\n\n\t/** Error message constants. */\n\tvar FUNC_ERROR_TEXT = 'Expected a function';\n\n\t/**\n\t * Creates a function that memoizes the result of `func`. If `resolver` is\n\t * provided, it determines the cache key for storing the result based on the\n\t * arguments provided to the memoized function. By default, the first argument\n\t * provided to the memoized function is used as the map cache key. The `func`\n\t * is invoked with the `this` binding of the memoized function.\n\t *\n\t * **Note:** The cache is exposed as the `cache` property on the memoized\n\t * function. Its creation may be customized by replacing the `_.memoize.Cache`\n\t * constructor with one whose instances implement the\n\t * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n\t * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Function\n\t * @param {Function} func The function to have its output memoized.\n\t * @param {Function} [resolver] The function to resolve the cache key.\n\t * @returns {Function} Returns the new memoized function.\n\t * @example\n\t *\n\t * var object = { 'a': 1, 'b': 2 };\n\t * var other = { 'c': 3, 'd': 4 };\n\t *\n\t * var values = _.memoize(_.values);\n\t * values(object);\n\t * // => [1, 2]\n\t *\n\t * values(other);\n\t * // => [3, 4]\n\t *\n\t * object.a = 2;\n\t * values(object);\n\t * // => [1, 2]\n\t *\n\t * // Modify the result cache.\n\t * values.cache.set(object, ['a', 'b']);\n\t * values(object);\n\t * // => ['a', 'b']\n\t *\n\t * // Replace `_.memoize.Cache`.\n\t * _.memoize.Cache = WeakMap;\n\t */\n\tfunction memoize(func, resolver) {\n\t  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n\t    throw new TypeError(FUNC_ERROR_TEXT);\n\t  }\n\t  var memoized = function() {\n\t    var args = arguments,\n\t        key = resolver ? resolver.apply(this, args) : args[0],\n\t        cache = memoized.cache;\n\n\t    if (cache.has(key)) {\n\t      return cache.get(key);\n\t    }\n\t    var result = func.apply(this, args);\n\t    memoized.cache = cache.set(key, result) || cache;\n\t    return result;\n\t  };\n\t  memoized.cache = new (memoize.Cache || MapCache);\n\t  return memoized;\n\t}\n\n\t// Expose `MapCache`.\n\tmemoize.Cache = MapCache;\n\n\tmemoize_1 = memoize;\n\treturn memoize_1;\n}\n\nvar _memoizeCapped;\nvar hasRequired_memoizeCapped;\n\nfunction require_memoizeCapped () {\n\tif (hasRequired_memoizeCapped) return _memoizeCapped;\n\thasRequired_memoizeCapped = 1;\n\tvar memoize = requireMemoize();\n\n\t/** Used as the maximum memoize cache size. */\n\tvar MAX_MEMOIZE_SIZE = 500;\n\n\t/**\n\t * A specialized version of `_.memoize` which clears the memoized function's\n\t * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n\t *\n\t * @private\n\t * @param {Function} func The function to have its output memoized.\n\t * @returns {Function} Returns the new memoized function.\n\t */\n\tfunction memoizeCapped(func) {\n\t  var result = memoize(func, function(key) {\n\t    if (cache.size === MAX_MEMOIZE_SIZE) {\n\t      cache.clear();\n\t    }\n\t    return key;\n\t  });\n\n\t  var cache = result.cache;\n\t  return result;\n\t}\n\n\t_memoizeCapped = memoizeCapped;\n\treturn _memoizeCapped;\n}\n\nvar _stringToPath;\nvar hasRequired_stringToPath;\n\nfunction require_stringToPath () {\n\tif (hasRequired_stringToPath) return _stringToPath;\n\thasRequired_stringToPath = 1;\n\tvar memoizeCapped = require_memoizeCapped();\n\n\t/** Used to match property names within property paths. */\n\tvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n\t/** Used to match backslashes in property paths. */\n\tvar reEscapeChar = /\\\\(\\\\)?/g;\n\n\t/**\n\t * Converts `string` to a property path array.\n\t *\n\t * @private\n\t * @param {string} string The string to convert.\n\t * @returns {Array} Returns the property path array.\n\t */\n\tvar stringToPath = memoizeCapped(function(string) {\n\t  var result = [];\n\t  if (string.charCodeAt(0) === 46 /* . */) {\n\t    result.push('');\n\t  }\n\t  string.replace(rePropName, function(match, number, quote, subString) {\n\t    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n\t  });\n\t  return result;\n\t});\n\n\t_stringToPath = stringToPath;\n\treturn _stringToPath;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n\nvar _arrayMap;\nvar hasRequired_arrayMap;\n\nfunction require_arrayMap () {\n\tif (hasRequired_arrayMap) return _arrayMap;\n\thasRequired_arrayMap = 1;\n\tfunction arrayMap(array, iteratee) {\n\t  var index = -1,\n\t      length = array == null ? 0 : array.length,\n\t      result = Array(length);\n\n\t  while (++index < length) {\n\t    result[index] = iteratee(array[index], index, array);\n\t  }\n\t  return result;\n\t}\n\n\t_arrayMap = arrayMap;\n\treturn _arrayMap;\n}\n\nvar _baseToString;\nvar hasRequired_baseToString;\n\nfunction require_baseToString () {\n\tif (hasRequired_baseToString) return _baseToString;\n\thasRequired_baseToString = 1;\n\tvar Symbol = require_Symbol(),\n\t    arrayMap = require_arrayMap(),\n\t    isArray = requireIsArray(),\n\t    isSymbol = requireIsSymbol();\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n\t/**\n\t * The base implementation of `_.toString` which doesn't convert nullish\n\t * values to empty strings.\n\t *\n\t * @private\n\t * @param {*} value The value to process.\n\t * @returns {string} Returns the string.\n\t */\n\tfunction baseToString(value) {\n\t  // Exit early for strings to avoid a performance hit in some environments.\n\t  if (typeof value == 'string') {\n\t    return value;\n\t  }\n\t  if (isArray(value)) {\n\t    // Recursively convert values (susceptible to call stack limits).\n\t    return arrayMap(value, baseToString) + '';\n\t  }\n\t  if (isSymbol(value)) {\n\t    return symbolToString ? symbolToString.call(value) : '';\n\t  }\n\t  var result = (value + '');\n\t  return (result == '0' && (1 / value) == -Infinity) ? '-0' : result;\n\t}\n\n\t_baseToString = baseToString;\n\treturn _baseToString;\n}\n\nvar toString_1;\nvar hasRequiredToString;\n\nfunction requireToString () {\n\tif (hasRequiredToString) return toString_1;\n\thasRequiredToString = 1;\n\tvar baseToString = require_baseToString();\n\n\t/**\n\t * Converts `value` to a string. An empty string is returned for `null`\n\t * and `undefined` values. The sign of `-0` is preserved.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to convert.\n\t * @returns {string} Returns the converted string.\n\t * @example\n\t *\n\t * _.toString(null);\n\t * // => ''\n\t *\n\t * _.toString(-0);\n\t * // => '-0'\n\t *\n\t * _.toString([1, 2, 3]);\n\t * // => '1,2,3'\n\t */\n\tfunction toString(value) {\n\t  return value == null ? '' : baseToString(value);\n\t}\n\n\ttoString_1 = toString;\n\treturn toString_1;\n}\n\nvar _castPath;\nvar hasRequired_castPath;\n\nfunction require_castPath () {\n\tif (hasRequired_castPath) return _castPath;\n\thasRequired_castPath = 1;\n\tvar isArray = requireIsArray(),\n\t    isKey = require_isKey(),\n\t    stringToPath = require_stringToPath(),\n\t    toString = requireToString();\n\n\t/**\n\t * Casts `value` to a path array if it's not one.\n\t *\n\t * @private\n\t * @param {*} value The value to inspect.\n\t * @param {Object} [object] The object to query keys on.\n\t * @returns {Array} Returns the cast property path array.\n\t */\n\tfunction castPath(value, object) {\n\t  if (isArray(value)) {\n\t    return value;\n\t  }\n\t  return isKey(value, object) ? [value] : stringToPath(toString(value));\n\t}\n\n\t_castPath = castPath;\n\treturn _castPath;\n}\n\nvar _toKey;\nvar hasRequired_toKey;\n\nfunction require_toKey () {\n\tif (hasRequired_toKey) return _toKey;\n\thasRequired_toKey = 1;\n\tvar isSymbol = requireIsSymbol();\n\n\t/**\n\t * Converts `value` to a string key if it's not a string or symbol.\n\t *\n\t * @private\n\t * @param {*} value The value to inspect.\n\t * @returns {string|symbol} Returns the key.\n\t */\n\tfunction toKey(value) {\n\t  if (typeof value == 'string' || isSymbol(value)) {\n\t    return value;\n\t  }\n\t  var result = (value + '');\n\t  return (result == '0' && (1 / value) == -Infinity) ? '-0' : result;\n\t}\n\n\t_toKey = toKey;\n\treturn _toKey;\n}\n\nvar _baseGet;\nvar hasRequired_baseGet;\n\nfunction require_baseGet () {\n\tif (hasRequired_baseGet) return _baseGet;\n\thasRequired_baseGet = 1;\n\tvar castPath = require_castPath(),\n\t    toKey = require_toKey();\n\n\t/**\n\t * The base implementation of `_.get` without support for default values.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path of the property to get.\n\t * @returns {*} Returns the resolved value.\n\t */\n\tfunction baseGet(object, path) {\n\t  path = castPath(path, object);\n\n\t  var index = 0,\n\t      length = path.length;\n\n\t  while (object != null && index < length) {\n\t    object = object[toKey(path[index++])];\n\t  }\n\t  return (index && index == length) ? object : undefined;\n\t}\n\n\t_baseGet = baseGet;\n\treturn _baseGet;\n}\n\nvar get_1;\nvar hasRequiredGet;\n\nfunction requireGet () {\n\tif (hasRequiredGet) return get_1;\n\thasRequiredGet = 1;\n\tvar baseGet = require_baseGet();\n\n\t/**\n\t * Gets the value at `path` of `object`. If the resolved value is\n\t * `undefined`, the `defaultValue` is returned in its place.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.7.0\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path of the property to get.\n\t * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n\t * @returns {*} Returns the resolved value.\n\t * @example\n\t *\n\t * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n\t *\n\t * _.get(object, 'a[0].b.c');\n\t * // => 3\n\t *\n\t * _.get(object, ['a', '0', 'b', 'c']);\n\t * // => 3\n\t *\n\t * _.get(object, 'a.b.c', 'default');\n\t * // => 'default'\n\t */\n\tfunction get(object, path, defaultValue) {\n\t  var result = object == null ? undefined : baseGet(object, path);\n\t  return result === undefined ? defaultValue : result;\n\t}\n\n\tget_1 = get;\n\treturn get_1;\n}\n\nvar getExports = requireGet();\nvar get = /*@__PURE__*/getDefaultExportFromCjs(getExports);\n\nvar _defineProperty;\nvar hasRequired_defineProperty;\n\nfunction require_defineProperty () {\n\tif (hasRequired_defineProperty) return _defineProperty;\n\thasRequired_defineProperty = 1;\n\tvar getNative = require_getNative();\n\n\tvar defineProperty = (function() {\n\t  try {\n\t    var func = getNative(Object, 'defineProperty');\n\t    func({}, '', {});\n\t    return func;\n\t  } catch (e) {}\n\t}());\n\n\t_defineProperty = defineProperty;\n\treturn _defineProperty;\n}\n\nvar _baseAssignValue;\nvar hasRequired_baseAssignValue;\n\nfunction require_baseAssignValue () {\n\tif (hasRequired_baseAssignValue) return _baseAssignValue;\n\thasRequired_baseAssignValue = 1;\n\tvar defineProperty = require_defineProperty();\n\n\t/**\n\t * The base implementation of `assignValue` and `assignMergeValue` without\n\t * value checks.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction baseAssignValue(object, key, value) {\n\t  if (key == '__proto__' && defineProperty) {\n\t    defineProperty(object, key, {\n\t      'configurable': true,\n\t      'enumerable': true,\n\t      'value': value,\n\t      'writable': true\n\t    });\n\t  } else {\n\t    object[key] = value;\n\t  }\n\t}\n\n\t_baseAssignValue = baseAssignValue;\n\treturn _baseAssignValue;\n}\n\nvar _assignValue;\nvar hasRequired_assignValue;\n\nfunction require_assignValue () {\n\tif (hasRequired_assignValue) return _assignValue;\n\thasRequired_assignValue = 1;\n\tvar baseAssignValue = require_baseAssignValue(),\n\t    eq = requireEq();\n\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t  var objValue = object[key];\n\t  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t      (value === undefined && !(key in object))) {\n\t    baseAssignValue(object, key, value);\n\t  }\n\t}\n\n\t_assignValue = assignValue;\n\treturn _assignValue;\n}\n\n/** Used as references for various `Number` constants. */\n\nvar _isIndex;\nvar hasRequired_isIndex;\n\nfunction require_isIndex () {\n\tif (hasRequired_isIndex) return _isIndex;\n\thasRequired_isIndex = 1;\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t  var type = typeof value;\n\t  length = length == null ? MAX_SAFE_INTEGER : length;\n\n\t  return !!length &&\n\t    (type == 'number' ||\n\t      (type != 'symbol' && reIsUint.test(value))) &&\n\t        (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t_isIndex = isIndex;\n\treturn _isIndex;\n}\n\nvar _baseSet;\nvar hasRequired_baseSet;\n\nfunction require_baseSet () {\n\tif (hasRequired_baseSet) return _baseSet;\n\thasRequired_baseSet = 1;\n\tvar assignValue = require_assignValue(),\n\t    castPath = require_castPath(),\n\t    isIndex = require_isIndex(),\n\t    isObject = requireIsObject(),\n\t    toKey = require_toKey();\n\n\t/**\n\t * The base implementation of `_.set`.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {Array|string} path The path of the property to set.\n\t * @param {*} value The value to set.\n\t * @param {Function} [customizer] The function to customize path creation.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseSet(object, path, value, customizer) {\n\t  if (!isObject(object)) {\n\t    return object;\n\t  }\n\t  path = castPath(path, object);\n\n\t  var index = -1,\n\t      length = path.length,\n\t      lastIndex = length - 1,\n\t      nested = object;\n\n\t  while (nested != null && ++index < length) {\n\t    var key = toKey(path[index]),\n\t        newValue = value;\n\n\t    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n\t      return object;\n\t    }\n\n\t    if (index != lastIndex) {\n\t      var objValue = nested[key];\n\t      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n\t      if (newValue === undefined) {\n\t        newValue = isObject(objValue)\n\t          ? objValue\n\t          : (isIndex(path[index + 1]) ? [] : {});\n\t      }\n\t    }\n\t    assignValue(nested, key, newValue);\n\t    nested = nested[key];\n\t  }\n\t  return object;\n\t}\n\n\t_baseSet = baseSet;\n\treturn _baseSet;\n}\n\nvar set_1;\nvar hasRequiredSet;\n\nfunction requireSet () {\n\tif (hasRequiredSet) return set_1;\n\thasRequiredSet = 1;\n\tvar baseSet = require_baseSet();\n\n\t/**\n\t * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n\t * it's created. Arrays are created for missing index properties while objects\n\t * are created for all other missing properties. Use `_.setWith` to customize\n\t * `path` creation.\n\t *\n\t * **Note:** This method mutates `object`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.7.0\n\t * @category Object\n\t * @param {Object} object The object to modify.\n\t * @param {Array|string} path The path of the property to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns `object`.\n\t * @example\n\t *\n\t * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n\t *\n\t * _.set(object, 'a[0].b.c', 4);\n\t * console.log(object.a[0].b.c);\n\t * // => 4\n\t *\n\t * _.set(object, ['x', '0', 'y', 'z'], 5);\n\t * console.log(object.x[0].y.z);\n\t * // => 5\n\t */\n\tfunction set(object, path, value) {\n\t  return object == null ? object : baseSet(object, path, value);\n\t}\n\n\tset_1 = set;\n\treturn set_1;\n}\n\nvar setExports = requireSet();\nvar set = /*@__PURE__*/getDefaultExportFromCjs(setExports);\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n\nvar _copyArray;\nvar hasRequired_copyArray;\n\nfunction require_copyArray () {\n\tif (hasRequired_copyArray) return _copyArray;\n\thasRequired_copyArray = 1;\n\tfunction copyArray(source, array) {\n\t  var index = -1,\n\t      length = source.length;\n\n\t  array || (array = Array(length));\n\t  while (++index < length) {\n\t    array[index] = source[index];\n\t  }\n\t  return array;\n\t}\n\n\t_copyArray = copyArray;\n\treturn _copyArray;\n}\n\nvar toPath_1;\nvar hasRequiredToPath;\n\nfunction requireToPath () {\n\tif (hasRequiredToPath) return toPath_1;\n\thasRequiredToPath = 1;\n\tvar arrayMap = require_arrayMap(),\n\t    copyArray = require_copyArray(),\n\t    isArray = requireIsArray(),\n\t    isSymbol = requireIsSymbol(),\n\t    stringToPath = require_stringToPath(),\n\t    toKey = require_toKey(),\n\t    toString = requireToString();\n\n\t/**\n\t * Converts `value` to a property path array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Util\n\t * @param {*} value The value to convert.\n\t * @returns {Array} Returns the new property path array.\n\t * @example\n\t *\n\t * _.toPath('a.b.c');\n\t * // => ['a', 'b', 'c']\n\t *\n\t * _.toPath('a[0].b.c');\n\t * // => ['a', '0', 'b', 'c']\n\t */\n\tfunction toPath(value) {\n\t  if (isArray(value)) {\n\t    return arrayMap(value, toKey);\n\t  }\n\t  return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n\t}\n\n\ttoPath_1 = toPath;\n\treturn toPath_1;\n}\n\nvar toPathExports = requireToPath();\nvar toPath = /*@__PURE__*/getDefaultExportFromCjs(toPathExports);\n\nvar define$2 = {\n  // access data field\n  data: function data(params) {\n    var defaults = {\n      field: 'data',\n      bindingEvent: 'data',\n      allowBinding: false,\n      allowSetting: false,\n      allowGetting: false,\n      settingEvent: 'data',\n      settingTriggersEvent: false,\n      triggerFnName: 'trigger',\n      immutableKeys: {},\n      // key => true if immutable\n      updateStyle: false,\n      beforeGet: function beforeGet(self) {},\n      beforeSet: function beforeSet(self, obj) {},\n      onSet: function onSet(self) {},\n      canSet: function canSet(self) {\n        return true;\n      }\n    };\n    params = extend({}, defaults, params);\n    return function dataImpl(name, value) {\n      var p = params;\n      var self = this;\n      var selfIsArrayLike = self.length !== undefined;\n      var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n      var single = selfIsArrayLike ? self[0] : self;\n\n      // .data('foo', ...)\n      if (string(name)) {\n        // set or get property\n        var isPathLike = name.indexOf('.') !== -1; // there might be a normal field with a dot \n        var path = isPathLike && toPath(name);\n\n        // .data('foo')\n        if (p.allowGetting && value === undefined) {\n          // get\n\n          var ret;\n          if (single) {\n            p.beforeGet(single);\n\n            // check if it's path and a field with the same name doesn't exist\n            if (path && single._private[p.field][name] === undefined) {\n              ret = get(single._private[p.field], path);\n            } else {\n              ret = single._private[p.field][name];\n            }\n          }\n          return ret;\n\n          // .data('foo', 'bar')\n        } else if (p.allowSetting && value !== undefined) {\n          // set\n          var valid = !p.immutableKeys[name];\n          if (valid) {\n            var change = _defineProperty$1({}, name, value);\n            p.beforeSet(self, change);\n            for (var i = 0, l = all.length; i < l; i++) {\n              var ele = all[i];\n              if (p.canSet(ele)) {\n                if (path && single._private[p.field][name] === undefined) {\n                  set(ele._private[p.field], path, value);\n                } else {\n                  ele._private[p.field][name] = value;\n                }\n              }\n            }\n\n            // update mappers if asked\n            if (p.updateStyle) {\n              self.updateStyle();\n            }\n\n            // call onSet callback\n            p.onSet(self);\n            if (p.settingTriggersEvent) {\n              self[p.triggerFnName](p.settingEvent);\n            }\n          }\n        }\n\n        // .data({ 'foo': 'bar' })\n      } else if (p.allowSetting && plainObject(name)) {\n        // extend\n        var obj = name;\n        var k, v;\n        var keys = Object.keys(obj);\n        p.beforeSet(self, obj);\n        for (var _i = 0; _i < keys.length; _i++) {\n          k = keys[_i];\n          v = obj[k];\n          var _valid = !p.immutableKeys[k];\n          if (_valid) {\n            for (var j = 0; j < all.length; j++) {\n              var _ele = all[j];\n              if (p.canSet(_ele)) {\n                _ele._private[p.field][k] = v;\n              }\n            }\n          }\n        }\n\n        // update mappers if asked\n        if (p.updateStyle) {\n          self.updateStyle();\n        }\n\n        // call onSet callback\n        p.onSet(self);\n        if (p.settingTriggersEvent) {\n          self[p.triggerFnName](p.settingEvent);\n        }\n\n        // .data(function(){ ... })\n      } else if (p.allowBinding && fn$6(name)) {\n        // bind to event\n        var fn = name;\n        self.on(p.bindingEvent, fn);\n\n        // .data()\n      } else if (p.allowGetting && name === undefined) {\n        // get whole object\n        var _ret;\n        if (single) {\n          p.beforeGet(single);\n          _ret = single._private[p.field];\n        }\n        return _ret;\n      }\n      return self; // maintain chainability\n    }; // function\n  },\n  // data\n\n  // remove data field\n  removeData: function removeData(params) {\n    var defaults = {\n      field: 'data',\n      event: 'data',\n      triggerFnName: 'trigger',\n      triggerEvent: false,\n      immutableKeys: {} // key => true if immutable\n    };\n    params = extend({}, defaults, params);\n    return function removeDataImpl(names) {\n      var p = params;\n      var self = this;\n      var selfIsArrayLike = self.length !== undefined;\n      var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n      // .removeData('foo bar')\n      if (string(names)) {\n        // then get the list of keys, and delete them\n        var keys = names.split(/\\s+/);\n        var l = keys.length;\n        for (var i = 0; i < l; i++) {\n          // delete each non-empty key\n          var key = keys[i];\n          if (emptyString(key)) {\n            continue;\n          }\n          var valid = !p.immutableKeys[key]; // not valid if immutable\n          if (valid) {\n            for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) {\n              all[i_a]._private[p.field][key] = undefined;\n            }\n          }\n        }\n        if (p.triggerEvent) {\n          self[p.triggerFnName](p.event);\n        }\n\n        // .removeData()\n      } else if (names === undefined) {\n        // then delete all keys\n\n        for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) {\n          var _privateFields = all[_i_a]._private[p.field];\n          var _keys = Object.keys(_privateFields);\n          for (var _i2 = 0; _i2 < _keys.length; _i2++) {\n            var _key = _keys[_i2];\n            var validKeyToDelete = !p.immutableKeys[_key];\n            if (validKeyToDelete) {\n              _privateFields[_key] = undefined;\n            }\n          }\n        }\n        if (p.triggerEvent) {\n          self[p.triggerFnName](p.event);\n        }\n      }\n      return self; // maintain chaining\n    }; // function\n  } // removeData\n}; // define\n\nvar define$1 = {\n  eventAliasesOn: function eventAliasesOn(proto) {\n    var p = proto;\n    p.addListener = p.listen = p.bind = p.on;\n    p.unlisten = p.unbind = p.off = p.removeListener;\n    p.trigger = p.emit;\n\n    // this is just a wrapper alias of .on()\n    p.pon = p.promiseOn = function (events, selector) {\n      var self = this;\n      var args = Array.prototype.slice.call(arguments, 0);\n      return new Promise$1(function (resolve, reject) {\n        var callback = function callback(e) {\n          self.off.apply(self, offArgs);\n          resolve(e);\n        };\n        var onArgs = args.concat([callback]);\n        var offArgs = onArgs.concat([]);\n        self.on.apply(self, onArgs);\n      });\n    };\n  }\n}; // define\n\n// use this module to cherry pick functions into your prototype\n// (useful for functions shared between the core and collections, for example)\n\nvar define = {};\n[define$3, define$2, define$1].forEach(function (m) {\n  extend(define, m);\n});\n\nvar elesfn$i = {\n  animate: define.animate(),\n  animation: define.animation(),\n  animated: define.animated(),\n  clearQueue: define.clearQueue(),\n  delay: define.delay(),\n  delayAnimation: define.delayAnimation(),\n  stop: define.stop()\n};\n\nvar elesfn$h = {\n  classes: function classes(_classes) {\n    var self = this;\n    if (_classes === undefined) {\n      var ret = [];\n      self[0]._private.classes.forEach(function (cls) {\n        return ret.push(cls);\n      });\n      return ret;\n    } else if (!array(_classes)) {\n      // extract classes from string\n      _classes = (_classes || '').match(/\\S+/g) || [];\n    }\n    var changed = [];\n    var classesSet = new Set$1(_classes);\n\n    // check and update each ele\n    for (var j = 0; j < self.length; j++) {\n      var ele = self[j];\n      var _p = ele._private;\n      var eleClasses = _p.classes;\n      var changedEle = false;\n\n      // check if ele has all of the passed classes\n      for (var i = 0; i < _classes.length; i++) {\n        var cls = _classes[i];\n        var eleHasClass = eleClasses.has(cls);\n        if (!eleHasClass) {\n          changedEle = true;\n          break;\n        }\n      }\n\n      // check if ele has classes outside of those passed\n      if (!changedEle) {\n        changedEle = eleClasses.size !== _classes.length;\n      }\n      if (changedEle) {\n        _p.classes = classesSet;\n        changed.push(ele);\n      }\n    }\n\n    // trigger update style on those eles that had class changes\n    if (changed.length > 0) {\n      this.spawn(changed).updateStyle().emit('class');\n    }\n    return self;\n  },\n  addClass: function addClass(classes) {\n    return this.toggleClass(classes, true);\n  },\n  hasClass: function hasClass(className) {\n    var ele = this[0];\n    return ele != null && ele._private.classes.has(className);\n  },\n  toggleClass: function toggleClass(classes, toggle) {\n    if (!array(classes)) {\n      // extract classes from string\n      classes = classes.match(/\\S+/g) || [];\n    }\n    var self = this;\n    var toggleUndefd = toggle === undefined;\n    var changed = []; // eles who had classes changed\n\n    for (var i = 0, il = self.length; i < il; i++) {\n      var ele = self[i];\n      var eleClasses = ele._private.classes;\n      var changedEle = false;\n      for (var j = 0; j < classes.length; j++) {\n        var cls = classes[j];\n        var hasClass = eleClasses.has(cls);\n        var changedNow = false;\n        if (toggle || toggleUndefd && !hasClass) {\n          eleClasses.add(cls);\n          changedNow = true;\n        } else if (!toggle || toggleUndefd && hasClass) {\n          eleClasses[\"delete\"](cls);\n          changedNow = true;\n        }\n        if (!changedEle && changedNow) {\n          changed.push(ele);\n          changedEle = true;\n        }\n      } // for j classes\n    } // for i eles\n\n    // trigger update style on those eles that had class changes\n    if (changed.length > 0) {\n      this.spawn(changed).updateStyle().emit('class');\n    }\n    return self;\n  },\n  removeClass: function removeClass(classes) {\n    return this.toggleClass(classes, false);\n  },\n  flashClass: function flashClass(classes, duration) {\n    var self = this;\n    if (duration == null) {\n      duration = 250;\n    } else if (duration === 0) {\n      return self; // nothing to do really\n    }\n    self.addClass(classes);\n    setTimeout(function () {\n      self.removeClass(classes);\n    }, duration);\n    return self;\n  }\n};\nelesfn$h.className = elesfn$h.classNames = elesfn$h.classes;\n\n// tokens in the query language\nvar tokens = {\n  metaChar: '[\\\\!\\\\\"\\\\#\\\\$\\\\%\\\\&\\\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\.\\\\/\\\\:\\\\;\\\\<\\\\=\\\\>\\\\?\\\\@\\\\[\\\\]\\\\^\\\\`\\\\{\\\\|\\\\}\\\\~]',\n  // chars we need to escape in let names, etc\n  comparatorOp: '=|\\\\!=|>|>=|<|<=|\\\\$=|\\\\^=|\\\\*=',\n  // binary comparison op (used in data selectors)\n  boolOp: '\\\\?|\\\\!|\\\\^',\n  // boolean (unary) operators (used in data selectors)\n  string: '\"(?:\\\\\\\\\"|[^\"])*\"' + '|' + \"'(?:\\\\\\\\'|[^'])*'\",\n  // string literals (used in data selectors) -- doublequotes | singlequotes\n  number: number,\n  // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123\n  meta: 'degree|indegree|outdegree',\n  // allowed metadata fields (i.e. allowed functions to use from Collection)\n  separator: '\\\\s*,\\\\s*',\n  // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass\n  descendant: '\\\\s+',\n  child: '\\\\s+>\\\\s+',\n  subject: '\\\\$',\n  group: 'node|edge|\\\\*',\n  directedEdge: '\\\\s+->\\\\s+',\n  undirectedEdge: '\\\\s+<->\\\\s+'\n};\ntokens.variable = '(?:[\\\\w-.]|(?:\\\\\\\\' + tokens.metaChar + '))+'; // a variable name can have letters, numbers, dashes, and periods\ntokens.className = '(?:[\\\\w-]|(?:\\\\\\\\' + tokens.metaChar + '))+'; // a class name has the same rules as a variable except it can't have a '.' in the name\ntokens.value = tokens.string + '|' + tokens.number; // a value literal, either a string or number\ntokens.id = tokens.variable; // an element id (follows variable conventions)\n\n(function () {\n  var ops, op, i;\n\n  // add @ variants to comparatorOp\n  ops = tokens.comparatorOp.split('|');\n  for (i = 0; i < ops.length; i++) {\n    op = ops[i];\n    tokens.comparatorOp += '|@' + op;\n  }\n\n  // add ! variants to comparatorOp\n  ops = tokens.comparatorOp.split('|');\n  for (i = 0; i < ops.length; i++) {\n    op = ops[i];\n    if (op.indexOf('!') >= 0) {\n      continue;\n    } // skip ops that explicitly contain !\n    if (op === '=') {\n      continue;\n    } // skip = b/c != is explicitly defined\n\n    tokens.comparatorOp += '|\\\\!' + op;\n  }\n})();\n\n/**\n * Make a new query object\n *\n * @prop type {Type} The type enum (int) of the query\n * @prop checks List of checks to make against an ele to test for a match\n */\nvar newQuery = function newQuery() {\n  return {\n    checks: []\n  };\n};\n\n/**\n * A check type enum-like object.  Uses integer values for fast match() lookup.\n * The ordering does not matter as long as the ints are unique.\n */\nvar Type = {\n  /** E.g. node */\n  GROUP: 0,\n  /** A collection of elements */\n  COLLECTION: 1,\n  /** A filter(ele) function */\n  FILTER: 2,\n  /** E.g. [foo > 1] */\n  DATA_COMPARE: 3,\n  /** E.g. [foo] */\n  DATA_EXIST: 4,\n  /** E.g. [?foo] */\n  DATA_BOOL: 5,\n  /** E.g. [[degree > 2]] */\n  META_COMPARE: 6,\n  /** E.g. :selected */\n  STATE: 7,\n  /** E.g. #foo */\n  ID: 8,\n  /** E.g. .foo */\n  CLASS: 9,\n  /** E.g. #foo <-> #bar */\n  UNDIRECTED_EDGE: 10,\n  /** E.g. #foo -> #bar */\n  DIRECTED_EDGE: 11,\n  /** E.g. $#foo -> #bar */\n  NODE_SOURCE: 12,\n  /** E.g. #foo -> $#bar */\n  NODE_TARGET: 13,\n  /** E.g. $#foo <-> #bar */\n  NODE_NEIGHBOR: 14,\n  /** E.g. #foo > #bar */\n  CHILD: 15,\n  /** E.g. #foo #bar */\n  DESCENDANT: 16,\n  /** E.g. $#foo > #bar */\n  PARENT: 17,\n  /** E.g. $#foo #bar */\n  ANCESTOR: 18,\n  /** E.g. #foo > $bar > #baz */\n  COMPOUND_SPLIT: 19,\n  /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */\n  TRUE: 20\n};\n\nvar stateSelectors = [{\n  selector: ':selected',\n  matches: function matches(ele) {\n    return ele.selected();\n  }\n}, {\n  selector: ':unselected',\n  matches: function matches(ele) {\n    return !ele.selected();\n  }\n}, {\n  selector: ':selectable',\n  matches: function matches(ele) {\n    return ele.selectable();\n  }\n}, {\n  selector: ':unselectable',\n  matches: function matches(ele) {\n    return !ele.selectable();\n  }\n}, {\n  selector: ':locked',\n  matches: function matches(ele) {\n    return ele.locked();\n  }\n}, {\n  selector: ':unlocked',\n  matches: function matches(ele) {\n    return !ele.locked();\n  }\n}, {\n  selector: ':visible',\n  matches: function matches(ele) {\n    return ele.visible();\n  }\n}, {\n  selector: ':hidden',\n  matches: function matches(ele) {\n    return !ele.visible();\n  }\n}, {\n  selector: ':transparent',\n  matches: function matches(ele) {\n    return ele.transparent();\n  }\n}, {\n  selector: ':grabbed',\n  matches: function matches(ele) {\n    return ele.grabbed();\n  }\n}, {\n  selector: ':free',\n  matches: function matches(ele) {\n    return !ele.grabbed();\n  }\n}, {\n  selector: ':removed',\n  matches: function matches(ele) {\n    return ele.removed();\n  }\n}, {\n  selector: ':inside',\n  matches: function matches(ele) {\n    return !ele.removed();\n  }\n}, {\n  selector: ':grabbable',\n  matches: function matches(ele) {\n    return ele.grabbable();\n  }\n}, {\n  selector: ':ungrabbable',\n  matches: function matches(ele) {\n    return !ele.grabbable();\n  }\n}, {\n  selector: ':animated',\n  matches: function matches(ele) {\n    return ele.animated();\n  }\n}, {\n  selector: ':unanimated',\n  matches: function matches(ele) {\n    return !ele.animated();\n  }\n}, {\n  selector: ':parent',\n  matches: function matches(ele) {\n    return ele.isParent();\n  }\n}, {\n  selector: ':childless',\n  matches: function matches(ele) {\n    return ele.isChildless();\n  }\n}, {\n  selector: ':child',\n  matches: function matches(ele) {\n    return ele.isChild();\n  }\n}, {\n  selector: ':orphan',\n  matches: function matches(ele) {\n    return ele.isOrphan();\n  }\n}, {\n  selector: ':nonorphan',\n  matches: function matches(ele) {\n    return ele.isChild();\n  }\n}, {\n  selector: ':compound',\n  matches: function matches(ele) {\n    if (ele.isNode()) {\n      return ele.isParent();\n    } else {\n      return ele.source().isParent() || ele.target().isParent();\n    }\n  }\n}, {\n  selector: ':loop',\n  matches: function matches(ele) {\n    return ele.isLoop();\n  }\n}, {\n  selector: ':simple',\n  matches: function matches(ele) {\n    return ele.isSimple();\n  }\n}, {\n  selector: ':active',\n  matches: function matches(ele) {\n    return ele.active();\n  }\n}, {\n  selector: ':inactive',\n  matches: function matches(ele) {\n    return !ele.active();\n  }\n}, {\n  selector: ':backgrounding',\n  matches: function matches(ele) {\n    return ele.backgrounding();\n  }\n}, {\n  selector: ':nonbackgrounding',\n  matches: function matches(ele) {\n    return !ele.backgrounding();\n  }\n}].sort(function (a, b) {\n  // n.b. selectors that are starting substrings of others must have the longer ones first\n  return descending(a.selector, b.selector);\n});\nvar lookup = function () {\n  var selToFn = {};\n  var s;\n  for (var i = 0; i < stateSelectors.length; i++) {\n    s = stateSelectors[i];\n    selToFn[s.selector] = s.matches;\n  }\n  return selToFn;\n}();\nvar stateSelectorMatches = function stateSelectorMatches(sel, ele) {\n  return lookup[sel](ele);\n};\nvar stateSelectorRegex = '(' + stateSelectors.map(function (s) {\n  return s.selector;\n}).join('|') + ')';\n\n// when a token like a variable has escaped meta characters, we need to clean the backslashes out\n// so that values get compared properly in Selector.filter()\nvar cleanMetaChars = function cleanMetaChars(str) {\n  return str.replace(new RegExp('\\\\\\\\(' + tokens.metaChar + ')', 'g'), function (match, $1) {\n    return $1;\n  });\n};\nvar replaceLastQuery = function replaceLastQuery(selector, examiningQuery, replacementQuery) {\n  selector[selector.length - 1] = replacementQuery;\n};\n\n// NOTE: add new expression syntax here to have it recognised by the parser;\n// - a query contains all adjacent (i.e. no separator in between) expressions;\n// - the current query is stored in selector[i]\n// - you need to check the query objects in match() for it actually filter properly, but that's pretty straight forward\nvar exprs = [{\n  name: 'group',\n  // just used for identifying when debugging\n  query: true,\n  regex: '(' + tokens.group + ')',\n  populate: function populate(selector, query, _ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      group = _ref2[0];\n    query.checks.push({\n      type: Type.GROUP,\n      value: group === '*' ? group : group + 's'\n    });\n  }\n}, {\n  name: 'state',\n  query: true,\n  regex: stateSelectorRegex,\n  populate: function populate(selector, query, _ref3) {\n    var _ref4 = _slicedToArray(_ref3, 1),\n      state = _ref4[0];\n    query.checks.push({\n      type: Type.STATE,\n      value: state\n    });\n  }\n}, {\n  name: 'id',\n  query: true,\n  regex: '\\\\#(' + tokens.id + ')',\n  populate: function populate(selector, query, _ref5) {\n    var _ref6 = _slicedToArray(_ref5, 1),\n      id = _ref6[0];\n    query.checks.push({\n      type: Type.ID,\n      value: cleanMetaChars(id)\n    });\n  }\n}, {\n  name: 'className',\n  query: true,\n  regex: '\\\\.(' + tokens.className + ')',\n  populate: function populate(selector, query, _ref7) {\n    var _ref8 = _slicedToArray(_ref7, 1),\n      className = _ref8[0];\n    query.checks.push({\n      type: Type.CLASS,\n      value: cleanMetaChars(className)\n    });\n  }\n}, {\n  name: 'dataExists',\n  query: true,\n  regex: '\\\\[\\\\s*(' + tokens.variable + ')\\\\s*\\\\]',\n  populate: function populate(selector, query, _ref9) {\n    var _ref10 = _slicedToArray(_ref9, 1),\n      variable = _ref10[0];\n    query.checks.push({\n      type: Type.DATA_EXIST,\n      field: cleanMetaChars(variable)\n    });\n  }\n}, {\n  name: 'dataCompare',\n  query: true,\n  regex: '\\\\[\\\\s*(' + tokens.variable + ')\\\\s*(' + tokens.comparatorOp + ')\\\\s*(' + tokens.value + ')\\\\s*\\\\]',\n  populate: function populate(selector, query, _ref11) {\n    var _ref12 = _slicedToArray(_ref11, 3),\n      variable = _ref12[0],\n      comparatorOp = _ref12[1],\n      value = _ref12[2];\n    var valueIsString = new RegExp('^' + tokens.string + '$').exec(value) != null;\n    if (valueIsString) {\n      value = value.substring(1, value.length - 1);\n    } else {\n      value = parseFloat(value);\n    }\n    query.checks.push({\n      type: Type.DATA_COMPARE,\n      field: cleanMetaChars(variable),\n      operator: comparatorOp,\n      value: value\n    });\n  }\n}, {\n  name: 'dataBool',\n  query: true,\n  regex: '\\\\[\\\\s*(' + tokens.boolOp + ')\\\\s*(' + tokens.variable + ')\\\\s*\\\\]',\n  populate: function populate(selector, query, _ref13) {\n    var _ref14 = _slicedToArray(_ref13, 2),\n      boolOp = _ref14[0],\n      variable = _ref14[1];\n    query.checks.push({\n      type: Type.DATA_BOOL,\n      field: cleanMetaChars(variable),\n      operator: boolOp\n    });\n  }\n}, {\n  name: 'metaCompare',\n  query: true,\n  regex: '\\\\[\\\\[\\\\s*(' + tokens.meta + ')\\\\s*(' + tokens.comparatorOp + ')\\\\s*(' + tokens.number + ')\\\\s*\\\\]\\\\]',\n  populate: function populate(selector, query, _ref15) {\n    var _ref16 = _slicedToArray(_ref15, 3),\n      meta = _ref16[0],\n      comparatorOp = _ref16[1],\n      number = _ref16[2];\n    query.checks.push({\n      type: Type.META_COMPARE,\n      field: cleanMetaChars(meta),\n      operator: comparatorOp,\n      value: parseFloat(number)\n    });\n  }\n}, {\n  name: 'nextQuery',\n  separator: true,\n  regex: tokens.separator,\n  populate: function populate(selector, query) {\n    var currentSubject = selector.currentSubject;\n    var edgeCount = selector.edgeCount;\n    var compoundCount = selector.compoundCount;\n    var lastQ = selector[selector.length - 1];\n    if (currentSubject != null) {\n      lastQ.subject = currentSubject;\n      selector.currentSubject = null;\n    }\n    lastQ.edgeCount = edgeCount;\n    lastQ.compoundCount = compoundCount;\n    selector.edgeCount = 0;\n    selector.compoundCount = 0;\n\n    // go on to next query\n    var nextQuery = selector[selector.length++] = newQuery();\n    return nextQuery; // this is the new query to be filled by the following exprs\n  }\n}, {\n  name: 'directedEdge',\n  separator: true,\n  regex: tokens.directedEdge,\n  populate: function populate(selector, query) {\n    if (selector.currentSubject == null) {\n      // undirected edge\n      var edgeQuery = newQuery();\n      var source = query;\n      var target = newQuery();\n      edgeQuery.checks.push({\n        type: Type.DIRECTED_EDGE,\n        source: source,\n        target: target\n      });\n\n      // the query in the selector should be the edge rather than the source\n      replaceLastQuery(selector, query, edgeQuery);\n      selector.edgeCount++;\n\n      // we're now populating the target query with expressions that follow\n      return target;\n    } else {\n      // source/target\n      var srcTgtQ = newQuery();\n      var _source = query;\n      var _target = newQuery();\n      srcTgtQ.checks.push({\n        type: Type.NODE_SOURCE,\n        source: _source,\n        target: _target\n      });\n\n      // the query in the selector should be the neighbourhood rather than the node\n      replaceLastQuery(selector, query, srcTgtQ);\n      selector.edgeCount++;\n      return _target; // now populating the target with the following expressions\n    }\n  }\n}, {\n  name: 'undirectedEdge',\n  separator: true,\n  regex: tokens.undirectedEdge,\n  populate: function populate(selector, query) {\n    if (selector.currentSubject == null) {\n      // undirected edge\n      var edgeQuery = newQuery();\n      var source = query;\n      var target = newQuery();\n      edgeQuery.checks.push({\n        type: Type.UNDIRECTED_EDGE,\n        nodes: [source, target]\n      });\n\n      // the query in the selector should be the edge rather than the source\n      replaceLastQuery(selector, query, edgeQuery);\n      selector.edgeCount++;\n\n      // we're now populating the target query with expressions that follow\n      return target;\n    } else {\n      // neighbourhood\n      var nhoodQ = newQuery();\n      var node = query;\n      var neighbor = newQuery();\n      nhoodQ.checks.push({\n        type: Type.NODE_NEIGHBOR,\n        node: node,\n        neighbor: neighbor\n      });\n\n      // the query in the selector should be the neighbourhood rather than the node\n      replaceLastQuery(selector, query, nhoodQ);\n      return neighbor; // now populating the neighbor with following expressions\n    }\n  }\n}, {\n  name: 'child',\n  separator: true,\n  regex: tokens.child,\n  populate: function populate(selector, query) {\n    if (selector.currentSubject == null) {\n      // default: child query\n      var parentChildQuery = newQuery();\n      var child = newQuery();\n      var parent = selector[selector.length - 1];\n      parentChildQuery.checks.push({\n        type: Type.CHILD,\n        parent: parent,\n        child: child\n      });\n\n      // the query in the selector should be the '>' itself\n      replaceLastQuery(selector, query, parentChildQuery);\n      selector.compoundCount++;\n\n      // we're now populating the child query with expressions that follow\n      return child;\n    } else if (selector.currentSubject === query) {\n      // compound split query\n      var compound = newQuery();\n      var left = selector[selector.length - 1];\n      var right = newQuery();\n      var subject = newQuery();\n      var _child = newQuery();\n      var _parent = newQuery();\n\n      // set up the root compound q\n      compound.checks.push({\n        type: Type.COMPOUND_SPLIT,\n        left: left,\n        right: right,\n        subject: subject\n      });\n\n      // populate the subject and replace the q at the old spot (within left) with TRUE\n      subject.checks = query.checks; // take the checks from the left\n      query.checks = [{\n        type: Type.TRUE\n      }]; // checks under left refs the subject implicitly\n\n      // set up the right q\n      _parent.checks.push({\n        type: Type.TRUE\n      }); // parent implicitly refs the subject\n      right.checks.push({\n        type: Type.PARENT,\n        // type is swapped on right side queries\n        parent: _parent,\n        child: _child // empty for now\n      });\n      replaceLastQuery(selector, left, compound);\n\n      // update the ref since we moved things around for `query`\n      selector.currentSubject = subject;\n      selector.compoundCount++;\n      return _child; // now populating the right side's child\n    } else {\n      // parent query\n      // info for parent query\n      var _parent2 = newQuery();\n      var _child2 = newQuery();\n      var pcQChecks = [{\n        type: Type.PARENT,\n        parent: _parent2,\n        child: _child2\n      }];\n\n      // the parent-child query takes the place of the query previously being populated\n      _parent2.checks = query.checks; // the previous query contains the checks for the parent\n      query.checks = pcQChecks; // pc query takes over\n\n      selector.compoundCount++;\n      return _child2; // we're now populating the child\n    }\n  }\n}, {\n  name: 'descendant',\n  separator: true,\n  regex: tokens.descendant,\n  populate: function populate(selector, query) {\n    if (selector.currentSubject == null) {\n      // default: descendant query\n      var ancChQuery = newQuery();\n      var descendant = newQuery();\n      var ancestor = selector[selector.length - 1];\n      ancChQuery.checks.push({\n        type: Type.DESCENDANT,\n        ancestor: ancestor,\n        descendant: descendant\n      });\n\n      // the query in the selector should be the '>' itself\n      replaceLastQuery(selector, query, ancChQuery);\n      selector.compoundCount++;\n\n      // we're now populating the descendant query with expressions that follow\n      return descendant;\n    } else if (selector.currentSubject === query) {\n      // compound split query\n      var compound = newQuery();\n      var left = selector[selector.length - 1];\n      var right = newQuery();\n      var subject = newQuery();\n      var _descendant = newQuery();\n      var _ancestor = newQuery();\n\n      // set up the root compound q\n      compound.checks.push({\n        type: Type.COMPOUND_SPLIT,\n        left: left,\n        right: right,\n        subject: subject\n      });\n\n      // populate the subject and replace the q at the old spot (within left) with TRUE\n      subject.checks = query.checks; // take the checks from the left\n      query.checks = [{\n        type: Type.TRUE\n      }]; // checks under left refs the subject implicitly\n\n      // set up the right q\n      _ancestor.checks.push({\n        type: Type.TRUE\n      }); // ancestor implicitly refs the subject\n      right.checks.push({\n        type: Type.ANCESTOR,\n        // type is swapped on right side queries\n        ancestor: _ancestor,\n        descendant: _descendant // empty for now\n      });\n      replaceLastQuery(selector, left, compound);\n\n      // update the ref since we moved things around for `query`\n      selector.currentSubject = subject;\n      selector.compoundCount++;\n      return _descendant; // now populating the right side's descendant\n    } else {\n      // ancestor query\n      // info for parent query\n      var _ancestor2 = newQuery();\n      var _descendant2 = newQuery();\n      var adQChecks = [{\n        type: Type.ANCESTOR,\n        ancestor: _ancestor2,\n        descendant: _descendant2\n      }];\n\n      // the parent-child query takes the place of the query previously being populated\n      _ancestor2.checks = query.checks; // the previous query contains the checks for the parent\n      query.checks = adQChecks; // pc query takes over\n\n      selector.compoundCount++;\n      return _descendant2; // we're now populating the child\n    }\n  }\n}, {\n  name: 'subject',\n  modifier: true,\n  regex: tokens.subject,\n  populate: function populate(selector, query) {\n    if (selector.currentSubject != null && selector.currentSubject !== query) {\n      warn('Redefinition of subject in selector `' + selector.toString() + '`');\n      return false;\n    }\n    selector.currentSubject = query;\n    var topQ = selector[selector.length - 1];\n    var topChk = topQ.checks[0];\n    var topType = topChk == null ? null : topChk.type;\n    if (topType === Type.DIRECTED_EDGE) {\n      // directed edge with subject on the target\n\n      // change to target node check\n      topChk.type = Type.NODE_TARGET;\n    } else if (topType === Type.UNDIRECTED_EDGE) {\n      // undirected edge with subject on the second node\n\n      // change to neighbor check\n      topChk.type = Type.NODE_NEIGHBOR;\n      topChk.node = topChk.nodes[1]; // second node is subject\n      topChk.neighbor = topChk.nodes[0];\n\n      // clean up unused fields for new type\n      topChk.nodes = null;\n    }\n  }\n}];\nexprs.forEach(function (e) {\n  return e.regexObj = new RegExp('^' + e.regex);\n});\n\n/**\n * Of all the expressions, find the first match in the remaining text.\n * @param {string} remaining The remaining text to parse\n * @returns The matched expression and the newly remaining text `{ expr, match, name, remaining }`\n */\nvar consumeExpr = function consumeExpr(remaining) {\n  var expr;\n  var match;\n  var name;\n  for (var j = 0; j < exprs.length; j++) {\n    var e = exprs[j];\n    var n = e.name;\n    var m = remaining.match(e.regexObj);\n    if (m != null) {\n      match = m;\n      expr = e;\n      name = n;\n      var consumed = m[0];\n      remaining = remaining.substring(consumed.length);\n      break; // we've consumed one expr, so we can return now\n    }\n  }\n  return {\n    expr: expr,\n    match: match,\n    name: name,\n    remaining: remaining\n  };\n};\n\n/**\n * Consume all the leading whitespace\n * @param {string} remaining The text to consume\n * @returns The text with the leading whitespace removed\n */\nvar consumeWhitespace = function consumeWhitespace(remaining) {\n  var match = remaining.match(/^\\s+/);\n  if (match) {\n    var consumed = match[0];\n    remaining = remaining.substring(consumed.length);\n  }\n  return remaining;\n};\n\n/**\n * Parse the string and store the parsed representation in the Selector.\n * @param {string} selector The selector string\n * @returns `true` if the selector was successfully parsed, `false` otherwise\n */\nvar parse = function parse(selector) {\n  var self = this;\n  var remaining = self.inputText = selector;\n  var currentQuery = self[0] = newQuery();\n  self.length = 1;\n  remaining = consumeWhitespace(remaining); // get rid of leading whitespace\n\n  for (;;) {\n    var exprInfo = consumeExpr(remaining);\n    if (exprInfo.expr == null) {\n      warn('The selector `' + selector + '`is invalid');\n      return false;\n    } else {\n      var args = exprInfo.match.slice(1);\n\n      // let the token populate the selector object in currentQuery\n      var ret = exprInfo.expr.populate(self, currentQuery, args);\n      if (ret === false) {\n        return false; // exit if population failed\n      } else if (ret != null) {\n        currentQuery = ret; // change the current query to be filled if the expr specifies\n      }\n    }\n    remaining = exprInfo.remaining;\n\n    // we're done when there's nothing left to parse\n    if (remaining.match(/^\\s*$/)) {\n      break;\n    }\n  }\n  var lastQ = self[self.length - 1];\n  if (self.currentSubject != null) {\n    lastQ.subject = self.currentSubject;\n  }\n  lastQ.edgeCount = self.edgeCount;\n  lastQ.compoundCount = self.compoundCount;\n  for (var i = 0; i < self.length; i++) {\n    var q = self[i];\n\n    // in future, this could potentially be allowed if there were operator precedence and detection of invalid combinations\n    if (q.compoundCount > 0 && q.edgeCount > 0) {\n      warn('The selector `' + selector + '` is invalid because it uses both a compound selector and an edge selector');\n      return false;\n    }\n    if (q.edgeCount > 1) {\n      warn('The selector `' + selector + '` is invalid because it uses multiple edge selectors');\n      return false;\n    } else if (q.edgeCount === 1) {\n      warn('The selector `' + selector + '` is deprecated.  Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons.  Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.');\n    }\n  }\n  return true; // success\n};\n\n/**\n * Get the selector represented as a string.  This value uses default formatting,\n * so things like spacing may differ from the input text passed to the constructor.\n * @returns {string} The selector string\n */\nvar toString = function toString() {\n  if (this.toStringCache != null) {\n    return this.toStringCache;\n  }\n  var clean = function clean(obj) {\n    if (obj == null) {\n      return '';\n    } else {\n      return obj;\n    }\n  };\n  var cleanVal = function cleanVal(val) {\n    if (string(val)) {\n      return '\"' + val + '\"';\n    } else {\n      return clean(val);\n    }\n  };\n  var space = function space(val) {\n    return ' ' + val + ' ';\n  };\n  var checkToString = function checkToString(check, subject) {\n    var type = check.type,\n      value = check.value;\n    switch (type) {\n      case Type.GROUP:\n        {\n          var group = clean(value);\n          return group.substring(0, group.length - 1);\n        }\n      case Type.DATA_COMPARE:\n        {\n          var field = check.field,\n            operator = check.operator;\n          return '[' + field + space(clean(operator)) + cleanVal(value) + ']';\n        }\n      case Type.DATA_BOOL:\n        {\n          var _operator = check.operator,\n            _field = check.field;\n          return '[' + clean(_operator) + _field + ']';\n        }\n      case Type.DATA_EXIST:\n        {\n          var _field2 = check.field;\n          return '[' + _field2 + ']';\n        }\n      case Type.META_COMPARE:\n        {\n          var _operator2 = check.operator,\n            _field3 = check.field;\n          return '[[' + _field3 + space(clean(_operator2)) + cleanVal(value) + ']]';\n        }\n      case Type.STATE:\n        {\n          return value;\n        }\n      case Type.ID:\n        {\n          return '#' + value;\n        }\n      case Type.CLASS:\n        {\n          return '.' + value;\n        }\n      case Type.PARENT:\n      case Type.CHILD:\n        {\n          return queryToString(check.parent, subject) + space('>') + queryToString(check.child, subject);\n        }\n      case Type.ANCESTOR:\n      case Type.DESCENDANT:\n        {\n          return queryToString(check.ancestor, subject) + ' ' + queryToString(check.descendant, subject);\n        }\n      case Type.COMPOUND_SPLIT:\n        {\n          var lhs = queryToString(check.left, subject);\n          var sub = queryToString(check.subject, subject);\n          var rhs = queryToString(check.right, subject);\n          return lhs + (lhs.length > 0 ? ' ' : '') + sub + rhs;\n        }\n      case Type.TRUE:\n        {\n          return '';\n        }\n    }\n  };\n  var queryToString = function queryToString(query, subject) {\n    return query.checks.reduce(function (str, chk, i) {\n      return str + (subject === query && i === 0 ? '$' : '') + checkToString(chk, subject);\n    }, '');\n  };\n  var str = '';\n  for (var i = 0; i < this.length; i++) {\n    var query = this[i];\n    str += queryToString(query, query.subject);\n    if (this.length > 1 && i < this.length - 1) {\n      str += ', ';\n    }\n  }\n  this.toStringCache = str;\n  return str;\n};\nvar parse$1 = {\n  parse: parse,\n  toString: toString\n};\n\nvar valCmp = function valCmp(fieldVal, operator, value) {\n  var matches;\n  var isFieldStr = string(fieldVal);\n  var isFieldNum = number$1(fieldVal);\n  var isValStr = string(value);\n  var fieldStr, valStr;\n  var caseInsensitive = false;\n  var notExpr = false;\n  var isIneqCmp = false;\n  if (operator.indexOf('!') >= 0) {\n    operator = operator.replace('!', '');\n    notExpr = true;\n  }\n  if (operator.indexOf('@') >= 0) {\n    operator = operator.replace('@', '');\n    caseInsensitive = true;\n  }\n  if (isFieldStr || isValStr || caseInsensitive) {\n    fieldStr = !isFieldStr && !isFieldNum ? '' : '' + fieldVal;\n    valStr = '' + value;\n  }\n\n  // if we're doing a case insensitive comparison, then we're using a STRING comparison\n  // even if we're comparing numbers\n  if (caseInsensitive) {\n    fieldVal = fieldStr = fieldStr.toLowerCase();\n    value = valStr = valStr.toLowerCase();\n  }\n  switch (operator) {\n    case '*=':\n      matches = fieldStr.indexOf(valStr) >= 0;\n      break;\n    case '$=':\n      matches = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0;\n      break;\n    case '^=':\n      matches = fieldStr.indexOf(valStr) === 0;\n      break;\n    case '=':\n      matches = fieldVal === value;\n      break;\n    case '>':\n      isIneqCmp = true;\n      matches = fieldVal > value;\n      break;\n    case '>=':\n      isIneqCmp = true;\n      matches = fieldVal >= value;\n      break;\n    case '<':\n      isIneqCmp = true;\n      matches = fieldVal < value;\n      break;\n    case '<=':\n      isIneqCmp = true;\n      matches = fieldVal <= value;\n      break;\n    default:\n      matches = false;\n      break;\n  }\n\n  // apply the not op, but null vals for inequalities should always stay non-matching\n  if (notExpr && (fieldVal != null || !isIneqCmp)) {\n    matches = !matches;\n  }\n  return matches;\n};\nvar boolCmp = function boolCmp(fieldVal, operator) {\n  switch (operator) {\n    case '?':\n      return fieldVal ? true : false;\n    case '!':\n      return fieldVal ? false : true;\n    case '^':\n      return fieldVal === undefined;\n  }\n};\nvar existCmp = function existCmp(fieldVal) {\n  return fieldVal !== undefined;\n};\nvar data$1 = function data(ele, field) {\n  return ele.data(field);\n};\nvar meta = function meta(ele, field) {\n  return ele[field]();\n};\n\n/** A lookup of `match(check, ele)` functions by `Type` int */\nvar match = [];\n\n/**\n * Returns whether the query matches for the element\n * @param query The `{ type, value, ... }` query object\n * @param ele The element to compare against\n*/\nvar matches$1 = function matches(query, ele) {\n  return query.checks.every(function (chk) {\n    return match[chk.type](chk, ele);\n  });\n};\nmatch[Type.GROUP] = function (check, ele) {\n  var group = check.value;\n  return group === '*' || group === ele.group();\n};\nmatch[Type.STATE] = function (check, ele) {\n  var stateSelector = check.value;\n  return stateSelectorMatches(stateSelector, ele);\n};\nmatch[Type.ID] = function (check, ele) {\n  var id = check.value;\n  return ele.id() === id;\n};\nmatch[Type.CLASS] = function (check, ele) {\n  var cls = check.value;\n  return ele.hasClass(cls);\n};\nmatch[Type.META_COMPARE] = function (check, ele) {\n  var field = check.field,\n    operator = check.operator,\n    value = check.value;\n  return valCmp(meta(ele, field), operator, value);\n};\nmatch[Type.DATA_COMPARE] = function (check, ele) {\n  var field = check.field,\n    operator = check.operator,\n    value = check.value;\n  return valCmp(data$1(ele, field), operator, value);\n};\nmatch[Type.DATA_BOOL] = function (check, ele) {\n  var field = check.field,\n    operator = check.operator;\n  return boolCmp(data$1(ele, field), operator);\n};\nmatch[Type.DATA_EXIST] = function (check, ele) {\n  var field = check.field;\n    check.operator;\n  return existCmp(data$1(ele, field));\n};\nmatch[Type.UNDIRECTED_EDGE] = function (check, ele) {\n  var qA = check.nodes[0];\n  var qB = check.nodes[1];\n  var src = ele.source();\n  var tgt = ele.target();\n  return matches$1(qA, src) && matches$1(qB, tgt) || matches$1(qB, src) && matches$1(qA, tgt);\n};\nmatch[Type.NODE_NEIGHBOR] = function (check, ele) {\n  return matches$1(check.node, ele) && ele.neighborhood().some(function (n) {\n    return n.isNode() && matches$1(check.neighbor, n);\n  });\n};\nmatch[Type.DIRECTED_EDGE] = function (check, ele) {\n  return matches$1(check.source, ele.source()) && matches$1(check.target, ele.target());\n};\nmatch[Type.NODE_SOURCE] = function (check, ele) {\n  return matches$1(check.source, ele) && ele.outgoers().some(function (n) {\n    return n.isNode() && matches$1(check.target, n);\n  });\n};\nmatch[Type.NODE_TARGET] = function (check, ele) {\n  return matches$1(check.target, ele) && ele.incomers().some(function (n) {\n    return n.isNode() && matches$1(check.source, n);\n  });\n};\nmatch[Type.CHILD] = function (check, ele) {\n  return matches$1(check.child, ele) && matches$1(check.parent, ele.parent());\n};\nmatch[Type.PARENT] = function (check, ele) {\n  return matches$1(check.parent, ele) && ele.children().some(function (c) {\n    return matches$1(check.child, c);\n  });\n};\nmatch[Type.DESCENDANT] = function (check, ele) {\n  return matches$1(check.descendant, ele) && ele.ancestors().some(function (a) {\n    return matches$1(check.ancestor, a);\n  });\n};\nmatch[Type.ANCESTOR] = function (check, ele) {\n  return matches$1(check.ancestor, ele) && ele.descendants().some(function (d) {\n    return matches$1(check.descendant, d);\n  });\n};\nmatch[Type.COMPOUND_SPLIT] = function (check, ele) {\n  return matches$1(check.subject, ele) && matches$1(check.left, ele) && matches$1(check.right, ele);\n};\nmatch[Type.TRUE] = function () {\n  return true;\n};\nmatch[Type.COLLECTION] = function (check, ele) {\n  var collection = check.value;\n  return collection.has(ele);\n};\nmatch[Type.FILTER] = function (check, ele) {\n  var filter = check.value;\n  return filter(ele);\n};\n\n// filter an existing collection\nvar filter = function filter(collection) {\n  var self = this;\n\n  // for 1 id #foo queries, just get the element\n  if (self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID) {\n    return collection.getElementById(self[0].checks[0].value).collection();\n  }\n  var selectorFunction = function selectorFunction(element) {\n    for (var j = 0; j < self.length; j++) {\n      var query = self[j];\n      if (matches$1(query, element)) {\n        return true;\n      }\n    }\n    return false;\n  };\n  if (self.text() == null) {\n    selectorFunction = function selectorFunction() {\n      return true;\n    };\n  }\n  return collection.filter(selectorFunction);\n}; // filter\n\n// does selector match a single element?\nvar matches = function matches(ele) {\n  var self = this;\n  for (var j = 0; j < self.length; j++) {\n    var query = self[j];\n    if (matches$1(query, ele)) {\n      return true;\n    }\n  }\n  return false;\n}; // matches\n\nvar matching = {\n  matches: matches,\n  filter: filter\n};\n\nvar Selector = function Selector(selector) {\n  this.inputText = selector;\n  this.currentSubject = null;\n  this.compoundCount = 0;\n  this.edgeCount = 0;\n  this.length = 0;\n  if (selector == null || string(selector) && selector.match(/^\\s*$/)) ; else if (elementOrCollection(selector)) {\n    this.addQuery({\n      checks: [{\n        type: Type.COLLECTION,\n        value: selector.collection()\n      }]\n    });\n  } else if (fn$6(selector)) {\n    this.addQuery({\n      checks: [{\n        type: Type.FILTER,\n        value: selector\n      }]\n    });\n  } else if (string(selector)) {\n    if (!this.parse(selector)) {\n      this.invalid = true;\n    }\n  } else {\n    error('A selector must be created from a string; found ');\n  }\n};\nvar selfn = Selector.prototype;\n[parse$1, matching].forEach(function (p) {\n  return extend(selfn, p);\n});\nselfn.text = function () {\n  return this.inputText;\n};\nselfn.size = function () {\n  return this.length;\n};\nselfn.eq = function (i) {\n  return this[i];\n};\nselfn.sameText = function (otherSel) {\n  return !this.invalid && !otherSel.invalid && this.text() === otherSel.text();\n};\nselfn.addQuery = function (q) {\n  this[this.length++] = q;\n};\nselfn.selector = selfn.toString;\n\nvar elesfn$g = {\n  allAre: function allAre(selector) {\n    var selObj = new Selector(selector);\n    return this.every(function (ele) {\n      return selObj.matches(ele);\n    });\n  },\n  is: function is(selector) {\n    var selObj = new Selector(selector);\n    return this.some(function (ele) {\n      return selObj.matches(ele);\n    });\n  },\n  some: function some(fn, thisArg) {\n    for (var i = 0; i < this.length; i++) {\n      var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);\n      if (ret) {\n        return true;\n      }\n    }\n    return false;\n  },\n  every: function every(fn, thisArg) {\n    for (var i = 0; i < this.length; i++) {\n      var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);\n      if (!ret) {\n        return false;\n      }\n    }\n    return true;\n  },\n  same: function same(collection) {\n    // cheap collection ref check\n    if (this === collection) {\n      return true;\n    }\n    collection = this.cy().collection(collection);\n    var thisLength = this.length;\n    var collectionLength = collection.length;\n\n    // cheap length check\n    if (thisLength !== collectionLength) {\n      return false;\n    }\n\n    // cheap element ref check\n    if (thisLength === 1) {\n      return this[0] === collection[0];\n    }\n    return this.every(function (ele) {\n      return collection.hasElementWithId(ele.id());\n    });\n  },\n  anySame: function anySame(collection) {\n    collection = this.cy().collection(collection);\n    return this.some(function (ele) {\n      return collection.hasElementWithId(ele.id());\n    });\n  },\n  allAreNeighbors: function allAreNeighbors(collection) {\n    collection = this.cy().collection(collection);\n    var nhood = this.neighborhood();\n    return collection.every(function (ele) {\n      return nhood.hasElementWithId(ele.id());\n    });\n  },\n  contains: function contains(collection) {\n    collection = this.cy().collection(collection);\n    var self = this;\n    return collection.every(function (ele) {\n      return self.hasElementWithId(ele.id());\n    });\n  }\n};\nelesfn$g.allAreNeighbours = elesfn$g.allAreNeighbors;\nelesfn$g.has = elesfn$g.contains;\nelesfn$g.equal = elesfn$g.equals = elesfn$g.same;\n\nvar cache = function cache(fn, name) {\n  return function traversalCache(arg1, arg2, arg3, arg4) {\n    var selectorOrEles = arg1;\n    var eles = this;\n    var key;\n    if (selectorOrEles == null) {\n      key = '';\n    } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) {\n      key = selectorOrEles.id();\n    }\n    if (eles.length === 1 && key) {\n      var _p = eles[0]._private;\n      var tch = _p.traversalCache = _p.traversalCache || {};\n      var ch = tch[name] = tch[name] || [];\n      var hash = hashString(key);\n      var cacheHit = ch[hash];\n      if (cacheHit) {\n        return cacheHit;\n      } else {\n        return ch[hash] = fn.call(eles, arg1, arg2, arg3, arg4);\n      }\n    } else {\n      return fn.call(eles, arg1, arg2, arg3, arg4);\n    }\n  };\n};\n\nvar elesfn$f = {\n  parent: function parent(selector) {\n    var parents = [];\n\n    // optimisation for single ele call\n    if (this.length === 1) {\n      var parent = this[0]._private.parent;\n      if (parent) {\n        return parent;\n      }\n    }\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      var _parent = ele._private.parent;\n      if (_parent) {\n        parents.push(_parent);\n      }\n    }\n    return this.spawn(parents, true).filter(selector);\n  },\n  parents: function parents(selector) {\n    var parents = [];\n    var eles = this.parent();\n    while (eles.nonempty()) {\n      for (var i = 0; i < eles.length; i++) {\n        var ele = eles[i];\n        parents.push(ele);\n      }\n      eles = eles.parent();\n    }\n    return this.spawn(parents, true).filter(selector);\n  },\n  commonAncestors: function commonAncestors(selector) {\n    var ancestors;\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      var parents = ele.parents();\n      ancestors = ancestors || parents;\n      ancestors = ancestors.intersect(parents); // current list must be common with current ele parents set\n    }\n    return ancestors.filter(selector);\n  },\n  orphans: function orphans(selector) {\n    return this.stdFilter(function (ele) {\n      return ele.isOrphan();\n    }).filter(selector);\n  },\n  nonorphans: function nonorphans(selector) {\n    return this.stdFilter(function (ele) {\n      return ele.isChild();\n    }).filter(selector);\n  },\n  children: cache(function (selector) {\n    var children = [];\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      var eleChildren = ele._private.children;\n      for (var j = 0; j < eleChildren.length; j++) {\n        children.push(eleChildren[j]);\n      }\n    }\n    return this.spawn(children, true).filter(selector);\n  }, 'children'),\n  siblings: function siblings(selector) {\n    return this.parent().children().not(this).filter(selector);\n  },\n  isParent: function isParent() {\n    var ele = this[0];\n    if (ele) {\n      return ele.isNode() && ele._private.children.length !== 0;\n    }\n  },\n  isChildless: function isChildless() {\n    var ele = this[0];\n    if (ele) {\n      return ele.isNode() && ele._private.children.length === 0;\n    }\n  },\n  isChild: function isChild() {\n    var ele = this[0];\n    if (ele) {\n      return ele.isNode() && ele._private.parent != null;\n    }\n  },\n  isOrphan: function isOrphan() {\n    var ele = this[0];\n    if (ele) {\n      return ele.isNode() && ele._private.parent == null;\n    }\n  },\n  descendants: function descendants(selector) {\n    var elements = [];\n    function add(eles) {\n      for (var i = 0; i < eles.length; i++) {\n        var ele = eles[i];\n        elements.push(ele);\n        if (ele.children().nonempty()) {\n          add(ele.children());\n        }\n      }\n    }\n    add(this.children());\n    return this.spawn(elements, true).filter(selector);\n  }\n};\nfunction forEachCompound(eles, fn, includeSelf, recursiveStep) {\n  var q = [];\n  var did = new Set$1();\n  var cy = eles.cy();\n  var hasCompounds = cy.hasCompoundNodes();\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    if (includeSelf) {\n      q.push(ele);\n    } else if (hasCompounds) {\n      recursiveStep(q, did, ele);\n    }\n  }\n  while (q.length > 0) {\n    var _ele = q.shift();\n    fn(_ele);\n    did.add(_ele.id());\n    if (hasCompounds) {\n      recursiveStep(q, did, _ele);\n    }\n  }\n  return eles;\n}\nfunction addChildren(q, did, ele) {\n  if (ele.isParent()) {\n    var children = ele._private.children;\n    for (var i = 0; i < children.length; i++) {\n      var child = children[i];\n      if (!did.has(child.id())) {\n        q.push(child);\n      }\n    }\n  }\n}\n\n// very efficient version of eles.add( eles.descendants() ).forEach()\n// for internal use\nelesfn$f.forEachDown = function (fn) {\n  var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  return forEachCompound(this, fn, includeSelf, addChildren);\n};\nfunction addParent(q, did, ele) {\n  if (ele.isChild()) {\n    var parent = ele._private.parent;\n    if (!did.has(parent.id())) {\n      q.push(parent);\n    }\n  }\n}\nelesfn$f.forEachUp = function (fn) {\n  var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  return forEachCompound(this, fn, includeSelf, addParent);\n};\nfunction addParentAndChildren(q, did, ele) {\n  addParent(q, did, ele);\n  addChildren(q, did, ele);\n}\nelesfn$f.forEachUpAndDown = function (fn) {\n  var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  return forEachCompound(this, fn, includeSelf, addParentAndChildren);\n};\n\n// aliases\nelesfn$f.ancestors = elesfn$f.parents;\n\nvar fn$5, elesfn$e;\nfn$5 = elesfn$e = {\n  data: define.data({\n    field: 'data',\n    bindingEvent: 'data',\n    allowBinding: true,\n    allowSetting: true,\n    settingEvent: 'data',\n    settingTriggersEvent: true,\n    triggerFnName: 'trigger',\n    allowGetting: true,\n    immutableKeys: {\n      'id': true,\n      'source': true,\n      'target': true,\n      'parent': true\n    },\n    updateStyle: true\n  }),\n  removeData: define.removeData({\n    field: 'data',\n    event: 'data',\n    triggerFnName: 'trigger',\n    triggerEvent: true,\n    immutableKeys: {\n      'id': true,\n      'source': true,\n      'target': true,\n      'parent': true\n    },\n    updateStyle: true\n  }),\n  scratch: define.data({\n    field: 'scratch',\n    bindingEvent: 'scratch',\n    allowBinding: true,\n    allowSetting: true,\n    settingEvent: 'scratch',\n    settingTriggersEvent: true,\n    triggerFnName: 'trigger',\n    allowGetting: true,\n    updateStyle: true\n  }),\n  removeScratch: define.removeData({\n    field: 'scratch',\n    event: 'scratch',\n    triggerFnName: 'trigger',\n    triggerEvent: true,\n    updateStyle: true\n  }),\n  rscratch: define.data({\n    field: 'rscratch',\n    allowBinding: false,\n    allowSetting: true,\n    settingTriggersEvent: false,\n    allowGetting: true\n  }),\n  removeRscratch: define.removeData({\n    field: 'rscratch',\n    triggerEvent: false\n  }),\n  id: function id() {\n    var ele = this[0];\n    if (ele) {\n      return ele._private.data.id;\n    }\n  }\n};\n\n// aliases\nfn$5.attr = fn$5.data;\nfn$5.removeAttr = fn$5.removeData;\nvar data = elesfn$e;\n\nvar elesfn$d = {};\nfunction defineDegreeFunction(callback) {\n  return function (includeLoops) {\n    var self = this;\n    if (includeLoops === undefined) {\n      includeLoops = true;\n    }\n    if (self.length === 0) {\n      return;\n    }\n    if (self.isNode() && !self.removed()) {\n      var degree = 0;\n      var node = self[0];\n      var connectedEdges = node._private.edges;\n      for (var i = 0; i < connectedEdges.length; i++) {\n        var edge = connectedEdges[i];\n        if (!includeLoops && edge.isLoop()) {\n          continue;\n        }\n        degree += callback(node, edge);\n      }\n      return degree;\n    } else {\n      return;\n    }\n  };\n}\nextend(elesfn$d, {\n  degree: defineDegreeFunction(function (node, edge) {\n    if (edge.source().same(edge.target())) {\n      return 2;\n    } else {\n      return 1;\n    }\n  }),\n  indegree: defineDegreeFunction(function (node, edge) {\n    if (edge.target().same(node)) {\n      return 1;\n    } else {\n      return 0;\n    }\n  }),\n  outdegree: defineDegreeFunction(function (node, edge) {\n    if (edge.source().same(node)) {\n      return 1;\n    } else {\n      return 0;\n    }\n  })\n});\nfunction defineDegreeBoundsFunction(degreeFn, callback) {\n  return function (includeLoops) {\n    var ret;\n    var nodes = this.nodes();\n    for (var i = 0; i < nodes.length; i++) {\n      var ele = nodes[i];\n      var degree = ele[degreeFn](includeLoops);\n      if (degree !== undefined && (ret === undefined || callback(degree, ret))) {\n        ret = degree;\n      }\n    }\n    return ret;\n  };\n}\nextend(elesfn$d, {\n  minDegree: defineDegreeBoundsFunction('degree', function (degree, min) {\n    return degree < min;\n  }),\n  maxDegree: defineDegreeBoundsFunction('degree', function (degree, max) {\n    return degree > max;\n  }),\n  minIndegree: defineDegreeBoundsFunction('indegree', function (degree, min) {\n    return degree < min;\n  }),\n  maxIndegree: defineDegreeBoundsFunction('indegree', function (degree, max) {\n    return degree > max;\n  }),\n  minOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, min) {\n    return degree < min;\n  }),\n  maxOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, max) {\n    return degree > max;\n  })\n});\nextend(elesfn$d, {\n  totalDegree: function totalDegree(includeLoops) {\n    var total = 0;\n    var nodes = this.nodes();\n    for (var i = 0; i < nodes.length; i++) {\n      total += nodes[i].degree(includeLoops);\n    }\n    return total;\n  }\n});\n\nvar fn$4, elesfn$c;\nvar beforePositionSet = function beforePositionSet(eles, newPos, silent) {\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    if (!ele.locked()) {\n      var oldPos = ele._private.position;\n      var delta = {\n        x: newPos.x != null ? newPos.x - oldPos.x : 0,\n        y: newPos.y != null ? newPos.y - oldPos.y : 0\n      };\n      if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) {\n        ele.children().shift(delta, silent);\n      }\n      ele.dirtyBoundingBoxCache();\n    }\n  }\n};\nvar positionDef = {\n  field: 'position',\n  bindingEvent: 'position',\n  allowBinding: true,\n  allowSetting: true,\n  settingEvent: 'position',\n  settingTriggersEvent: true,\n  triggerFnName: 'emitAndNotify',\n  allowGetting: true,\n  validKeys: ['x', 'y'],\n  beforeGet: function beforeGet(ele) {\n    ele.updateCompoundBounds();\n  },\n  beforeSet: function beforeSet(eles, newPos) {\n    beforePositionSet(eles, newPos, false);\n  },\n  onSet: function onSet(eles) {\n    eles.dirtyCompoundBoundsCache();\n  },\n  canSet: function canSet(ele) {\n    return !ele.locked();\n  }\n};\nfn$4 = elesfn$c = {\n  position: define.data(positionDef),\n  // position but no notification to renderer\n  silentPosition: define.data(extend({}, positionDef, {\n    allowBinding: false,\n    allowSetting: true,\n    settingTriggersEvent: false,\n    allowGetting: false,\n    beforeSet: function beforeSet(eles, newPos) {\n      beforePositionSet(eles, newPos, true);\n    },\n    onSet: function onSet(eles) {\n      eles.dirtyCompoundBoundsCache();\n    }\n  })),\n  positions: function positions(pos, silent) {\n    if (plainObject(pos)) {\n      if (silent) {\n        this.silentPosition(pos);\n      } else {\n        this.position(pos);\n      }\n    } else if (fn$6(pos)) {\n      var _fn = pos;\n      var cy = this.cy();\n      cy.startBatch();\n      for (var i = 0; i < this.length; i++) {\n        var ele = this[i];\n        var _pos = undefined;\n        if (_pos = _fn(ele, i)) {\n          if (silent) {\n            ele.silentPosition(_pos);\n          } else {\n            ele.position(_pos);\n          }\n        }\n      }\n      cy.endBatch();\n    }\n    return this; // chaining\n  },\n  silentPositions: function silentPositions(pos) {\n    return this.positions(pos, true);\n  },\n  shift: function shift(dim, val, silent) {\n    var delta;\n    if (plainObject(dim)) {\n      delta = {\n        x: number$1(dim.x) ? dim.x : 0,\n        y: number$1(dim.y) ? dim.y : 0\n      };\n      silent = val;\n    } else if (string(dim) && number$1(val)) {\n      delta = {\n        x: 0,\n        y: 0\n      };\n      delta[dim] = val;\n    }\n    if (delta != null) {\n      var cy = this.cy();\n      cy.startBatch();\n      for (var i = 0; i < this.length; i++) {\n        var ele = this[i];\n\n        // exclude any node that is a descendant of the calling collection\n        if (cy.hasCompoundNodes() && ele.isChild() && ele.ancestors().anySame(this)) {\n          continue;\n        }\n        var pos = ele.position();\n        var newPos = {\n          x: pos.x + delta.x,\n          y: pos.y + delta.y\n        };\n        if (silent) {\n          ele.silentPosition(newPos);\n        } else {\n          ele.position(newPos);\n        }\n      }\n      cy.endBatch();\n    }\n    return this;\n  },\n  silentShift: function silentShift(dim, val) {\n    if (plainObject(dim)) {\n      this.shift(dim, true);\n    } else if (string(dim) && number$1(val)) {\n      this.shift(dim, val, true);\n    }\n    return this;\n  },\n  // get/set the rendered (i.e. on screen) positon of the element\n  renderedPosition: function renderedPosition(dim, val) {\n    var ele = this[0];\n    var cy = this.cy();\n    var zoom = cy.zoom();\n    var pan = cy.pan();\n    var rpos = plainObject(dim) ? dim : undefined;\n    var setting = rpos !== undefined || val !== undefined && string(dim);\n    if (ele && ele.isNode()) {\n      // must have an element and must be a node to return position\n      if (setting) {\n        for (var i = 0; i < this.length; i++) {\n          var _ele = this[i];\n          if (val !== undefined) {\n            // set one dimension\n            _ele.position(dim, (val - pan[dim]) / zoom);\n          } else if (rpos !== undefined) {\n            // set whole position\n            _ele.position(renderedToModelPosition(rpos, zoom, pan));\n          }\n        }\n      } else {\n        // getting\n        var pos = ele.position();\n        rpos = modelToRenderedPosition$1(pos, zoom, pan);\n        if (dim === undefined) {\n          // then return the whole rendered position\n          return rpos;\n        } else {\n          // then return the specified dimension\n          return rpos[dim];\n        }\n      }\n    } else if (!setting) {\n      return undefined; // for empty collection case\n    }\n    return this; // chaining\n  },\n  // get/set the position relative to the parent\n  relativePosition: function relativePosition(dim, val) {\n    var ele = this[0];\n    var cy = this.cy();\n    var ppos = plainObject(dim) ? dim : undefined;\n    var setting = ppos !== undefined || val !== undefined && string(dim);\n    var hasCompoundNodes = cy.hasCompoundNodes();\n    if (ele && ele.isNode()) {\n      // must have an element and must be a node to return position\n      if (setting) {\n        for (var i = 0; i < this.length; i++) {\n          var _ele2 = this[i];\n          var parent = hasCompoundNodes ? _ele2.parent() : null;\n          var hasParent = parent && parent.length > 0;\n          var relativeToParent = hasParent;\n          if (hasParent) {\n            parent = parent[0];\n          }\n          var origin = relativeToParent ? parent.position() : {\n            x: 0,\n            y: 0\n          };\n          if (val !== undefined) {\n            // set one dimension\n            _ele2.position(dim, val + origin[dim]);\n          } else if (ppos !== undefined) {\n            // set whole position\n            _ele2.position({\n              x: ppos.x + origin.x,\n              y: ppos.y + origin.y\n            });\n          }\n        }\n      } else {\n        // getting\n        var pos = ele.position();\n        var _parent = hasCompoundNodes ? ele.parent() : null;\n        var _hasParent = _parent && _parent.length > 0;\n        var _relativeToParent = _hasParent;\n        if (_hasParent) {\n          _parent = _parent[0];\n        }\n        var _origin = _relativeToParent ? _parent.position() : {\n          x: 0,\n          y: 0\n        };\n        ppos = {\n          x: pos.x - _origin.x,\n          y: pos.y - _origin.y\n        };\n        if (dim === undefined) {\n          // then return the whole rendered position\n          return ppos;\n        } else {\n          // then return the specified dimension\n          return ppos[dim];\n        }\n      }\n    } else if (!setting) {\n      return undefined; // for empty collection case\n    }\n    return this; // chaining\n  }\n};\n\n// aliases\nfn$4.modelPosition = fn$4.point = fn$4.position;\nfn$4.modelPositions = fn$4.points = fn$4.positions;\nfn$4.renderedPoint = fn$4.renderedPosition;\nfn$4.relativePoint = fn$4.relativePosition;\nvar position = elesfn$c;\n\nvar fn$3, elesfn$b;\nfn$3 = elesfn$b = {};\nelesfn$b.renderedBoundingBox = function (options) {\n  var bb = this.boundingBox(options);\n  var cy = this.cy();\n  var zoom = cy.zoom();\n  var pan = cy.pan();\n  var x1 = bb.x1 * zoom + pan.x;\n  var x2 = bb.x2 * zoom + pan.x;\n  var y1 = bb.y1 * zoom + pan.y;\n  var y2 = bb.y2 * zoom + pan.y;\n  return {\n    x1: x1,\n    x2: x2,\n    y1: y1,\n    y2: y2,\n    w: x2 - x1,\n    h: y2 - y1\n  };\n};\nelesfn$b.dirtyCompoundBoundsCache = function () {\n  var silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n  var cy = this.cy();\n  if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {\n    return this;\n  }\n  this.forEachUp(function (ele) {\n    if (ele.isParent()) {\n      var _p = ele._private;\n      _p.compoundBoundsClean = false;\n      _p.bbCache = null;\n      if (!silent) {\n        ele.emitAndNotify('bounds');\n      }\n    }\n  });\n  return this;\n};\nelesfn$b.updateCompoundBounds = function () {\n  var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n  var cy = this.cy();\n\n  // not possible to do on non-compound graphs or with the style disabled\n  if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {\n    return this;\n  }\n\n  // save cycles when batching -- but bounds will be stale (or not exist yet)\n  if (!force && cy.batching()) {\n    return this;\n  }\n  function update(parent) {\n    if (!parent.isParent()) {\n      return;\n    }\n    var _p = parent._private;\n    var children = parent.children();\n    var includeLabels = parent.pstyle('compound-sizing-wrt-labels').value === 'include';\n    var min = {\n      width: {\n        val: parent.pstyle('min-width').pfValue,\n        left: parent.pstyle('min-width-bias-left'),\n        right: parent.pstyle('min-width-bias-right')\n      },\n      height: {\n        val: parent.pstyle('min-height').pfValue,\n        top: parent.pstyle('min-height-bias-top'),\n        bottom: parent.pstyle('min-height-bias-bottom')\n      }\n    };\n    var bb = children.boundingBox({\n      includeLabels: includeLabels,\n      includeOverlays: false,\n      // updating the compound bounds happens outside of the regular\n      // cache cycle (i.e. before fired events)\n      useCache: false\n    });\n    var pos = _p.position;\n\n    // if children take up zero area then keep position and fall back on stylesheet w/h\n    if (bb.w === 0 || bb.h === 0) {\n      bb = {\n        w: parent.pstyle('width').pfValue,\n        h: parent.pstyle('height').pfValue\n      };\n      bb.x1 = pos.x - bb.w / 2;\n      bb.x2 = pos.x + bb.w / 2;\n      bb.y1 = pos.y - bb.h / 2;\n      bb.y2 = pos.y + bb.h / 2;\n    }\n    function computeBiasValues(propDiff, propBias, propBiasComplement) {\n      var biasDiff = 0;\n      var biasComplementDiff = 0;\n      var biasTotal = propBias + propBiasComplement;\n      if (propDiff > 0 && biasTotal > 0) {\n        biasDiff = propBias / biasTotal * propDiff;\n        biasComplementDiff = propBiasComplement / biasTotal * propDiff;\n      }\n      return {\n        biasDiff: biasDiff,\n        biasComplementDiff: biasComplementDiff\n      };\n    }\n    function computePaddingValues(width, height, paddingObject, relativeTo) {\n      // Assuming percentage is number from 0 to 1\n      if (paddingObject.units === '%') {\n        switch (relativeTo) {\n          case 'width':\n            return width > 0 ? paddingObject.pfValue * width : 0;\n          case 'height':\n            return height > 0 ? paddingObject.pfValue * height : 0;\n          case 'average':\n            return width > 0 && height > 0 ? paddingObject.pfValue * (width + height) / 2 : 0;\n          case 'min':\n            return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * height : paddingObject.pfValue * width : 0;\n          case 'max':\n            return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * width : paddingObject.pfValue * height : 0;\n          default:\n            return 0;\n        }\n      } else if (paddingObject.units === 'px') {\n        return paddingObject.pfValue;\n      } else {\n        return 0;\n      }\n    }\n    var leftVal = min.width.left.value;\n    if (min.width.left.units === 'px' && min.width.val > 0) {\n      leftVal = leftVal * 100 / min.width.val;\n    }\n    var rightVal = min.width.right.value;\n    if (min.width.right.units === 'px' && min.width.val > 0) {\n      rightVal = rightVal * 100 / min.width.val;\n    }\n    var topVal = min.height.top.value;\n    if (min.height.top.units === 'px' && min.height.val > 0) {\n      topVal = topVal * 100 / min.height.val;\n    }\n    var bottomVal = min.height.bottom.value;\n    if (min.height.bottom.units === 'px' && min.height.val > 0) {\n      bottomVal = bottomVal * 100 / min.height.val;\n    }\n    var widthBiasDiffs = computeBiasValues(min.width.val - bb.w, leftVal, rightVal);\n    var diffLeft = widthBiasDiffs.biasDiff;\n    var diffRight = widthBiasDiffs.biasComplementDiff;\n    var heightBiasDiffs = computeBiasValues(min.height.val - bb.h, topVal, bottomVal);\n    var diffTop = heightBiasDiffs.biasDiff;\n    var diffBottom = heightBiasDiffs.biasComplementDiff;\n    _p.autoPadding = computePaddingValues(bb.w, bb.h, parent.pstyle('padding'), parent.pstyle('padding-relative-to').value);\n    _p.autoWidth = Math.max(bb.w, min.width.val);\n    pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2;\n    _p.autoHeight = Math.max(bb.h, min.height.val);\n    pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2;\n  }\n  for (var i = 0; i < this.length; i++) {\n    var ele = this[i];\n    var _p = ele._private;\n    if (!_p.compoundBoundsClean || force) {\n      update(ele);\n      if (!cy.batching()) {\n        _p.compoundBoundsClean = true;\n      }\n    }\n  }\n  return this;\n};\nvar noninf = function noninf(x) {\n  if (x === Infinity || x === -Infinity) {\n    return 0;\n  }\n  return x;\n};\nvar updateBounds = function updateBounds(b, x1, y1, x2, y2) {\n  // don't update with zero area boxes\n  if (x2 - x1 === 0 || y2 - y1 === 0) {\n    return;\n  }\n\n  // don't update with null dim\n  if (x1 == null || y1 == null || x2 == null || y2 == null) {\n    return;\n  }\n  b.x1 = x1 < b.x1 ? x1 : b.x1;\n  b.x2 = x2 > b.x2 ? x2 : b.x2;\n  b.y1 = y1 < b.y1 ? y1 : b.y1;\n  b.y2 = y2 > b.y2 ? y2 : b.y2;\n  b.w = b.x2 - b.x1;\n  b.h = b.y2 - b.y1;\n};\nvar updateBoundsFromBox = function updateBoundsFromBox(b, b2) {\n  if (b2 == null) {\n    return b;\n  }\n  return updateBounds(b, b2.x1, b2.y1, b2.x2, b2.y2);\n};\nvar prefixedProperty = function prefixedProperty(obj, field, prefix) {\n  return getPrefixedProperty(obj, field, prefix);\n};\nvar updateBoundsFromArrow = function updateBoundsFromArrow(bounds, ele, prefix) {\n  if (ele.cy().headless()) {\n    return;\n  }\n  var _p = ele._private;\n  var rstyle = _p.rstyle;\n  var halfArW = rstyle.arrowWidth / 2;\n  var arrowType = ele.pstyle(prefix + '-arrow-shape').value;\n  var x;\n  var y;\n  if (arrowType !== 'none') {\n    if (prefix === 'source') {\n      x = rstyle.srcX;\n      y = rstyle.srcY;\n    } else if (prefix === 'target') {\n      x = rstyle.tgtX;\n      y = rstyle.tgtY;\n    } else {\n      x = rstyle.midX;\n      y = rstyle.midY;\n    }\n\n    // always store the individual arrow bounds\n    var bbs = _p.arrowBounds = _p.arrowBounds || {};\n    var bb = bbs[prefix] = bbs[prefix] || {};\n    bb.x1 = x - halfArW;\n    bb.y1 = y - halfArW;\n    bb.x2 = x + halfArW;\n    bb.y2 = y + halfArW;\n    bb.w = bb.x2 - bb.x1;\n    bb.h = bb.y2 - bb.y1;\n    expandBoundingBox(bb, 1);\n    updateBounds(bounds, bb.x1, bb.y1, bb.x2, bb.y2);\n  }\n};\nvar updateBoundsFromLabel = function updateBoundsFromLabel(bounds, ele, prefix) {\n  if (ele.cy().headless()) {\n    return;\n  }\n  var prefixDash;\n  if (prefix) {\n    prefixDash = prefix + '-';\n  } else {\n    prefixDash = '';\n  }\n  var _p = ele._private;\n  var rstyle = _p.rstyle;\n  var label = ele.pstyle(prefixDash + 'label').strValue;\n  if (label) {\n    var halign = ele.pstyle('text-halign');\n    var valign = ele.pstyle('text-valign');\n    var labelWidth = prefixedProperty(rstyle, 'labelWidth', prefix);\n    var labelHeight = prefixedProperty(rstyle, 'labelHeight', prefix);\n    var labelX = prefixedProperty(rstyle, 'labelX', prefix);\n    var labelY = prefixedProperty(rstyle, 'labelY', prefix);\n    var marginX = ele.pstyle(prefixDash + 'text-margin-x').pfValue;\n    var marginY = ele.pstyle(prefixDash + 'text-margin-y').pfValue;\n    var isEdge = ele.isEdge();\n    var rotation = ele.pstyle(prefixDash + 'text-rotation');\n    var outlineWidth = ele.pstyle('text-outline-width').pfValue;\n    var borderWidth = ele.pstyle('text-border-width').pfValue;\n    var halfBorderWidth = borderWidth / 2;\n    var padding = ele.pstyle('text-background-padding').pfValue;\n    var marginOfError = 2; // expand to work around browser dimension inaccuracies\n\n    var lh = labelHeight;\n    var lw = labelWidth;\n    var lw_2 = lw / 2;\n    var lh_2 = lh / 2;\n    var lx1, lx2, ly1, ly2;\n    if (isEdge) {\n      lx1 = labelX - lw_2;\n      lx2 = labelX + lw_2;\n      ly1 = labelY - lh_2;\n      ly2 = labelY + lh_2;\n    } else {\n      switch (halign.value) {\n        case 'left':\n          lx1 = labelX - lw;\n          lx2 = labelX;\n          break;\n        case 'center':\n          lx1 = labelX - lw_2;\n          lx2 = labelX + lw_2;\n          break;\n        case 'right':\n          lx1 = labelX;\n          lx2 = labelX + lw;\n          break;\n      }\n      switch (valign.value) {\n        case 'top':\n          ly1 = labelY - lh;\n          ly2 = labelY;\n          break;\n        case 'center':\n          ly1 = labelY - lh_2;\n          ly2 = labelY + lh_2;\n          break;\n        case 'bottom':\n          ly1 = labelY;\n          ly2 = labelY + lh;\n          break;\n      }\n    }\n\n    // shift by margin and expand by outline and border\n    var leftPad = marginX - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError;\n    var rightPad = marginX + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError;\n    var topPad = marginY - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError;\n    var botPad = marginY + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError;\n    lx1 += leftPad;\n    lx2 += rightPad;\n    ly1 += topPad;\n    ly2 += botPad;\n\n    // always store the unrotated label bounds separately\n    var bbPrefix = prefix || 'main';\n    var bbs = _p.labelBounds;\n    var bb = bbs[bbPrefix] = bbs[bbPrefix] || {};\n    bb.x1 = lx1;\n    bb.y1 = ly1;\n    bb.x2 = lx2;\n    bb.y2 = ly2;\n    bb.w = lx2 - lx1;\n    bb.h = ly2 - ly1;\n    bb.leftPad = leftPad;\n    bb.rightPad = rightPad;\n    bb.topPad = topPad;\n    bb.botPad = botPad;\n    var isAutorotate = isEdge && rotation.strValue === 'autorotate';\n    var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0;\n    if (isAutorotate || isPfValue) {\n      var theta = isAutorotate ? prefixedProperty(_p.rstyle, 'labelAngle', prefix) : rotation.pfValue;\n      var cos = Math.cos(theta);\n      var sin = Math.sin(theta);\n\n      // rotation point (default value for center-center)\n      var xo = (lx1 + lx2) / 2;\n      var yo = (ly1 + ly2) / 2;\n      if (!isEdge) {\n        switch (halign.value) {\n          case 'left':\n            xo = lx2;\n            break;\n          case 'right':\n            xo = lx1;\n            break;\n        }\n        switch (valign.value) {\n          case 'top':\n            yo = ly2;\n            break;\n          case 'bottom':\n            yo = ly1;\n            break;\n        }\n      }\n      var rotate = function rotate(x, y) {\n        x = x - xo;\n        y = y - yo;\n        return {\n          x: x * cos - y * sin + xo,\n          y: x * sin + y * cos + yo\n        };\n      };\n      var px1y1 = rotate(lx1, ly1);\n      var px1y2 = rotate(lx1, ly2);\n      var px2y1 = rotate(lx2, ly1);\n      var px2y2 = rotate(lx2, ly2);\n      lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x);\n      lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x);\n      ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y);\n      ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y);\n    }\n    var bbPrefixRot = bbPrefix + 'Rot';\n    var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {};\n    bbRot.x1 = lx1;\n    bbRot.y1 = ly1;\n    bbRot.x2 = lx2;\n    bbRot.y2 = ly2;\n    bbRot.w = lx2 - lx1;\n    bbRot.h = ly2 - ly1;\n    updateBounds(bounds, lx1, ly1, lx2, ly2);\n    updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2);\n  }\n  return bounds;\n};\nvar updateBoundsFromOutline = function updateBoundsFromOutline(bounds, ele) {\n  if (ele.cy().headless()) {\n    return;\n  }\n  var outlineOpacity = ele.pstyle('outline-opacity').value;\n  var outlineWidth = ele.pstyle('outline-width').value;\n  var outlineOffset = ele.pstyle('outline-offset').value;\n  var expansion = outlineWidth + outlineOffset;\n  updateBoundsFromMiter(bounds, ele, outlineOpacity, expansion, 'outside', expansion / 2);\n};\nvar updateBoundsFromMiter = function updateBoundsFromMiter(bounds, ele, opacity, expansionSize, expansionPosition, useFallbackValue) {\n  if (opacity === 0 || expansionSize <= 0 || expansionPosition === 'inside') {\n    return;\n  }\n  var cy = ele.cy();\n  var r = cy.renderer();\n  var rshape = r.nodeShapes[r.getNodeShape(ele)];\n  if (!rshape) {\n    return;\n  }\n  var _ele$position = ele.position(),\n    x = _ele$position.x,\n    y = _ele$position.y;\n  var w = ele.width();\n  var h = ele.height();\n  if (rshape.hasMiterBounds) {\n    if (expansionPosition === 'center') {\n      expansionSize /= 2;\n    }\n    var mbb = rshape.miterBounds(x, y, w, h, expansionSize);\n    updateBoundsFromBox(bounds, mbb);\n  } else if (useFallbackValue != null && useFallbackValue > 0) {\n    expandBoundingBoxSides(bounds, [useFallbackValue, useFallbackValue, useFallbackValue, useFallbackValue]);\n  }\n};\nvar updateBoundsFromMiterBorder = function updateBoundsFromMiterBorder(bounds, ele) {\n  if (ele.cy().headless()) {\n    return;\n  }\n  var borderOpacity = ele.pstyle('border-opacity').value;\n  var borderWidth = ele.pstyle('border-width').pfValue;\n  var borderPosition = ele.pstyle('border-position').value;\n  updateBoundsFromMiter(bounds, ele, borderOpacity, borderWidth, borderPosition);\n};\n\n// get the bounding box of the elements (in raw model position)\nvar boundingBoxImpl = function boundingBoxImpl(ele, options) {\n  var cy = ele._private.cy;\n  var styleEnabled = cy.styleEnabled();\n  var headless = cy.headless();\n  var bounds = makeBoundingBox();\n  var _p = ele._private;\n  var isNode = ele.isNode();\n  var isEdge = ele.isEdge();\n  var ex1, ex2, ey1, ey2; // extrema of body / lines\n  var x, y; // node pos\n  var rstyle = _p.rstyle;\n  var manualExpansion = isNode && styleEnabled ? ele.pstyle('bounds-expansion').pfValue : [0];\n\n  // must use `display` prop only, as reading `compound.width()` causes recursion\n  // (other factors like width values will be considered later in this function anyway)\n  var isDisplayed = function isDisplayed(ele) {\n    return ele.pstyle('display').value !== 'none';\n  };\n  var displayed = !styleEnabled || isDisplayed(ele)\n\n  // must take into account connected nodes b/c of implicit edge hiding on display:none node\n  && (!isEdge || isDisplayed(ele.source()) && isDisplayed(ele.target()));\n  if (displayed) {\n    // displayed suffices, since we will find zero area eles anyway\n    var overlayOpacity = 0;\n    var overlayPadding = 0;\n    if (styleEnabled && options.includeOverlays) {\n      overlayOpacity = ele.pstyle('overlay-opacity').value;\n      if (overlayOpacity !== 0) {\n        overlayPadding = ele.pstyle('overlay-padding').value;\n      }\n    }\n    var underlayOpacity = 0;\n    var underlayPadding = 0;\n    if (styleEnabled && options.includeUnderlays) {\n      underlayOpacity = ele.pstyle('underlay-opacity').value;\n      if (underlayOpacity !== 0) {\n        underlayPadding = ele.pstyle('underlay-padding').value;\n      }\n    }\n    var padding = Math.max(overlayPadding, underlayPadding);\n    var w = 0;\n    var wHalf = 0;\n    if (styleEnabled) {\n      w = ele.pstyle('width').pfValue;\n      wHalf = w / 2;\n    }\n    if (isNode && options.includeNodes) {\n      var pos = ele.position();\n      x = pos.x;\n      y = pos.y;\n      var _w = ele.outerWidth();\n      var halfW = _w / 2;\n      var h = ele.outerHeight();\n      var halfH = h / 2;\n\n      // handle node dimensions\n      /////////////////////////\n\n      ex1 = x - halfW;\n      ex2 = x + halfW;\n      ey1 = y - halfH;\n      ey2 = y + halfH;\n      updateBounds(bounds, ex1, ey1, ex2, ey2);\n      if (styleEnabled) {\n        updateBoundsFromOutline(bounds, ele);\n      }\n      if (styleEnabled && options.includeOutlines && !headless) {\n        updateBoundsFromOutline(bounds, ele);\n      }\n      if (styleEnabled) {\n        updateBoundsFromMiterBorder(bounds, ele);\n      }\n    } else if (isEdge && options.includeEdges) {\n      if (styleEnabled && !headless) {\n        var curveStyle = ele.pstyle('curve-style').strValue;\n\n        // handle edge dimensions (rough box estimate)\n        //////////////////////////////////////////////\n\n        ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX);\n        ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX);\n        ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY);\n        ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY);\n\n        // take into account edge width\n        ex1 -= wHalf;\n        ex2 += wHalf;\n        ey1 -= wHalf;\n        ey2 += wHalf;\n        updateBounds(bounds, ex1, ey1, ex2, ey2);\n\n        // precise edges\n        ////////////////\n\n        if (curveStyle === 'haystack') {\n          var hpts = rstyle.haystackPts;\n          if (hpts && hpts.length === 2) {\n            ex1 = hpts[0].x;\n            ey1 = hpts[0].y;\n            ex2 = hpts[1].x;\n            ey2 = hpts[1].y;\n            if (ex1 > ex2) {\n              var temp = ex1;\n              ex1 = ex2;\n              ex2 = temp;\n            }\n            if (ey1 > ey2) {\n              var _temp = ey1;\n              ey1 = ey2;\n              ey2 = _temp;\n            }\n            updateBounds(bounds, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf);\n          }\n        } else if (curveStyle === 'bezier' || curveStyle === 'unbundled-bezier' || endsWith(curveStyle, 'segments') || endsWith(curveStyle, 'taxi')) {\n          var pts;\n          switch (curveStyle) {\n            case 'bezier':\n            case 'unbundled-bezier':\n              pts = rstyle.bezierPts;\n              break;\n            case 'segments':\n            case 'taxi':\n            case 'round-segments':\n            case 'round-taxi':\n              pts = rstyle.linePts;\n              break;\n          }\n          if (pts != null) {\n            for (var j = 0; j < pts.length; j++) {\n              var pt = pts[j];\n              ex1 = pt.x - wHalf;\n              ex2 = pt.x + wHalf;\n              ey1 = pt.y - wHalf;\n              ey2 = pt.y + wHalf;\n              updateBounds(bounds, ex1, ey1, ex2, ey2);\n            }\n          }\n        } // bezier-like or segment-like edge\n      } else {\n        // headless or style disabled\n\n        // fallback on source and target positions\n        //////////////////////////////////////////\n\n        var n1 = ele.source();\n        var n1pos = n1.position();\n        var n2 = ele.target();\n        var n2pos = n2.position();\n        ex1 = n1pos.x;\n        ex2 = n2pos.x;\n        ey1 = n1pos.y;\n        ey2 = n2pos.y;\n        if (ex1 > ex2) {\n          var _temp2 = ex1;\n          ex1 = ex2;\n          ex2 = _temp2;\n        }\n        if (ey1 > ey2) {\n          var _temp3 = ey1;\n          ey1 = ey2;\n          ey2 = _temp3;\n        }\n\n        // take into account edge width\n        ex1 -= wHalf;\n        ex2 += wHalf;\n        ey1 -= wHalf;\n        ey2 += wHalf;\n        updateBounds(bounds, ex1, ey1, ex2, ey2);\n      } // headless or style disabled\n    } // edges\n\n    // handle edge arrow size\n    /////////////////////////\n\n    if (styleEnabled && options.includeEdges && isEdge) {\n      updateBoundsFromArrow(bounds, ele, 'mid-source');\n      updateBoundsFromArrow(bounds, ele, 'mid-target');\n      updateBoundsFromArrow(bounds, ele, 'source');\n      updateBoundsFromArrow(bounds, ele, 'target');\n    }\n\n    // ghost\n    ////////\n\n    if (styleEnabled) {\n      var ghost = ele.pstyle('ghost').value === 'yes';\n      if (ghost) {\n        var gx = ele.pstyle('ghost-offset-x').pfValue;\n        var gy = ele.pstyle('ghost-offset-y').pfValue;\n        updateBounds(bounds, bounds.x1 + gx, bounds.y1 + gy, bounds.x2 + gx, bounds.y2 + gy);\n      }\n    }\n\n    // always store the body bounds separately from the labels\n    var bbBody = _p.bodyBounds = _p.bodyBounds || {};\n    assignBoundingBox(bbBody, bounds);\n    expandBoundingBoxSides(bbBody, manualExpansion);\n    expandBoundingBox(bbBody, 1); // expand to work around browser dimension inaccuracies\n\n    // overlay\n    //////////\n\n    if (styleEnabled) {\n      ex1 = bounds.x1;\n      ex2 = bounds.x2;\n      ey1 = bounds.y1;\n      ey2 = bounds.y2;\n      updateBounds(bounds, ex1 - padding, ey1 - padding, ex2 + padding, ey2 + padding);\n    }\n\n    // always store the body bounds separately from the labels\n    var bbOverlay = _p.overlayBounds = _p.overlayBounds || {};\n    assignBoundingBox(bbOverlay, bounds);\n    expandBoundingBoxSides(bbOverlay, manualExpansion);\n    expandBoundingBox(bbOverlay, 1); // expand to work around browser dimension inaccuracies\n\n    // handle label dimensions\n    //////////////////////////\n\n    var bbLabels = _p.labelBounds = _p.labelBounds || {};\n    if (bbLabels.all != null) {\n      clearBoundingBox(bbLabels.all);\n    } else {\n      bbLabels.all = makeBoundingBox();\n    }\n    if (styleEnabled && options.includeLabels) {\n      if (options.includeMainLabels) {\n        updateBoundsFromLabel(bounds, ele, null);\n      }\n      if (isEdge) {\n        if (options.includeSourceLabels) {\n          updateBoundsFromLabel(bounds, ele, 'source');\n        }\n        if (options.includeTargetLabels) {\n          updateBoundsFromLabel(bounds, ele, 'target');\n        }\n      }\n    } // style enabled for labels\n  } // if displayed\n\n  bounds.x1 = noninf(bounds.x1);\n  bounds.y1 = noninf(bounds.y1);\n  bounds.x2 = noninf(bounds.x2);\n  bounds.y2 = noninf(bounds.y2);\n  bounds.w = noninf(bounds.x2 - bounds.x1);\n  bounds.h = noninf(bounds.y2 - bounds.y1);\n  if (bounds.w > 0 && bounds.h > 0 && displayed) {\n    expandBoundingBoxSides(bounds, manualExpansion);\n\n    // expand bounds by 1 because antialiasing can increase the visual/effective size by 1 on all sides\n    expandBoundingBox(bounds, 1);\n  }\n  return bounds;\n};\nvar getKey = function getKey(opts) {\n  var i = 0;\n  var tf = function tf(val) {\n    return (val ? 1 : 0) << i++;\n  };\n  var key = 0;\n  key += tf(opts.incudeNodes);\n  key += tf(opts.includeEdges);\n  key += tf(opts.includeLabels);\n  key += tf(opts.includeMainLabels);\n  key += tf(opts.includeSourceLabels);\n  key += tf(opts.includeTargetLabels);\n  key += tf(opts.includeOverlays);\n  key += tf(opts.includeOutlines);\n  return key;\n};\nvar getBoundingBoxPosKey = function getBoundingBoxPosKey(ele) {\n  var r = function r(x) {\n    return Math.round(x);\n  };\n  if (ele.isEdge()) {\n    var p1 = ele.source().position();\n    var p2 = ele.target().position();\n    return hashIntsArray([r(p1.x), r(p1.y), r(p2.x), r(p2.y)]);\n  } else {\n    var p = ele.position();\n    return hashIntsArray([r(p.x), r(p.y)]);\n  }\n};\nvar cachedBoundingBoxImpl = function cachedBoundingBoxImpl(ele, opts) {\n  var _p = ele._private;\n  var bb;\n  var isEdge = ele.isEdge();\n  var key = opts == null ? defBbOptsKey : getKey(opts);\n  var usingDefOpts = key === defBbOptsKey;\n  if (_p.bbCache == null) {\n    bb = boundingBoxImpl(ele, defBbOpts);\n    _p.bbCache = bb;\n    _p.bbCachePosKey = getBoundingBoxPosKey(ele);\n  } else {\n    bb = _p.bbCache;\n  }\n\n  // not using def opts => need to build up bb from combination of sub bbs\n  if (!usingDefOpts) {\n    var isNode = ele.isNode();\n    bb = makeBoundingBox();\n    if (opts.includeNodes && isNode || opts.includeEdges && !isNode) {\n      if (opts.includeOverlays) {\n        updateBoundsFromBox(bb, _p.overlayBounds);\n      } else {\n        updateBoundsFromBox(bb, _p.bodyBounds);\n      }\n    }\n    if (opts.includeLabels) {\n      if (opts.includeMainLabels && (!isEdge || opts.includeSourceLabels && opts.includeTargetLabels)) {\n        updateBoundsFromBox(bb, _p.labelBounds.all);\n      } else {\n        if (opts.includeMainLabels) {\n          updateBoundsFromBox(bb, _p.labelBounds.mainRot);\n        }\n        if (opts.includeSourceLabels) {\n          updateBoundsFromBox(bb, _p.labelBounds.sourceRot);\n        }\n        if (opts.includeTargetLabels) {\n          updateBoundsFromBox(bb, _p.labelBounds.targetRot);\n        }\n      }\n    }\n    bb.w = bb.x2 - bb.x1;\n    bb.h = bb.y2 - bb.y1;\n  }\n  return bb;\n};\nvar defBbOpts = {\n  includeNodes: true,\n  includeEdges: true,\n  includeLabels: true,\n  includeMainLabels: true,\n  includeSourceLabels: true,\n  includeTargetLabels: true,\n  includeOverlays: true,\n  includeUnderlays: true,\n  includeOutlines: true,\n  useCache: true\n};\nvar defBbOptsKey = getKey(defBbOpts);\nvar filledBbOpts = defaults$g(defBbOpts);\nelesfn$b.boundingBox = function (options) {\n  var bounds;\n  var useCache = options === undefined || options.useCache === undefined || options.useCache === true;\n  var isDirty = memoize(function (ele) {\n    var _p = ele._private;\n    return _p.bbCache == null || _p.styleDirty || _p.bbCachePosKey !== getBoundingBoxPosKey(ele);\n  }, function (ele) {\n    return ele.id();\n  });\n\n  // the main usecase is ele.boundingBox() for a single element with no/def options\n  // specified s.t. the cache is used, so check for this case to make it faster by\n  // avoiding the overhead of the rest of the function\n  if (useCache && this.length === 1 && !isDirty(this[0])) {\n    if (options === undefined) {\n      options = defBbOpts;\n    } else {\n      options = filledBbOpts(options);\n    }\n    bounds = cachedBoundingBoxImpl(this[0], options);\n  } else {\n    bounds = makeBoundingBox();\n    options = options || defBbOpts;\n    var opts = filledBbOpts(options);\n    var eles = this;\n    var cy = eles.cy();\n    var styleEnabled = cy.styleEnabled();\n\n    // cache the isDirty state for all eles, edges first since they depend on node state\n    this.edges().forEach(isDirty);\n    this.nodes().forEach(isDirty);\n    if (styleEnabled) {\n      this.recalculateRenderedStyle(useCache);\n    }\n    this.updateCompoundBounds(!useCache);\n    for (var i = 0; i < eles.length; i++) {\n      var ele = eles[i];\n      if (isDirty(ele)) {\n        ele.dirtyBoundingBoxCache();\n      }\n      updateBoundsFromBox(bounds, cachedBoundingBoxImpl(ele, opts));\n    }\n  }\n  bounds.x1 = noninf(bounds.x1);\n  bounds.y1 = noninf(bounds.y1);\n  bounds.x2 = noninf(bounds.x2);\n  bounds.y2 = noninf(bounds.y2);\n  bounds.w = noninf(bounds.x2 - bounds.x1);\n  bounds.h = noninf(bounds.y2 - bounds.y1);\n  return bounds;\n};\nelesfn$b.dirtyBoundingBoxCache = function () {\n  for (var i = 0; i < this.length; i++) {\n    var _p = this[i]._private;\n    _p.bbCache = null;\n    _p.bbCachePosKey = null;\n    _p.bodyBounds = null;\n    _p.overlayBounds = null;\n    _p.labelBounds.all = null;\n    _p.labelBounds.source = null;\n    _p.labelBounds.target = null;\n    _p.labelBounds.main = null;\n    _p.labelBounds.sourceRot = null;\n    _p.labelBounds.targetRot = null;\n    _p.labelBounds.mainRot = null;\n    _p.arrowBounds.source = null;\n    _p.arrowBounds.target = null;\n    _p.arrowBounds['mid-source'] = null;\n    _p.arrowBounds['mid-target'] = null;\n  }\n  this.emitAndNotify('bounds');\n  return this;\n};\n\n// private helper to get bounding box for custom node positions\n// - good for perf in certain cases but currently requires dirtying the rendered style\n// - would be better to not modify the nodes but the nodes are read directly everywhere in the renderer...\n// - try to use for only things like discrete layouts where the node position would change anyway\nelesfn$b.boundingBoxAt = function (fn) {\n  var nodes = this.nodes();\n  var cy = this.cy();\n  var hasCompoundNodes = cy.hasCompoundNodes();\n  var parents = cy.collection();\n  if (hasCompoundNodes) {\n    parents = nodes.filter(function (node) {\n      return node.isParent();\n    });\n    nodes = nodes.not(parents);\n  }\n  if (plainObject(fn)) {\n    var obj = fn;\n    fn = function fn() {\n      return obj;\n    };\n  }\n  var storeOldPos = function storeOldPos(node, i) {\n    return node._private.bbAtOldPos = fn(node, i);\n  };\n  var getOldPos = function getOldPos(node) {\n    return node._private.bbAtOldPos;\n  };\n  cy.startBatch();\n  nodes.forEach(storeOldPos).silentPositions(fn);\n  if (hasCompoundNodes) {\n    parents.dirtyCompoundBoundsCache();\n    parents.dirtyBoundingBoxCache();\n    parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle\n  }\n  var bb = copyBoundingBox(this.boundingBox({\n    useCache: false\n  }));\n  nodes.silentPositions(getOldPos);\n  if (hasCompoundNodes) {\n    parents.dirtyCompoundBoundsCache();\n    parents.dirtyBoundingBoxCache();\n    parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle\n  }\n  cy.endBatch();\n  return bb;\n};\nfn$3.boundingbox = fn$3.bb = fn$3.boundingBox;\nfn$3.renderedBoundingbox = fn$3.renderedBoundingBox;\nvar bounds = elesfn$b;\n\nvar fn$2, elesfn$a;\nfn$2 = elesfn$a = {};\nvar defineDimFns = function defineDimFns(opts) {\n  opts.uppercaseName = capitalize(opts.name);\n  opts.autoName = 'auto' + opts.uppercaseName;\n  opts.labelName = 'label' + opts.uppercaseName;\n  opts.outerName = 'outer' + opts.uppercaseName;\n  opts.uppercaseOuterName = capitalize(opts.outerName);\n  fn$2[opts.name] = function dimImpl() {\n    var ele = this[0];\n    var _p = ele._private;\n    var cy = _p.cy;\n    var styleEnabled = cy._private.styleEnabled;\n    if (ele) {\n      if (styleEnabled) {\n        if (ele.isParent()) {\n          ele.updateCompoundBounds();\n          return _p[opts.autoName] || 0;\n        }\n        var d = ele.pstyle(opts.name);\n        switch (d.strValue) {\n          case 'label':\n            ele.recalculateRenderedStyle();\n            return _p.rstyle[opts.labelName] || 0;\n          default:\n            return d.pfValue;\n        }\n      } else {\n        return 1;\n      }\n    }\n  };\n  fn$2['outer' + opts.uppercaseName] = function outerDimImpl() {\n    var ele = this[0];\n    var _p = ele._private;\n    var cy = _p.cy;\n    var styleEnabled = cy._private.styleEnabled;\n    if (ele) {\n      if (styleEnabled) {\n        var dim = ele[opts.name]();\n        var borderPos = ele.pstyle('border-position').value;\n        var border;\n        if (borderPos === 'center') {\n          border = ele.pstyle('border-width').pfValue; // n.b. 1/2 each side\n        } else if (borderPos === 'outside') {\n          border = 2 * ele.pstyle('border-width').pfValue;\n        } else {\n          // 'inside'\n          border = 0;\n        }\n        var padding = 2 * ele.padding();\n        return dim + border + padding;\n      } else {\n        return 1;\n      }\n    }\n  };\n  fn$2['rendered' + opts.uppercaseName] = function renderedDimImpl() {\n    var ele = this[0];\n    if (ele) {\n      var d = ele[opts.name]();\n      return d * this.cy().zoom();\n    }\n  };\n  fn$2['rendered' + opts.uppercaseOuterName] = function renderedOuterDimImpl() {\n    var ele = this[0];\n    if (ele) {\n      var od = ele[opts.outerName]();\n      return od * this.cy().zoom();\n    }\n  };\n};\ndefineDimFns({\n  name: 'width'\n});\ndefineDimFns({\n  name: 'height'\n});\nelesfn$a.padding = function () {\n  var ele = this[0];\n  var _p = ele._private;\n  if (ele.isParent()) {\n    ele.updateCompoundBounds();\n    if (_p.autoPadding !== undefined) {\n      return _p.autoPadding;\n    } else {\n      return ele.pstyle('padding').pfValue;\n    }\n  } else {\n    return ele.pstyle('padding').pfValue;\n  }\n};\nelesfn$a.paddedHeight = function () {\n  var ele = this[0];\n  return ele.height() + 2 * ele.padding();\n};\nelesfn$a.paddedWidth = function () {\n  var ele = this[0];\n  return ele.width() + 2 * ele.padding();\n};\nvar widthHeight = elesfn$a;\n\nvar ifEdge = function ifEdge(ele, getValue) {\n  if (ele.isEdge() && ele.takesUpSpace()) {\n    return getValue(ele);\n  }\n};\nvar ifEdgeRenderedPosition = function ifEdgeRenderedPosition(ele, getPoint) {\n  if (ele.isEdge() && ele.takesUpSpace()) {\n    var cy = ele.cy();\n    return modelToRenderedPosition$1(getPoint(ele), cy.zoom(), cy.pan());\n  }\n};\nvar ifEdgeRenderedPositions = function ifEdgeRenderedPositions(ele, getPoints) {\n  if (ele.isEdge() && ele.takesUpSpace()) {\n    var cy = ele.cy();\n    var pan = cy.pan();\n    var zoom = cy.zoom();\n    return getPoints(ele).map(function (p) {\n      return modelToRenderedPosition$1(p, zoom, pan);\n    });\n  }\n};\nvar controlPoints = function controlPoints(ele) {\n  return ele.renderer().getControlPoints(ele);\n};\nvar segmentPoints = function segmentPoints(ele) {\n  return ele.renderer().getSegmentPoints(ele);\n};\nvar sourceEndpoint = function sourceEndpoint(ele) {\n  return ele.renderer().getSourceEndpoint(ele);\n};\nvar targetEndpoint = function targetEndpoint(ele) {\n  return ele.renderer().getTargetEndpoint(ele);\n};\nvar midpoint = function midpoint(ele) {\n  return ele.renderer().getEdgeMidpoint(ele);\n};\nvar pts = {\n  controlPoints: {\n    get: controlPoints,\n    mult: true\n  },\n  segmentPoints: {\n    get: segmentPoints,\n    mult: true\n  },\n  sourceEndpoint: {\n    get: sourceEndpoint\n  },\n  targetEndpoint: {\n    get: targetEndpoint\n  },\n  midpoint: {\n    get: midpoint\n  }\n};\nvar renderedName = function renderedName(name) {\n  return 'rendered' + name[0].toUpperCase() + name.substr(1);\n};\nvar edgePoints = Object.keys(pts).reduce(function (obj, name) {\n  var spec = pts[name];\n  var rName = renderedName(name);\n  obj[name] = function () {\n    return ifEdge(this, spec.get);\n  };\n  if (spec.mult) {\n    obj[rName] = function () {\n      return ifEdgeRenderedPositions(this, spec.get);\n    };\n  } else {\n    obj[rName] = function () {\n      return ifEdgeRenderedPosition(this, spec.get);\n    };\n  }\n  return obj;\n}, {});\n\nvar dimensions = extend({}, position, bounds, widthHeight, edgePoints);\n\n/*!\nEvent object based on jQuery events, MIT license\n\nhttps://jquery.org/license/\nhttps://tldrlegal.com/license/mit-license\nhttps://github.com/jquery/jquery/blob/master/src/event.js\n*/\n\nvar Event = function Event(src, props) {\n  this.recycle(src, props);\n};\nfunction returnFalse() {\n  return false;\n}\nfunction returnTrue() {\n  return true;\n}\n\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\nEvent.prototype = {\n  instanceString: function instanceString() {\n    return 'event';\n  },\n  recycle: function recycle(src, props) {\n    this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse;\n    if (src != null && src.preventDefault) {\n      // Browser Event object\n      this.type = src.type;\n\n      // Events bubbling up the document may have been marked as prevented\n      // by a handler lower down the tree; reflect the correct value.\n      this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse;\n    } else if (src != null && src.type) {\n      // Plain object containing all event details\n      props = src;\n    } else {\n      // Event string\n      this.type = src;\n    }\n\n    // Put explicitly provided properties onto the event object\n    if (props != null) {\n      // more efficient to manually copy fields we use\n      this.originalEvent = props.originalEvent;\n      this.type = props.type != null ? props.type : this.type;\n      this.cy = props.cy;\n      this.target = props.target;\n      this.position = props.position;\n      this.renderedPosition = props.renderedPosition;\n      this.namespace = props.namespace;\n      this.layout = props.layout;\n    }\n    if (this.cy != null && this.position != null && this.renderedPosition == null) {\n      // create a rendered position based on the passed position\n      var pos = this.position;\n      var zoom = this.cy.zoom();\n      var pan = this.cy.pan();\n      this.renderedPosition = {\n        x: pos.x * zoom + pan.x,\n        y: pos.y * zoom + pan.y\n      };\n    }\n\n    // Create a timestamp if incoming event doesn't have one\n    this.timeStamp = src && src.timeStamp || Date.now();\n  },\n  preventDefault: function preventDefault() {\n    this.isDefaultPrevented = returnTrue;\n    var e = this.originalEvent;\n    if (!e) {\n      return;\n    }\n\n    // if preventDefault exists run it on the original event\n    if (e.preventDefault) {\n      e.preventDefault();\n    }\n  },\n  stopPropagation: function stopPropagation() {\n    this.isPropagationStopped = returnTrue;\n    var e = this.originalEvent;\n    if (!e) {\n      return;\n    }\n\n    // if stopPropagation exists run it on the original event\n    if (e.stopPropagation) {\n      e.stopPropagation();\n    }\n  },\n  stopImmediatePropagation: function stopImmediatePropagation() {\n    this.isImmediatePropagationStopped = returnTrue;\n    this.stopPropagation();\n  },\n  isDefaultPrevented: returnFalse,\n  isPropagationStopped: returnFalse,\n  isImmediatePropagationStopped: returnFalse\n};\n\nvar eventRegex = /^([^.]+)(\\.(?:[^.]+))?$/; // regex for matching event strings (e.g. \"click.namespace\")\nvar universalNamespace = '.*'; // matches as if no namespace specified and prevents users from unbinding accidentally\n\nvar defaults$8 = {\n  qualifierCompare: function qualifierCompare(q1, q2) {\n    return q1 === q2;\n  },\n  eventMatches: function eventMatches(/*context, listener, eventObj*/\n  ) {\n    return true;\n  },\n  addEventFields: function addEventFields(/*context, evt*/\n  ) {},\n  callbackContext: function callbackContext(context /*, listener, eventObj*/) {\n    return context;\n  },\n  beforeEmit: function beforeEmit(/* context, listener, eventObj */\n  ) {},\n  afterEmit: function afterEmit(/* context, listener, eventObj */\n  ) {},\n  bubble: function bubble(/*context*/\n  ) {\n    return false;\n  },\n  parent: function parent(/*context*/\n  ) {\n    return null;\n  },\n  context: null\n};\nvar defaultsKeys = Object.keys(defaults$8);\nvar emptyOpts = {};\nfunction Emitter() {\n  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyOpts;\n  var context = arguments.length > 1 ? arguments[1] : undefined;\n  // micro-optimisation vs Object.assign() -- reduces Element instantiation time\n  for (var i = 0; i < defaultsKeys.length; i++) {\n    var key = defaultsKeys[i];\n    this[key] = opts[key] || defaults$8[key];\n  }\n  this.context = context || this.context;\n  this.listeners = [];\n  this.emitting = 0;\n}\nvar p = Emitter.prototype;\nvar forEachEvent = function forEachEvent(self, handler, events, qualifier, callback, conf, confOverrides) {\n  if (fn$6(qualifier)) {\n    callback = qualifier;\n    qualifier = null;\n  }\n  if (confOverrides) {\n    if (conf == null) {\n      conf = confOverrides;\n    } else {\n      conf = extend({}, conf, confOverrides);\n    }\n  }\n  var eventList = array(events) ? events : events.split(/\\s+/);\n  for (var i = 0; i < eventList.length; i++) {\n    var evt = eventList[i];\n    if (emptyString(evt)) {\n      continue;\n    }\n    var match = evt.match(eventRegex); // type[.namespace]\n\n    if (match) {\n      var type = match[1];\n      var namespace = match[2] ? match[2] : null;\n      var ret = handler(self, evt, type, namespace, qualifier, callback, conf);\n      if (ret === false) {\n        break;\n      } // allow exiting early\n    }\n  }\n};\nvar makeEventObj = function makeEventObj(self, obj) {\n  self.addEventFields(self.context, obj);\n  return new Event(obj.type, obj);\n};\nvar forEachEventObj = function forEachEventObj(self, handler, events) {\n  if (event(events)) {\n    handler(self, events);\n    return;\n  } else if (plainObject(events)) {\n    handler(self, makeEventObj(self, events));\n    return;\n  }\n  var eventList = array(events) ? events : events.split(/\\s+/);\n  for (var i = 0; i < eventList.length; i++) {\n    var evt = eventList[i];\n    if (emptyString(evt)) {\n      continue;\n    }\n    var match = evt.match(eventRegex); // type[.namespace]\n\n    if (match) {\n      var type = match[1];\n      var namespace = match[2] ? match[2] : null;\n      var eventObj = makeEventObj(self, {\n        type: type,\n        namespace: namespace,\n        target: self.context\n      });\n      handler(self, eventObj);\n    }\n  }\n};\np.on = p.addListener = function (events, qualifier, callback, conf, confOverrides) {\n  forEachEvent(this, function (self, event, type, namespace, qualifier, callback, conf) {\n    if (fn$6(callback)) {\n      self.listeners.push({\n        event: event,\n        // full event string\n        callback: callback,\n        // callback to run\n        type: type,\n        // the event type (e.g. 'click')\n        namespace: namespace,\n        // the event namespace (e.g. \".foo\")\n        qualifier: qualifier,\n        // a restriction on whether to match this emitter\n        conf: conf // additional configuration\n      });\n    }\n  }, events, qualifier, callback, conf, confOverrides);\n  return this;\n};\np.one = function (events, qualifier, callback, conf) {\n  return this.on(events, qualifier, callback, conf, {\n    one: true\n  });\n};\np.removeListener = p.off = function (events, qualifier, callback, conf) {\n  var _this = this;\n  if (this.emitting !== 0) {\n    this.listeners = copyArray(this.listeners);\n  }\n  var listeners = this.listeners;\n  var _loop = function _loop(i) {\n    var listener = listeners[i];\n    forEachEvent(_this, function (self, event, type, namespace, qualifier, callback /*, conf*/) {\n      if ((listener.type === type || events === '*') && (!namespace && listener.namespace !== '.*' || listener.namespace === namespace) && (!qualifier || self.qualifierCompare(listener.qualifier, qualifier)) && (!callback || listener.callback === callback)) {\n        listeners.splice(i, 1);\n        return false;\n      }\n    }, events, qualifier, callback, conf);\n  };\n  for (var i = listeners.length - 1; i >= 0; i--) {\n    _loop(i);\n  }\n  return this;\n};\np.removeAllListeners = function () {\n  return this.removeListener('*');\n};\np.emit = p.trigger = function (events, extraParams, manualCallback) {\n  var listeners = this.listeners;\n  var numListenersBeforeEmit = listeners.length;\n  this.emitting++;\n  if (!array(extraParams)) {\n    extraParams = [extraParams];\n  }\n  forEachEventObj(this, function (self, eventObj) {\n    if (manualCallback != null) {\n      listeners = [{\n        event: eventObj.event,\n        type: eventObj.type,\n        namespace: eventObj.namespace,\n        callback: manualCallback\n      }];\n      numListenersBeforeEmit = listeners.length;\n    }\n    var _loop2 = function _loop2() {\n      var listener = listeners[i];\n      if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self.eventMatches(self.context, listener, eventObj)) {\n        var args = [eventObj];\n        if (extraParams != null) {\n          push(args, extraParams);\n        }\n        self.beforeEmit(self.context, listener, eventObj);\n        if (listener.conf && listener.conf.one) {\n          self.listeners = self.listeners.filter(function (l) {\n            return l !== listener;\n          });\n        }\n        var context = self.callbackContext(self.context, listener, eventObj);\n        var ret = listener.callback.apply(context, args);\n        self.afterEmit(self.context, listener, eventObj);\n        if (ret === false) {\n          eventObj.stopPropagation();\n          eventObj.preventDefault();\n        }\n      } // if listener matches\n    };\n    for (var i = 0; i < numListenersBeforeEmit; i++) {\n      _loop2();\n    } // for listener\n\n    if (self.bubble(self.context) && !eventObj.isPropagationStopped()) {\n      self.parent(self.context).emit(eventObj, extraParams);\n    }\n  }, events);\n  this.emitting--;\n  return this;\n};\n\nvar emitterOptions$1 = {\n  qualifierCompare: function qualifierCompare(selector1, selector2) {\n    if (selector1 == null || selector2 == null) {\n      return selector1 == null && selector2 == null;\n    } else {\n      return selector1.sameText(selector2);\n    }\n  },\n  eventMatches: function eventMatches(ele, listener, eventObj) {\n    var selector = listener.qualifier;\n    if (selector != null) {\n      return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);\n    }\n    return true;\n  },\n  addEventFields: function addEventFields(ele, evt) {\n    evt.cy = ele.cy();\n    evt.target = ele;\n  },\n  callbackContext: function callbackContext(ele, listener, eventObj) {\n    return listener.qualifier != null ? eventObj.target : ele;\n  },\n  beforeEmit: function beforeEmit(context, listener /*, eventObj*/) {\n    if (listener.conf && listener.conf.once) {\n      listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback);\n    }\n  },\n  bubble: function bubble() {\n    return true;\n  },\n  parent: function parent(ele) {\n    return ele.isChild() ? ele.parent() : ele.cy();\n  }\n};\nvar argSelector$1 = function argSelector(arg) {\n  if (string(arg)) {\n    return new Selector(arg);\n  } else {\n    return arg;\n  }\n};\nvar elesfn$9 = {\n  createEmitter: function createEmitter() {\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      var _p = ele._private;\n      if (!_p.emitter) {\n        _p.emitter = new Emitter(emitterOptions$1, ele);\n      }\n    }\n    return this;\n  },\n  emitter: function emitter() {\n    return this._private.emitter;\n  },\n  on: function on(events, selector, callback) {\n    var argSel = argSelector$1(selector);\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      ele.emitter().on(events, argSel, callback);\n    }\n    return this;\n  },\n  removeListener: function removeListener(events, selector, callback) {\n    var argSel = argSelector$1(selector);\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      ele.emitter().removeListener(events, argSel, callback);\n    }\n    return this;\n  },\n  removeAllListeners: function removeAllListeners() {\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      ele.emitter().removeAllListeners();\n    }\n    return this;\n  },\n  one: function one(events, selector, callback) {\n    var argSel = argSelector$1(selector);\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      ele.emitter().one(events, argSel, callback);\n    }\n    return this;\n  },\n  once: function once(events, selector, callback) {\n    var argSel = argSelector$1(selector);\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      ele.emitter().on(events, argSel, callback, {\n        once: true,\n        onceCollection: this\n      });\n    }\n  },\n  emit: function emit(events, extraParams) {\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      ele.emitter().emit(events, extraParams);\n    }\n    return this;\n  },\n  emitAndNotify: function emitAndNotify(event, extraParams) {\n    // for internal use only\n    if (this.length === 0) {\n      return;\n    } // empty collections don't need to notify anything\n\n    // notify renderer\n    this.cy().notify(event, this);\n    this.emit(event, extraParams);\n    return this;\n  }\n};\ndefine.eventAliasesOn(elesfn$9);\n\nvar elesfn$8 = {\n  nodes: function nodes(selector) {\n    return this.filter(function (ele) {\n      return ele.isNode();\n    }).filter(selector);\n  },\n  edges: function edges(selector) {\n    return this.filter(function (ele) {\n      return ele.isEdge();\n    }).filter(selector);\n  },\n  // internal helper to get nodes and edges as separate collections with single iteration over elements\n  byGroup: function byGroup() {\n    var nodes = this.spawn();\n    var edges = this.spawn();\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      if (ele.isNode()) {\n        nodes.push(ele);\n      } else {\n        edges.push(ele);\n      }\n    }\n    return {\n      nodes: nodes,\n      edges: edges\n    };\n  },\n  filter: function filter(_filter, thisArg) {\n    if (_filter === undefined) {\n      // check this first b/c it's the most common/performant case\n      return this;\n    } else if (string(_filter) || elementOrCollection(_filter)) {\n      return new Selector(_filter).filter(this);\n    } else if (fn$6(_filter)) {\n      var filterEles = this.spawn();\n      var eles = this;\n      for (var i = 0; i < eles.length; i++) {\n        var ele = eles[i];\n        var include = thisArg ? _filter.apply(thisArg, [ele, i, eles]) : _filter(ele, i, eles);\n        if (include) {\n          filterEles.push(ele);\n        }\n      }\n      return filterEles;\n    }\n    return this.spawn(); // if not handled by above, give 'em an empty collection\n  },\n  not: function not(toRemove) {\n    if (!toRemove) {\n      return this;\n    } else {\n      if (string(toRemove)) {\n        toRemove = this.filter(toRemove);\n      }\n      var elements = this.spawn();\n      for (var i = 0; i < this.length; i++) {\n        var element = this[i];\n        var remove = toRemove.has(element);\n        if (!remove) {\n          elements.push(element);\n        }\n      }\n      return elements;\n    }\n  },\n  absoluteComplement: function absoluteComplement() {\n    var cy = this.cy();\n    return cy.mutableElements().not(this);\n  },\n  intersect: function intersect(other) {\n    // if a selector is specified, then filter by it instead\n    if (string(other)) {\n      var selector = other;\n      return this.filter(selector);\n    }\n    var elements = this.spawn();\n    var col1 = this;\n    var col2 = other;\n    var col1Smaller = this.length < other.length;\n    var colS = col1Smaller ? col1 : col2;\n    var colL = col1Smaller ? col2 : col1;\n    for (var i = 0; i < colS.length; i++) {\n      var ele = colS[i];\n      if (colL.has(ele)) {\n        elements.push(ele);\n      }\n    }\n    return elements;\n  },\n  xor: function xor(other) {\n    var cy = this._private.cy;\n    if (string(other)) {\n      other = cy.$(other);\n    }\n    var elements = this.spawn();\n    var col1 = this;\n    var col2 = other;\n    var add = function add(col, other) {\n      for (var i = 0; i < col.length; i++) {\n        var ele = col[i];\n        var id = ele._private.data.id;\n        var inOther = other.hasElementWithId(id);\n        if (!inOther) {\n          elements.push(ele);\n        }\n      }\n    };\n    add(col1, col2);\n    add(col2, col1);\n    return elements;\n  },\n  diff: function diff(other) {\n    var cy = this._private.cy;\n    if (string(other)) {\n      other = cy.$(other);\n    }\n    var left = this.spawn();\n    var right = this.spawn();\n    var both = this.spawn();\n    var col1 = this;\n    var col2 = other;\n    var add = function add(col, other, retEles) {\n      for (var i = 0; i < col.length; i++) {\n        var ele = col[i];\n        var id = ele._private.data.id;\n        var inOther = other.hasElementWithId(id);\n        if (inOther) {\n          both.merge(ele);\n        } else {\n          retEles.push(ele);\n        }\n      }\n    };\n    add(col1, col2, left);\n    add(col2, col1, right);\n    return {\n      left: left,\n      right: right,\n      both: both\n    };\n  },\n  add: function add(toAdd) {\n    var cy = this._private.cy;\n    if (!toAdd) {\n      return this;\n    }\n    if (string(toAdd)) {\n      var selector = toAdd;\n      toAdd = cy.mutableElements().filter(selector);\n    }\n    var elements = this.spawnSelf();\n    for (var i = 0; i < toAdd.length; i++) {\n      var ele = toAdd[i];\n      var add = !this.has(ele);\n      if (add) {\n        elements.push(ele);\n      }\n    }\n    return elements;\n  },\n  // in place merge on calling collection\n  merge: function merge(toAdd) {\n    var _p = this._private;\n    var cy = _p.cy;\n    if (!toAdd) {\n      return this;\n    }\n    if (toAdd && string(toAdd)) {\n      var selector = toAdd;\n      toAdd = cy.mutableElements().filter(selector);\n    }\n    var map = _p.map;\n    for (var i = 0; i < toAdd.length; i++) {\n      var toAddEle = toAdd[i];\n      var id = toAddEle._private.data.id;\n      var add = !map.has(id);\n      if (add) {\n        var index = this.length++;\n        this[index] = toAddEle;\n        map.set(id, {\n          ele: toAddEle,\n          index: index\n        });\n      }\n    }\n    return this; // chaining\n  },\n  unmergeAt: function unmergeAt(i) {\n    var ele = this[i];\n    var id = ele.id();\n    var _p = this._private;\n    var map = _p.map;\n\n    // remove ele\n    this[i] = undefined;\n    map[\"delete\"](id);\n    var unmergedLastEle = i === this.length - 1;\n\n    // replace empty spot with last ele in collection\n    if (this.length > 1 && !unmergedLastEle) {\n      var lastEleI = this.length - 1;\n      var lastEle = this[lastEleI];\n      var lastEleId = lastEle._private.data.id;\n      this[lastEleI] = undefined;\n      this[i] = lastEle;\n      map.set(lastEleId, {\n        ele: lastEle,\n        index: i\n      });\n    }\n\n    // the collection is now 1 ele smaller\n    this.length--;\n    return this;\n  },\n  // remove single ele in place in calling collection\n  unmergeOne: function unmergeOne(ele) {\n    ele = ele[0];\n    var _p = this._private;\n    var id = ele._private.data.id;\n    var map = _p.map;\n    var entry = map.get(id);\n    if (!entry) {\n      return this; // no need to remove\n    }\n    var i = entry.index;\n    this.unmergeAt(i);\n    return this;\n  },\n  // remove eles in place on calling collection\n  unmerge: function unmerge(toRemove) {\n    var cy = this._private.cy;\n    if (!toRemove) {\n      return this;\n    }\n    if (toRemove && string(toRemove)) {\n      var selector = toRemove;\n      toRemove = cy.mutableElements().filter(selector);\n    }\n    for (var i = 0; i < toRemove.length; i++) {\n      this.unmergeOne(toRemove[i]);\n    }\n    return this; // chaining\n  },\n  unmergeBy: function unmergeBy(toRmFn) {\n    for (var i = this.length - 1; i >= 0; i--) {\n      var ele = this[i];\n      if (toRmFn(ele)) {\n        this.unmergeAt(i);\n      }\n    }\n    return this;\n  },\n  map: function map(mapFn, thisArg) {\n    var arr = [];\n    var eles = this;\n    for (var i = 0; i < eles.length; i++) {\n      var ele = eles[i];\n      var ret = thisArg ? mapFn.apply(thisArg, [ele, i, eles]) : mapFn(ele, i, eles);\n      arr.push(ret);\n    }\n    return arr;\n  },\n  reduce: function reduce(fn, initialValue) {\n    var val = initialValue;\n    var eles = this;\n    for (var i = 0; i < eles.length; i++) {\n      val = fn(val, eles[i], i, eles);\n    }\n    return val;\n  },\n  max: function max(valFn, thisArg) {\n    var max = -Infinity;\n    var maxEle;\n    var eles = this;\n    for (var i = 0; i < eles.length; i++) {\n      var ele = eles[i];\n      var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);\n      if (val > max) {\n        max = val;\n        maxEle = ele;\n      }\n    }\n    return {\n      value: max,\n      ele: maxEle\n    };\n  },\n  min: function min(valFn, thisArg) {\n    var min = Infinity;\n    var minEle;\n    var eles = this;\n    for (var i = 0; i < eles.length; i++) {\n      var ele = eles[i];\n      var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);\n      if (val < min) {\n        min = val;\n        minEle = ele;\n      }\n    }\n    return {\n      value: min,\n      ele: minEle\n    };\n  }\n};\n\n// aliases\nvar fn$1 = elesfn$8;\nfn$1['u'] = fn$1['|'] = fn$1['+'] = fn$1.union = fn$1.or = fn$1.add;\nfn$1['\\\\'] = fn$1['!'] = fn$1['-'] = fn$1.difference = fn$1.relativeComplement = fn$1.subtract = fn$1.not;\nfn$1['n'] = fn$1['&'] = fn$1['.'] = fn$1.and = fn$1.intersection = fn$1.intersect;\nfn$1['^'] = fn$1['(+)'] = fn$1['(-)'] = fn$1.symmetricDifference = fn$1.symdiff = fn$1.xor;\nfn$1.fnFilter = fn$1.filterFn = fn$1.stdFilter = fn$1.filter;\nfn$1.complement = fn$1.abscomp = fn$1.absoluteComplement;\n\nvar elesfn$7 = {\n  isNode: function isNode() {\n    return this.group() === 'nodes';\n  },\n  isEdge: function isEdge() {\n    return this.group() === 'edges';\n  },\n  isLoop: function isLoop() {\n    return this.isEdge() && this.source()[0] === this.target()[0];\n  },\n  isSimple: function isSimple() {\n    return this.isEdge() && this.source()[0] !== this.target()[0];\n  },\n  group: function group() {\n    var ele = this[0];\n    if (ele) {\n      return ele._private.group;\n    }\n  }\n};\n\n/**\n *  Elements are drawn in a specific order based on compound depth (low to high), the element type (nodes above edges),\n *  and z-index (low to high).  These styles affect how this applies:\n *\n *  z-compound-depth: May be `bottom | orphan | auto | top`.  The first drawn is `bottom`, then `orphan` which is the\n *      same depth as the root of the compound graph, followed by the default value `auto` which draws in order from\n *      root to leaves of the compound graph.  The last drawn is `top`.\n *  z-index-compare: May be `auto | manual`.  The default value is `auto` which always draws edges under nodes.\n *      `manual` ignores this convention and draws based on the `z-index` value setting.\n *  z-index: An integer value that affects the relative draw order of elements.  In general, an element with a higher\n *      `z-index` will be drawn on top of an element with a lower `z-index`.\n */\nvar zIndexSort = function zIndexSort(a, b) {\n  var cy = a.cy();\n  var hasCompoundNodes = cy.hasCompoundNodes();\n  function getDepth(ele) {\n    var style = ele.pstyle('z-compound-depth');\n    if (style.value === 'auto') {\n      return hasCompoundNodes ? ele.zDepth() : 0;\n    } else if (style.value === 'bottom') {\n      return -1;\n    } else if (style.value === 'top') {\n      return MAX_INT$1;\n    }\n    // 'orphan'\n    return 0;\n  }\n  var depthDiff = getDepth(a) - getDepth(b);\n  if (depthDiff !== 0) {\n    return depthDiff;\n  }\n  function getEleDepth(ele) {\n    var style = ele.pstyle('z-index-compare');\n    if (style.value === 'auto') {\n      return ele.isNode() ? 1 : 0;\n    }\n    // 'manual'\n    return 0;\n  }\n  var eleDiff = getEleDepth(a) - getEleDepth(b);\n  if (eleDiff !== 0) {\n    return eleDiff;\n  }\n  var zDiff = a.pstyle('z-index').value - b.pstyle('z-index').value;\n  if (zDiff !== 0) {\n    return zDiff;\n  }\n  // compare indices in the core (order added to graph w/ last on top)\n  return a.poolIndex() - b.poolIndex();\n};\n\nvar elesfn$6 = {\n  forEach: function forEach(fn, thisArg) {\n    if (fn$6(fn)) {\n      var N = this.length;\n      for (var i = 0; i < N; i++) {\n        var ele = this[i];\n        var ret = thisArg ? fn.apply(thisArg, [ele, i, this]) : fn(ele, i, this);\n        if (ret === false) {\n          break;\n        } // exit each early on return false\n      }\n    }\n    return this;\n  },\n  toArray: function toArray() {\n    var array = [];\n    for (var i = 0; i < this.length; i++) {\n      array.push(this[i]);\n    }\n    return array;\n  },\n  slice: function slice(start, end) {\n    var array = [];\n    var thisSize = this.length;\n    if (end == null) {\n      end = thisSize;\n    }\n    if (start == null) {\n      start = 0;\n    }\n    if (start < 0) {\n      start = thisSize + start;\n    }\n    if (end < 0) {\n      end = thisSize + end;\n    }\n    for (var i = start; i >= 0 && i < end && i < thisSize; i++) {\n      array.push(this[i]);\n    }\n    return this.spawn(array);\n  },\n  size: function size() {\n    return this.length;\n  },\n  eq: function eq(i) {\n    return this[i] || this.spawn();\n  },\n  first: function first() {\n    return this[0] || this.spawn();\n  },\n  last: function last() {\n    return this[this.length - 1] || this.spawn();\n  },\n  empty: function empty() {\n    return this.length === 0;\n  },\n  nonempty: function nonempty() {\n    return !this.empty();\n  },\n  sort: function sort(sortFn) {\n    if (!fn$6(sortFn)) {\n      return this;\n    }\n    var sorted = this.toArray().sort(sortFn);\n    return this.spawn(sorted);\n  },\n  sortByZIndex: function sortByZIndex() {\n    return this.sort(zIndexSort);\n  },\n  zDepth: function zDepth() {\n    var ele = this[0];\n    if (!ele) {\n      return undefined;\n    }\n\n    // let cy = ele.cy();\n    var _p = ele._private;\n    var group = _p.group;\n    if (group === 'nodes') {\n      var depth = _p.data.parent ? ele.parents().size() : 0;\n      if (!ele.isParent()) {\n        return MAX_INT$1 - 1; // childless nodes always on top\n      }\n      return depth;\n    } else {\n      var src = _p.source;\n      var tgt = _p.target;\n      var srcDepth = src.zDepth();\n      var tgtDepth = tgt.zDepth();\n      return Math.max(srcDepth, tgtDepth, 0); // depth of deepest parent\n    }\n  }\n};\nelesfn$6.each = elesfn$6.forEach;\nvar defineSymbolIterator = function defineSymbolIterator() {\n  var typeofUndef = \"undefined\" ;\n  var isIteratorSupported = (typeof Symbol === \"undefined\" ? \"undefined\" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef;\n  if (isIteratorSupported) {\n    elesfn$6[Symbol.iterator] = function () {\n      var _this = this;\n      var entry = {\n        value: undefined,\n        done: false\n      };\n      var i = 0;\n      var length = this.length;\n      return _defineProperty$1({\n        next: function next() {\n          if (i < length) {\n            entry.value = _this[i++];\n          } else {\n            entry.value = undefined;\n            entry.done = true;\n          }\n          return entry;\n        }\n      }, Symbol.iterator, function () {\n        return this;\n      });\n    };\n  }\n};\ndefineSymbolIterator();\n\nvar getLayoutDimensionOptions = defaults$g({\n  nodeDimensionsIncludeLabels: false\n});\nvar elesfn$5 = {\n  // Calculates and returns node dimensions { x, y } based on options given\n  layoutDimensions: function layoutDimensions(options) {\n    options = getLayoutDimensionOptions(options);\n    var dims;\n    if (!this.takesUpSpace()) {\n      dims = {\n        w: 0,\n        h: 0\n      };\n    } else if (options.nodeDimensionsIncludeLabels) {\n      var bbDim = this.boundingBox();\n      dims = {\n        w: bbDim.w,\n        h: bbDim.h\n      };\n    } else {\n      dims = {\n        w: this.outerWidth(),\n        h: this.outerHeight()\n      };\n    }\n\n    // sanitise the dimensions for external layouts (avoid division by zero)\n    if (dims.w === 0 || dims.h === 0) {\n      dims.w = dims.h = 1;\n    }\n    return dims;\n  },\n  // using standard layout options, apply position function (w/ or w/o animation)\n  layoutPositions: function layoutPositions(layout, options, fn) {\n    var nodes = this.nodes().filter(function (n) {\n      return !n.isParent();\n    });\n    var cy = this.cy();\n    var layoutEles = options.eles; // nodes & edges\n    var getMemoizeKey = function getMemoizeKey(node) {\n      return node.id();\n    };\n    var fnMem = memoize(fn, getMemoizeKey); // memoized version of position function\n\n    layout.emit({\n      type: 'layoutstart',\n      layout: layout\n    });\n    layout.animations = [];\n    var calculateSpacing = function calculateSpacing(spacing, nodesBb, pos) {\n      var center = {\n        x: nodesBb.x1 + nodesBb.w / 2,\n        y: nodesBb.y1 + nodesBb.h / 2\n      };\n      var spacingVector = {\n        // scale from center of bounding box (not necessarily 0,0)\n        x: (pos.x - center.x) * spacing,\n        y: (pos.y - center.y) * spacing\n      };\n      return {\n        x: center.x + spacingVector.x,\n        y: center.y + spacingVector.y\n      };\n    };\n    var useSpacingFactor = options.spacingFactor && options.spacingFactor !== 1;\n    var spacingBb = function spacingBb() {\n      if (!useSpacingFactor) {\n        return null;\n      }\n      var bb = makeBoundingBox();\n      for (var i = 0; i < nodes.length; i++) {\n        var node = nodes[i];\n        var pos = fnMem(node, i);\n        expandBoundingBoxByPoint(bb, pos.x, pos.y);\n      }\n      return bb;\n    };\n    var bb = spacingBb();\n    var getFinalPos = memoize(function (node, i) {\n      var newPos = fnMem(node, i);\n      if (useSpacingFactor) {\n        var spacing = Math.abs(options.spacingFactor);\n        newPos = calculateSpacing(spacing, bb, newPos);\n      }\n      if (options.transform != null) {\n        newPos = options.transform(node, newPos);\n      }\n      return newPos;\n    }, getMemoizeKey);\n    if (options.animate) {\n      for (var i = 0; i < nodes.length; i++) {\n        var node = nodes[i];\n        var newPos = getFinalPos(node, i);\n        var animateNode = options.animateFilter == null || options.animateFilter(node, i);\n        if (animateNode) {\n          var ani = node.animation({\n            position: newPos,\n            duration: options.animationDuration,\n            easing: options.animationEasing\n          });\n          layout.animations.push(ani);\n        } else {\n          node.position(newPos);\n        }\n      }\n      if (options.fit) {\n        var fitAni = cy.animation({\n          fit: {\n            boundingBox: layoutEles.boundingBoxAt(getFinalPos),\n            padding: options.padding\n          },\n          duration: options.animationDuration,\n          easing: options.animationEasing\n        });\n        layout.animations.push(fitAni);\n      } else if (options.zoom !== undefined && options.pan !== undefined) {\n        var zoomPanAni = cy.animation({\n          zoom: options.zoom,\n          pan: options.pan,\n          duration: options.animationDuration,\n          easing: options.animationEasing\n        });\n        layout.animations.push(zoomPanAni);\n      }\n      layout.animations.forEach(function (ani) {\n        return ani.play();\n      });\n      layout.one('layoutready', options.ready);\n      layout.emit({\n        type: 'layoutready',\n        layout: layout\n      });\n      Promise$1.all(layout.animations.map(function (ani) {\n        return ani.promise();\n      })).then(function () {\n        layout.one('layoutstop', options.stop);\n        layout.emit({\n          type: 'layoutstop',\n          layout: layout\n        });\n      });\n    } else {\n      nodes.positions(getFinalPos);\n      if (options.fit) {\n        cy.fit(options.eles, options.padding);\n      }\n      if (options.zoom != null) {\n        cy.zoom(options.zoom);\n      }\n      if (options.pan) {\n        cy.pan(options.pan);\n      }\n      layout.one('layoutready', options.ready);\n      layout.emit({\n        type: 'layoutready',\n        layout: layout\n      });\n      layout.one('layoutstop', options.stop);\n      layout.emit({\n        type: 'layoutstop',\n        layout: layout\n      });\n    }\n    return this; // chaining\n  },\n  layout: function layout(options) {\n    var cy = this.cy();\n    return cy.makeLayout(extend({}, options, {\n      eles: this\n    }));\n  }\n};\n\n// aliases:\nelesfn$5.createLayout = elesfn$5.makeLayout = elesfn$5.layout;\n\nfunction styleCache(key, fn, ele) {\n  var _p = ele._private;\n  var cache = _p.styleCache = _p.styleCache || [];\n  var val;\n  if ((val = cache[key]) != null) {\n    return val;\n  } else {\n    val = cache[key] = fn(ele);\n    return val;\n  }\n}\nfunction cacheStyleFunction(key, fn) {\n  key = hashString(key);\n  return function cachedStyleFunction(ele) {\n    return styleCache(key, fn, ele);\n  };\n}\nfunction cachePrototypeStyleFunction(key, fn) {\n  key = hashString(key);\n  var selfFn = function selfFn(ele) {\n    return fn.call(ele);\n  };\n  return function cachedPrototypeStyleFunction() {\n    var ele = this[0];\n    if (ele) {\n      return styleCache(key, selfFn, ele);\n    }\n  };\n}\nvar elesfn$4 = {\n  recalculateRenderedStyle: function recalculateRenderedStyle(useCache) {\n    var cy = this.cy();\n    var renderer = cy.renderer();\n    var styleEnabled = cy.styleEnabled();\n    if (renderer && styleEnabled) {\n      renderer.recalculateRenderedStyle(this, useCache);\n    }\n    return this;\n  },\n  dirtyStyleCache: function dirtyStyleCache() {\n    var cy = this.cy();\n    var dirty = function dirty(ele) {\n      return ele._private.styleCache = null;\n    };\n    if (cy.hasCompoundNodes()) {\n      var eles;\n      eles = this.spawnSelf().merge(this.descendants()).merge(this.parents());\n      eles.merge(eles.connectedEdges());\n      eles.forEach(dirty);\n    } else {\n      this.forEach(function (ele) {\n        dirty(ele);\n        ele.connectedEdges().forEach(dirty);\n      });\n    }\n    return this;\n  },\n  // fully updates (recalculates) the style for the elements\n  updateStyle: function updateStyle(notifyRenderer) {\n    var cy = this._private.cy;\n    if (!cy.styleEnabled()) {\n      return this;\n    }\n    if (cy.batching()) {\n      var bEles = cy._private.batchStyleEles;\n      bEles.merge(this);\n      return this; // chaining and exit early when batching\n    }\n    var hasCompounds = cy.hasCompoundNodes();\n    var updatedEles = this;\n    notifyRenderer = notifyRenderer || notifyRenderer === undefined ? true : false;\n    if (hasCompounds) {\n      // then add everything up and down for compound selector checks\n      updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents());\n    }\n\n    // let changedEles = style.apply( updatedEles );\n    var changedEles = updatedEles;\n    if (notifyRenderer) {\n      changedEles.emitAndNotify('style'); // let renderer know we changed style\n    } else {\n      changedEles.emit('style'); // just fire the event\n    }\n    updatedEles.forEach(function (ele) {\n      return ele._private.styleDirty = true;\n    });\n    return this; // chaining\n  },\n  // private: clears dirty flag and recalculates style\n  cleanStyle: function cleanStyle() {\n    var cy = this.cy();\n    if (!cy.styleEnabled()) {\n      return;\n    }\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      if (ele._private.styleDirty) {\n        // n.b. this flag should be set before apply() to avoid potential infinite recursion\n        ele._private.styleDirty = false;\n        cy.style().apply(ele);\n      }\n    }\n  },\n  // get the internal parsed style object for the specified property\n  parsedStyle: function parsedStyle(property) {\n    var includeNonDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    var ele = this[0];\n    var cy = ele.cy();\n    if (!cy.styleEnabled()) {\n      return;\n    }\n    if (ele) {\n      // this.cleanStyle();\n\n      // Inline the important part of cleanStyle(), for raw performance\n      if (ele._private.styleDirty) {\n        // n.b. this flag should be set before apply() to avoid potential infinite recursion\n        ele._private.styleDirty = false;\n        cy.style().apply(ele);\n      }\n      var overriddenStyle = ele._private.style[property];\n      if (overriddenStyle != null) {\n        return overriddenStyle;\n      } else if (includeNonDefault) {\n        return cy.style().getDefaultProperty(property);\n      } else {\n        return null;\n      }\n    }\n  },\n  numericStyle: function numericStyle(property) {\n    var ele = this[0];\n    if (!ele.cy().styleEnabled()) {\n      return;\n    }\n    if (ele) {\n      var pstyle = ele.pstyle(property);\n      return pstyle.pfValue !== undefined ? pstyle.pfValue : pstyle.value;\n    }\n  },\n  numericStyleUnits: function numericStyleUnits(property) {\n    var ele = this[0];\n    if (!ele.cy().styleEnabled()) {\n      return;\n    }\n    if (ele) {\n      return ele.pstyle(property).units;\n    }\n  },\n  // get the specified css property as a rendered value (i.e. on-screen value)\n  // or get the whole rendered style if no property specified (NB doesn't allow setting)\n  renderedStyle: function renderedStyle(property) {\n    var cy = this.cy();\n    if (!cy.styleEnabled()) {\n      return this;\n    }\n    var ele = this[0];\n    if (ele) {\n      return cy.style().getRenderedStyle(ele, property);\n    }\n  },\n  // read the calculated css style of the element or override the style (via a bypass)\n  style: function style(name, value) {\n    var cy = this.cy();\n    if (!cy.styleEnabled()) {\n      return this;\n    }\n    var updateTransitions = false;\n    var style = cy.style();\n    if (plainObject(name)) {\n      // then extend the bypass\n      var props = name;\n      style.applyBypass(this, props, updateTransitions);\n      this.emitAndNotify('style'); // let the renderer know we've updated style\n    } else if (string(name)) {\n      if (value === undefined) {\n        // then get the property from the style\n        var ele = this[0];\n        if (ele) {\n          return style.getStylePropertyValue(ele, name);\n        } else {\n          // empty collection => can't get any value\n          return;\n        }\n      } else {\n        // then set the bypass with the property value\n        style.applyBypass(this, name, value, updateTransitions);\n        this.emitAndNotify('style'); // let the renderer know we've updated style\n      }\n    } else if (name === undefined) {\n      var _ele = this[0];\n      if (_ele) {\n        return style.getRawStyle(_ele);\n      } else {\n        // empty collection => can't get any value\n        return;\n      }\n    }\n    return this; // chaining\n  },\n  removeStyle: function removeStyle(names) {\n    var cy = this.cy();\n    if (!cy.styleEnabled()) {\n      return this;\n    }\n    var updateTransitions = false;\n    var style = cy.style();\n    var eles = this;\n    if (names === undefined) {\n      for (var i = 0; i < eles.length; i++) {\n        var ele = eles[i];\n        style.removeAllBypasses(ele, updateTransitions);\n      }\n    } else {\n      names = names.split(/\\s+/);\n      for (var _i = 0; _i < eles.length; _i++) {\n        var _ele2 = eles[_i];\n        style.removeBypasses(_ele2, names, updateTransitions);\n      }\n    }\n    this.emitAndNotify('style'); // let the renderer know we've updated style\n\n    return this; // chaining\n  },\n  show: function show() {\n    this.css('display', 'element');\n    return this; // chaining\n  },\n  hide: function hide() {\n    this.css('display', 'none');\n    return this; // chaining\n  },\n  effectiveOpacity: function effectiveOpacity() {\n    var cy = this.cy();\n    if (!cy.styleEnabled()) {\n      return 1;\n    }\n    var hasCompoundNodes = cy.hasCompoundNodes();\n    var ele = this[0];\n    if (ele) {\n      var _p = ele._private;\n      var parentOpacity = ele.pstyle('opacity').value;\n      if (!hasCompoundNodes) {\n        return parentOpacity;\n      }\n      var parents = !_p.data.parent ? null : ele.parents();\n      if (parents) {\n        for (var i = 0; i < parents.length; i++) {\n          var parent = parents[i];\n          var opacity = parent.pstyle('opacity').value;\n          parentOpacity = opacity * parentOpacity;\n        }\n      }\n      return parentOpacity;\n    }\n  },\n  transparent: function transparent() {\n    var cy = this.cy();\n    if (!cy.styleEnabled()) {\n      return false;\n    }\n    var ele = this[0];\n    var hasCompoundNodes = ele.cy().hasCompoundNodes();\n    if (ele) {\n      if (!hasCompoundNodes) {\n        return ele.pstyle('opacity').value === 0;\n      } else {\n        return ele.effectiveOpacity() === 0;\n      }\n    }\n  },\n  backgrounding: function backgrounding() {\n    var cy = this.cy();\n    if (!cy.styleEnabled()) {\n      return false;\n    }\n    var ele = this[0];\n    return ele._private.backgrounding ? true : false;\n  }\n};\nfunction checkCompound(ele, parentOk) {\n  var _p = ele._private;\n  var parents = _p.data.parent ? ele.parents() : null;\n  if (parents) {\n    for (var i = 0; i < parents.length; i++) {\n      var parent = parents[i];\n      if (!parentOk(parent)) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nfunction defineDerivedStateFunction(specs) {\n  var ok = specs.ok;\n  var edgeOkViaNode = specs.edgeOkViaNode || specs.ok;\n  var parentOk = specs.parentOk || specs.ok;\n  return function () {\n    var cy = this.cy();\n    if (!cy.styleEnabled()) {\n      return true;\n    }\n    var ele = this[0];\n    var hasCompoundNodes = cy.hasCompoundNodes();\n    if (ele) {\n      var _p = ele._private;\n      if (!ok(ele)) {\n        return false;\n      }\n      if (ele.isNode()) {\n        return !hasCompoundNodes || checkCompound(ele, parentOk);\n      } else {\n        var src = _p.source;\n        var tgt = _p.target;\n        return edgeOkViaNode(src) && (!hasCompoundNodes || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes || checkCompound(tgt, edgeOkViaNode)));\n      }\n    }\n  };\n}\nvar eleTakesUpSpace = cacheStyleFunction('eleTakesUpSpace', function (ele) {\n  return ele.pstyle('display').value === 'element' && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true);\n});\nelesfn$4.takesUpSpace = cachePrototypeStyleFunction('takesUpSpace', defineDerivedStateFunction({\n  ok: eleTakesUpSpace\n}));\nvar eleInteractive = cacheStyleFunction('eleInteractive', function (ele) {\n  return ele.pstyle('events').value === 'yes' && ele.pstyle('visibility').value === 'visible' && eleTakesUpSpace(ele);\n});\nvar parentInteractive = cacheStyleFunction('parentInteractive', function (parent) {\n  return parent.pstyle('visibility').value === 'visible' && eleTakesUpSpace(parent);\n});\nelesfn$4.interactive = cachePrototypeStyleFunction('interactive', defineDerivedStateFunction({\n  ok: eleInteractive,\n  parentOk: parentInteractive,\n  edgeOkViaNode: eleTakesUpSpace\n}));\nelesfn$4.noninteractive = function () {\n  var ele = this[0];\n  if (ele) {\n    return !ele.interactive();\n  }\n};\nvar eleVisible = cacheStyleFunction('eleVisible', function (ele) {\n  return ele.pstyle('visibility').value === 'visible' && ele.pstyle('opacity').pfValue !== 0 && eleTakesUpSpace(ele);\n});\nvar edgeVisibleViaNode = eleTakesUpSpace;\nelesfn$4.visible = cachePrototypeStyleFunction('visible', defineDerivedStateFunction({\n  ok: eleVisible,\n  edgeOkViaNode: edgeVisibleViaNode\n}));\nelesfn$4.hidden = function () {\n  var ele = this[0];\n  if (ele) {\n    return !ele.visible();\n  }\n};\nelesfn$4.isBundledBezier = cachePrototypeStyleFunction('isBundledBezier', function () {\n  if (!this.cy().styleEnabled()) {\n    return false;\n  }\n  return !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace();\n});\nelesfn$4.bypass = elesfn$4.css = elesfn$4.style;\nelesfn$4.renderedCss = elesfn$4.renderedStyle;\nelesfn$4.removeBypass = elesfn$4.removeCss = elesfn$4.removeStyle;\nelesfn$4.pstyle = elesfn$4.parsedStyle;\n\nvar elesfn$3 = {};\nfunction defineSwitchFunction(params) {\n  return function () {\n    var args = arguments;\n    var changedEles = [];\n\n    // e.g. cy.nodes().select( data, handler )\n    if (args.length === 2) {\n      var data = args[0];\n      var handler = args[1];\n      this.on(params.event, data, handler);\n    }\n\n    // e.g. cy.nodes().select( handler )\n    else if (args.length === 1 && fn$6(args[0])) {\n      var _handler = args[0];\n      this.on(params.event, _handler);\n    }\n\n    // e.g. cy.nodes().select()\n    // e.g. (private) cy.nodes().select(['tapselect'])\n    else if (args.length === 0 || args.length === 1 && array(args[0])) {\n      var addlEvents = args.length === 1 ? args[0] : null;\n      for (var i = 0; i < this.length; i++) {\n        var ele = this[i];\n        var able = !params.ableField || ele._private[params.ableField];\n        var changed = ele._private[params.field] != params.value;\n        if (params.overrideAble) {\n          var overrideAble = params.overrideAble(ele);\n          if (overrideAble !== undefined) {\n            able = overrideAble;\n            if (!overrideAble) {\n              return this;\n            } // to save cycles assume not able for all on override\n          }\n        }\n        if (able) {\n          ele._private[params.field] = params.value;\n          if (changed) {\n            changedEles.push(ele);\n          }\n        }\n      }\n      var changedColl = this.spawn(changedEles);\n      changedColl.updateStyle(); // change of state => possible change of style\n      changedColl.emit(params.event);\n      if (addlEvents) {\n        changedColl.emit(addlEvents);\n      }\n    }\n    return this;\n  };\n}\nfunction defineSwitchSet(params) {\n  elesfn$3[params.field] = function () {\n    var ele = this[0];\n    if (ele) {\n      if (params.overrideField) {\n        var val = params.overrideField(ele);\n        if (val !== undefined) {\n          return val;\n        }\n      }\n      return ele._private[params.field];\n    }\n  };\n  elesfn$3[params.on] = defineSwitchFunction({\n    event: params.on,\n    field: params.field,\n    ableField: params.ableField,\n    overrideAble: params.overrideAble,\n    value: true\n  });\n  elesfn$3[params.off] = defineSwitchFunction({\n    event: params.off,\n    field: params.field,\n    ableField: params.ableField,\n    overrideAble: params.overrideAble,\n    value: false\n  });\n}\ndefineSwitchSet({\n  field: 'locked',\n  overrideField: function overrideField(ele) {\n    return ele.cy().autolock() ? true : undefined;\n  },\n  on: 'lock',\n  off: 'unlock'\n});\ndefineSwitchSet({\n  field: 'grabbable',\n  overrideField: function overrideField(ele) {\n    return ele.cy().autoungrabify() || ele.pannable() ? false : undefined;\n  },\n  on: 'grabify',\n  off: 'ungrabify'\n});\ndefineSwitchSet({\n  field: 'selected',\n  ableField: 'selectable',\n  overrideAble: function overrideAble(ele) {\n    return ele.cy().autounselectify() ? false : undefined;\n  },\n  on: 'select',\n  off: 'unselect'\n});\ndefineSwitchSet({\n  field: 'selectable',\n  overrideField: function overrideField(ele) {\n    return ele.cy().autounselectify() ? false : undefined;\n  },\n  on: 'selectify',\n  off: 'unselectify'\n});\nelesfn$3.deselect = elesfn$3.unselect;\nelesfn$3.grabbed = function () {\n  var ele = this[0];\n  if (ele) {\n    return ele._private.grabbed;\n  }\n};\ndefineSwitchSet({\n  field: 'active',\n  on: 'activate',\n  off: 'unactivate'\n});\ndefineSwitchSet({\n  field: 'pannable',\n  on: 'panify',\n  off: 'unpanify'\n});\nelesfn$3.inactive = function () {\n  var ele = this[0];\n  if (ele) {\n    return !ele._private.active;\n  }\n};\n\nvar elesfn$2 = {};\n\n// DAG functions\n////////////////\n\nvar defineDagExtremity = function defineDagExtremity(params) {\n  return function dagExtremityImpl(selector) {\n    var eles = this;\n    var ret = [];\n    for (var i = 0; i < eles.length; i++) {\n      var ele = eles[i];\n      if (!ele.isNode()) {\n        continue;\n      }\n      var disqualified = false;\n      var edges = ele.connectedEdges();\n      for (var j = 0; j < edges.length; j++) {\n        var edge = edges[j];\n        var src = edge.source();\n        var tgt = edge.target();\n        if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) {\n          disqualified = true;\n          break;\n        }\n      }\n      if (!disqualified) {\n        ret.push(ele);\n      }\n    }\n    return this.spawn(ret, true).filter(selector);\n  };\n};\nvar defineDagOneHop = function defineDagOneHop(params) {\n  return function (selector) {\n    var eles = this;\n    var oEles = [];\n    for (var i = 0; i < eles.length; i++) {\n      var ele = eles[i];\n      if (!ele.isNode()) {\n        continue;\n      }\n      var edges = ele.connectedEdges();\n      for (var j = 0; j < edges.length; j++) {\n        var edge = edges[j];\n        var src = edge.source();\n        var tgt = edge.target();\n        if (params.outgoing && src === ele) {\n          oEles.push(edge);\n          oEles.push(tgt);\n        } else if (params.incoming && tgt === ele) {\n          oEles.push(edge);\n          oEles.push(src);\n        }\n      }\n    }\n    return this.spawn(oEles, true).filter(selector);\n  };\n};\nvar defineDagAllHops = function defineDagAllHops(params) {\n  return function (selector) {\n    var eles = this;\n    var sEles = [];\n    var sElesIds = {};\n    for (;;) {\n      var next = params.outgoing ? eles.outgoers() : eles.incomers();\n      if (next.length === 0) {\n        break;\n      } // done if none left\n\n      var newNext = false;\n      for (var i = 0; i < next.length; i++) {\n        var n = next[i];\n        var nid = n.id();\n        if (!sElesIds[nid]) {\n          sElesIds[nid] = true;\n          sEles.push(n);\n          newNext = true;\n        }\n      }\n      if (!newNext) {\n        break;\n      } // done if touched all outgoers already\n\n      eles = next;\n    }\n    return this.spawn(sEles, true).filter(selector);\n  };\n};\nelesfn$2.clearTraversalCache = function () {\n  for (var i = 0; i < this.length; i++) {\n    this[i]._private.traversalCache = null;\n  }\n};\nextend(elesfn$2, {\n  // get the root nodes in the DAG\n  roots: defineDagExtremity({\n    noIncomingEdges: true\n  }),\n  // get the leaf nodes in the DAG\n  leaves: defineDagExtremity({\n    noOutgoingEdges: true\n  }),\n  // normally called children in graph theory\n  // these nodes =edges=> outgoing nodes\n  outgoers: cache(defineDagOneHop({\n    outgoing: true\n  }), 'outgoers'),\n  // aka DAG descendants\n  successors: defineDagAllHops({\n    outgoing: true\n  }),\n  // normally called parents in graph theory\n  // these nodes <=edges= incoming nodes\n  incomers: cache(defineDagOneHop({\n    incoming: true\n  }), 'incomers'),\n  // aka DAG ancestors\n  predecessors: defineDagAllHops({\n    })\n});\n\n// Neighbourhood functions\n//////////////////////////\n\nextend(elesfn$2, {\n  neighborhood: cache(function (selector) {\n    var elements = [];\n    var nodes = this.nodes();\n    for (var i = 0; i < nodes.length; i++) {\n      // for all nodes\n      var node = nodes[i];\n      var connectedEdges = node.connectedEdges();\n\n      // for each connected edge, add the edge and the other node\n      for (var j = 0; j < connectedEdges.length; j++) {\n        var edge = connectedEdges[j];\n        var src = edge.source();\n        var tgt = edge.target();\n        var otherNode = node === src ? tgt : src;\n\n        // need check in case of loop\n        if (otherNode.length > 0) {\n          elements.push(otherNode[0]); // add node 1 hop away\n        }\n\n        // add connected edge\n        elements.push(edge[0]);\n      }\n    }\n    return this.spawn(elements, true).filter(selector);\n  }, 'neighborhood'),\n  closedNeighborhood: function closedNeighborhood(selector) {\n    return this.neighborhood().add(this).filter(selector);\n  },\n  openNeighborhood: function openNeighborhood(selector) {\n    return this.neighborhood(selector);\n  }\n});\n\n// aliases\nelesfn$2.neighbourhood = elesfn$2.neighborhood;\nelesfn$2.closedNeighbourhood = elesfn$2.closedNeighborhood;\nelesfn$2.openNeighbourhood = elesfn$2.openNeighborhood;\n\n// Edge functions\n/////////////////\n\nextend(elesfn$2, {\n  source: cache(function sourceImpl(selector) {\n    var ele = this[0];\n    var src;\n    if (ele) {\n      src = ele._private.source || ele.cy().collection();\n    }\n    return src && selector ? src.filter(selector) : src;\n  }, 'source'),\n  target: cache(function targetImpl(selector) {\n    var ele = this[0];\n    var tgt;\n    if (ele) {\n      tgt = ele._private.target || ele.cy().collection();\n    }\n    return tgt && selector ? tgt.filter(selector) : tgt;\n  }, 'target'),\n  sources: defineSourceFunction({\n    attr: 'source'\n  }),\n  targets: defineSourceFunction({\n    attr: 'target'\n  })\n});\nfunction defineSourceFunction(params) {\n  return function sourceImpl(selector) {\n    var sources = [];\n    for (var i = 0; i < this.length; i++) {\n      var ele = this[i];\n      var src = ele._private[params.attr];\n      if (src) {\n        sources.push(src);\n      }\n    }\n    return this.spawn(sources, true).filter(selector);\n  };\n}\nextend(elesfn$2, {\n  edgesWith: cache(defineEdgesWithFunction(), 'edgesWith'),\n  edgesTo: cache(defineEdgesWithFunction({\n    thisIsSrc: true\n  }), 'edgesTo')\n});\nfunction defineEdgesWithFunction(params) {\n  return function edgesWithImpl(otherNodes) {\n    var elements = [];\n    var cy = this._private.cy;\n    var p = params || {};\n\n    // get elements if a selector is specified\n    if (string(otherNodes)) {\n      otherNodes = cy.$(otherNodes);\n    }\n    for (var h = 0; h < otherNodes.length; h++) {\n      var edges = otherNodes[h]._private.edges;\n      for (var i = 0; i < edges.length; i++) {\n        var edge = edges[i];\n        var edgeData = edge._private.data;\n        var thisToOther = this.hasElementWithId(edgeData.source) && otherNodes.hasElementWithId(edgeData.target);\n        var otherToThis = otherNodes.hasElementWithId(edgeData.source) && this.hasElementWithId(edgeData.target);\n        var edgeConnectsThisAndOther = thisToOther || otherToThis;\n        if (!edgeConnectsThisAndOther) {\n          continue;\n        }\n        if (p.thisIsSrc || p.thisIsTgt) {\n          if (p.thisIsSrc && !thisToOther) {\n            continue;\n          }\n          if (p.thisIsTgt && !otherToThis) {\n            continue;\n          }\n        }\n        elements.push(edge);\n      }\n    }\n    return this.spawn(elements, true);\n  };\n}\nextend(elesfn$2, {\n  connectedEdges: cache(function (selector) {\n    var retEles = [];\n    var eles = this;\n    for (var i = 0; i < eles.length; i++) {\n      var node = eles[i];\n      if (!node.isNode()) {\n        continue;\n      }\n      var edges = node._private.edges;\n      for (var j = 0; j < edges.length; j++) {\n        var edge = edges[j];\n        retEles.push(edge);\n      }\n    }\n    return this.spawn(retEles, true).filter(selector);\n  }, 'connectedEdges'),\n  connectedNodes: cache(function (selector) {\n    var retEles = [];\n    var eles = this;\n    for (var i = 0; i < eles.length; i++) {\n      var edge = eles[i];\n      if (!edge.isEdge()) {\n        continue;\n      }\n      retEles.push(edge.source()[0]);\n      retEles.push(edge.target()[0]);\n    }\n    return this.spawn(retEles, true).filter(selector);\n  }, 'connectedNodes'),\n  parallelEdges: cache(defineParallelEdgesFunction(), 'parallelEdges'),\n  codirectedEdges: cache(defineParallelEdgesFunction({\n    codirected: true\n  }), 'codirectedEdges')\n});\nfunction defineParallelEdgesFunction(params) {\n  var defaults = {\n    codirected: false\n  };\n  params = extend({}, defaults, params);\n  return function parallelEdgesImpl(selector) {\n    // micro-optimised for renderer\n    var elements = [];\n    var edges = this.edges();\n    var p = params;\n\n    // look at all the edges in the collection\n    for (var i = 0; i < edges.length; i++) {\n      var edge1 = edges[i];\n      var edge1_p = edge1._private;\n      var src1 = edge1_p.source;\n      var srcid1 = src1._private.data.id;\n      var tgtid1 = edge1_p.data.target;\n      var srcEdges1 = src1._private.edges;\n\n      // look at edges connected to the src node of this edge\n      for (var j = 0; j < srcEdges1.length; j++) {\n        var edge2 = srcEdges1[j];\n        var edge2data = edge2._private.data;\n        var tgtid2 = edge2data.target;\n        var srcid2 = edge2data.source;\n        var codirected = tgtid2 === tgtid1 && srcid2 === srcid1;\n        var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2;\n        if (p.codirected && codirected || !p.codirected && (codirected || oppdirected)) {\n          elements.push(edge2);\n        }\n      }\n    }\n    return this.spawn(elements, true).filter(selector);\n  };\n}\n\n// Misc functions\n/////////////////\n\nextend(elesfn$2, {\n  components: function components(root) {\n    var self = this;\n    var cy = self.cy();\n    var visited = cy.collection();\n    var unvisited = root == null ? self.nodes() : root.nodes();\n    var components = [];\n    if (root != null && unvisited.empty()) {\n      // root may contain only edges\n      unvisited = root.sources(); // doesn't matter which node to use (undirected), so just use the source sides\n    }\n    var visitInComponent = function visitInComponent(node, component) {\n      visited.merge(node);\n      unvisited.unmerge(node);\n      component.merge(node);\n    };\n    if (unvisited.empty()) {\n      return self.spawn();\n    }\n    var _loop = function _loop() {\n      // each iteration yields a component\n      var cmpt = cy.collection();\n      components.push(cmpt);\n      var root = unvisited[0];\n      visitInComponent(root, cmpt);\n      self.bfs({\n        directed: false,\n        roots: root,\n        visit: function visit(v) {\n          return visitInComponent(v, cmpt);\n        }\n      });\n      cmpt.forEach(function (node) {\n        node.connectedEdges().forEach(function (e) {\n          // connectedEdges() usually cached\n          if (self.has(e) && cmpt.has(e.source()) && cmpt.has(e.target())) {\n            // has() is cheap\n            cmpt.merge(e); // forEach() only considers nodes -- sets N at call time\n          }\n        });\n      });\n    };\n    do {\n      _loop();\n    } while (unvisited.length > 0);\n    return components;\n  },\n  component: function component() {\n    var ele = this[0];\n    return ele.cy().mutableElements().components(ele)[0];\n  }\n});\nelesfn$2.componentsOf = elesfn$2.components;\n\n// represents a set of nodes, edges, or both together\nvar Collection = function Collection(cy, elements) {\n  var unique = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var removed = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  if (cy === undefined) {\n    error('A collection must have a reference to the core');\n    return;\n  }\n  var map = new Map$1();\n  var createdElements = false;\n  if (!elements) {\n    elements = [];\n  } else if (elements.length > 0 && plainObject(elements[0]) && !element(elements[0])) {\n    createdElements = true;\n\n    // make elements from json and restore all at once later\n    var eles = [];\n    var elesIds = new Set$1();\n    for (var i = 0, l = elements.length; i < l; i++) {\n      var json = elements[i];\n      if (json.data == null) {\n        json.data = {};\n      }\n      var _data = json.data;\n\n      // make sure newly created elements have valid ids\n      if (_data.id == null) {\n        _data.id = uuid();\n      } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) {\n        continue; // can't create element if prior id already exists\n      }\n      var ele = new Element(cy, json, false);\n      eles.push(ele);\n      elesIds.add(_data.id);\n    }\n    elements = eles;\n  }\n  this.length = 0;\n  for (var _i = 0, _l = elements.length; _i < _l; _i++) {\n    var element$1 = elements[_i][0]; // [0] in case elements is an array of collections, rather than array of elements\n    if (element$1 == null) {\n      continue;\n    }\n    var id = element$1._private.data.id;\n    if (!unique || !map.has(id)) {\n      if (unique) {\n        map.set(id, {\n          index: this.length,\n          ele: element$1\n        });\n      }\n      this[this.length] = element$1;\n      this.length++;\n    }\n  }\n  this._private = {\n    eles: this,\n    cy: cy,\n    get map() {\n      if (this.lazyMap == null) {\n        this.rebuildMap();\n      }\n      return this.lazyMap;\n    },\n    set map(m) {\n      this.lazyMap = m;\n    },\n    rebuildMap: function rebuildMap() {\n      var m = this.lazyMap = new Map$1();\n      var eles = this.eles;\n      for (var _i2 = 0; _i2 < eles.length; _i2++) {\n        var _ele = eles[_i2];\n        m.set(_ele.id(), {\n          index: _i2,\n          ele: _ele\n        });\n      }\n    }\n  };\n  if (unique) {\n    this._private.map = map;\n  }\n\n  // restore the elements if we created them from json\n  if (createdElements && !removed) {\n    this.restore();\n  }\n};\n\n// Functions\n////////////////////////////////////////////////////////////////////////////////////////////////////\n\n// keep the prototypes in sync (an element has the same functions as a collection)\n// and use elefn and elesfn as shorthands to the prototypes\nvar elesfn$1 = Element.prototype = Collection.prototype = Object.create(Array.prototype);\nelesfn$1.instanceString = function () {\n  return 'collection';\n};\nelesfn$1.spawn = function (eles, unique) {\n  return new Collection(this.cy(), eles, unique);\n};\nelesfn$1.spawnSelf = function () {\n  return this.spawn(this);\n};\nelesfn$1.cy = function () {\n  return this._private.cy;\n};\nelesfn$1.renderer = function () {\n  return this._private.cy.renderer();\n};\nelesfn$1.element = function () {\n  return this[0];\n};\nelesfn$1.collection = function () {\n  if (collection(this)) {\n    return this;\n  } else {\n    // an element\n    return new Collection(this._private.cy, [this]);\n  }\n};\nelesfn$1.unique = function () {\n  return new Collection(this._private.cy, this, true);\n};\nelesfn$1.hasElementWithId = function (id) {\n  id = '' + id; // id must be string\n\n  return this._private.map.has(id);\n};\nelesfn$1.getElementById = function (id) {\n  id = '' + id; // id must be string\n\n  var cy = this._private.cy;\n  var entry = this._private.map.get(id);\n  return entry ? entry.ele : new Collection(cy); // get ele or empty collection\n};\nelesfn$1.$id = elesfn$1.getElementById;\nelesfn$1.poolIndex = function () {\n  var cy = this._private.cy;\n  var eles = cy._private.elements;\n  var id = this[0]._private.data.id;\n  return eles._private.map.get(id).index;\n};\nelesfn$1.indexOf = function (ele) {\n  var id = ele[0]._private.data.id;\n  return this._private.map.get(id).index;\n};\nelesfn$1.indexOfId = function (id) {\n  id = '' + id; // id must be string\n\n  return this._private.map.get(id).index;\n};\nelesfn$1.json = function (obj) {\n  var ele = this.element();\n  var cy = this.cy();\n  if (ele == null && obj) {\n    return this;\n  } // can't set to no eles\n\n  if (ele == null) {\n    return undefined;\n  } // can't get from no eles\n\n  var p = ele._private;\n  if (plainObject(obj)) {\n    // set\n\n    cy.startBatch();\n    if (obj.data) {\n      ele.data(obj.data);\n      var _data2 = p.data;\n      if (ele.isEdge()) {\n        // source and target are immutable via data()\n        var move = false;\n        var spec = {};\n        var src = obj.data.source;\n        var tgt = obj.data.target;\n        if (src != null && src != _data2.source) {\n          spec.source = '' + src; // id must be string\n          move = true;\n        }\n        if (tgt != null && tgt != _data2.target) {\n          spec.target = '' + tgt; // id must be string\n          move = true;\n        }\n        if (move) {\n          ele = ele.move(spec);\n        }\n      } else {\n        // parent is immutable via data()\n        var newParentValSpecd = 'parent' in obj.data;\n        var parent = obj.data.parent;\n        if (newParentValSpecd && (parent != null || _data2.parent != null) && parent != _data2.parent) {\n          if (parent === undefined) {\n            // can't set undefined imperatively, so use null\n            parent = null;\n          }\n          if (parent != null) {\n            parent = '' + parent; // id must be string\n          }\n          ele = ele.move({\n            parent: parent\n          });\n        }\n      }\n    }\n    if (obj.position) {\n      ele.position(obj.position);\n    }\n\n    // ignore group -- immutable\n\n    var checkSwitch = function checkSwitch(k, trueFnName, falseFnName) {\n      var obj_k = obj[k];\n      if (obj_k != null && obj_k !== p[k]) {\n        if (obj_k) {\n          ele[trueFnName]();\n        } else {\n          ele[falseFnName]();\n        }\n      }\n    };\n    checkSwitch('removed', 'remove', 'restore');\n    checkSwitch('selected', 'select', 'unselect');\n    checkSwitch('selectable', 'selectify', 'unselectify');\n    checkSwitch('locked', 'lock', 'unlock');\n    checkSwitch('grabbable', 'grabify', 'ungrabify');\n    checkSwitch('pannable', 'panify', 'unpanify');\n    if (obj.classes != null) {\n      ele.classes(obj.classes);\n    }\n    cy.endBatch();\n    return this;\n  } else if (obj === undefined) {\n    // get\n\n    var json = {\n      data: copy(p.data),\n      position: copy(p.position),\n      group: p.group,\n      removed: p.removed,\n      selected: p.selected,\n      selectable: p.selectable,\n      locked: p.locked,\n      grabbable: p.grabbable,\n      pannable: p.pannable,\n      classes: null\n    };\n    json.classes = '';\n    var i = 0;\n    p.classes.forEach(function (cls) {\n      return json.classes += i++ === 0 ? cls : ' ' + cls;\n    });\n    return json;\n  }\n};\nelesfn$1.jsons = function () {\n  var jsons = [];\n  for (var i = 0; i < this.length; i++) {\n    var ele = this[i];\n    var json = ele.json();\n    jsons.push(json);\n  }\n  return jsons;\n};\nelesfn$1.clone = function () {\n  var cy = this.cy();\n  var elesArr = [];\n  for (var i = 0; i < this.length; i++) {\n    var ele = this[i];\n    var json = ele.json();\n    var clone = new Element(cy, json, false); // NB no restore\n\n    elesArr.push(clone);\n  }\n  return new Collection(cy, elesArr);\n};\nelesfn$1.copy = elesfn$1.clone;\nelesfn$1.restore = function () {\n  var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n  var addToPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  var self = this;\n  var cy = self.cy();\n  var cy_p = cy._private;\n\n  // create arrays of nodes and edges, since we need to\n  // restore the nodes first\n  var nodes = [];\n  var edges = [];\n  var elements;\n  for (var _i3 = 0, l = self.length; _i3 < l; _i3++) {\n    var ele = self[_i3];\n    if (addToPool && !ele.removed()) {\n      // don't need to handle this ele\n      continue;\n    }\n\n    // keep nodes first in the array and edges after\n    if (ele.isNode()) {\n      // put to front of array if node\n      nodes.push(ele);\n    } else {\n      // put to end of array if edge\n      edges.push(ele);\n    }\n  }\n  elements = nodes.concat(edges);\n  var i;\n  var removeFromElements = function removeFromElements() {\n    elements.splice(i, 1);\n    i--;\n  };\n\n  // now, restore each element\n  for (i = 0; i < elements.length; i++) {\n    var _ele2 = elements[i];\n    var _private = _ele2._private;\n    var _data3 = _private.data;\n\n    // the traversal cache should start fresh when ele is added\n    _ele2.clearTraversalCache();\n\n    // set id and validate\n    if (!addToPool && !_private.removed) ; else if (_data3.id === undefined) {\n      _data3.id = uuid();\n    } else if (number$1(_data3.id)) {\n      _data3.id = '' + _data3.id; // now it's a string\n    } else if (emptyString(_data3.id) || !string(_data3.id)) {\n      error('Can not create element with invalid string ID `' + _data3.id + '`');\n\n      // can't create element if it has empty string as id or non-string id\n      removeFromElements();\n      continue;\n    } else if (cy.hasElementWithId(_data3.id)) {\n      error('Can not create second element with ID `' + _data3.id + '`');\n\n      // can't create element if one already has that id\n      removeFromElements();\n      continue;\n    }\n    var id = _data3.id; // id is finalised, now let's keep a ref\n\n    if (_ele2.isNode()) {\n      // extra checks for nodes\n      var pos = _private.position;\n\n      // make sure the nodes have a defined position\n\n      if (pos.x == null) {\n        pos.x = 0;\n      }\n      if (pos.y == null) {\n        pos.y = 0;\n      }\n    }\n    if (_ele2.isEdge()) {\n      // extra checks for edges\n\n      var edge = _ele2;\n      var fields = ['source', 'target'];\n      var fieldsLength = fields.length;\n      var badSourceOrTarget = false;\n      for (var j = 0; j < fieldsLength; j++) {\n        var field = fields[j];\n        var val = _data3[field];\n        if (number$1(val)) {\n          val = _data3[field] = '' + _data3[field]; // now string\n        }\n        if (val == null || val === '') {\n          // can't create if source or target is not defined properly\n          error('Can not create edge `' + id + '` with unspecified ' + field);\n          badSourceOrTarget = true;\n        } else if (!cy.hasElementWithId(val)) {\n          // can't create edge if one of its nodes doesn't exist\n          error('Can not create edge `' + id + '` with nonexistent ' + field + ' `' + val + '`');\n          badSourceOrTarget = true;\n        }\n      }\n      if (badSourceOrTarget) {\n        removeFromElements();\n        continue;\n      } // can't create this\n\n      var src = cy.getElementById(_data3.source);\n      var tgt = cy.getElementById(_data3.target);\n\n      // only one edge in node if loop\n      if (src.same(tgt)) {\n        src._private.edges.push(edge);\n      } else {\n        src._private.edges.push(edge);\n        tgt._private.edges.push(edge);\n      }\n      edge._private.source = src;\n      edge._private.target = tgt;\n    } // if is edge\n\n    // create mock ids / indexes maps for element so it can be used like collections\n    _private.map = new Map$1();\n    _private.map.set(id, {\n      ele: _ele2,\n      index: 0\n    });\n    _private.removed = false;\n    if (addToPool) {\n      cy.addToPool(_ele2);\n    }\n  } // for each element\n\n  // do compound node sanity checks\n  for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n    // each node\n    var node = nodes[_i4];\n    var _data4 = node._private.data;\n    if (number$1(_data4.parent)) {\n      // then automake string\n      _data4.parent = '' + _data4.parent;\n    }\n    var parentId = _data4.parent;\n    var specifiedParent = parentId != null;\n    if (specifiedParent || node._private.parent) {\n      var parent = node._private.parent ? cy.collection().merge(node._private.parent) : cy.getElementById(parentId);\n      if (parent.empty()) {\n        // non-existant parent; just remove it\n        _data4.parent = undefined;\n      } else if (parent[0].removed()) {\n        warn('Node added with missing parent, reference to parent removed');\n        _data4.parent = undefined;\n        node._private.parent = null;\n      } else {\n        var selfAsParent = false;\n        var ancestor = parent;\n        while (!ancestor.empty()) {\n          if (node.same(ancestor)) {\n            // mark self as parent and remove from data\n            selfAsParent = true;\n            _data4.parent = undefined; // remove parent reference\n\n            // exit or we loop forever\n            break;\n          }\n          ancestor = ancestor.parent();\n        }\n        if (!selfAsParent) {\n          // connect with children\n          parent[0]._private.children.push(node);\n          node._private.parent = parent[0];\n\n          // let the core know we have a compound graph\n          cy_p.hasCompoundNodes = true;\n        }\n      } // else\n    } // if specified parent\n  } // for each node\n\n  if (elements.length > 0) {\n    var restored = elements.length === self.length ? self : new Collection(cy, elements);\n    for (var _i5 = 0; _i5 < restored.length; _i5++) {\n      var _ele3 = restored[_i5];\n      if (_ele3.isNode()) {\n        continue;\n      }\n\n      // adding an edge invalidates the traversal caches for the parallel edges\n      _ele3.parallelEdges().clearTraversalCache();\n\n      // adding an edge invalidates the traversal cache for the connected nodes\n      _ele3.source().clearTraversalCache();\n      _ele3.target().clearTraversalCache();\n    }\n    var toUpdateStyle;\n    if (cy_p.hasCompoundNodes) {\n      toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent());\n    } else {\n      toUpdateStyle = restored;\n    }\n    toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer);\n    if (notifyRenderer) {\n      restored.emitAndNotify('add');\n    } else if (addToPool) {\n      restored.emit('add');\n    }\n  }\n  return self; // chainability\n};\nelesfn$1.removed = function () {\n  var ele = this[0];\n  return ele && ele._private.removed;\n};\nelesfn$1.inside = function () {\n  var ele = this[0];\n  return ele && !ele._private.removed;\n};\nelesfn$1.remove = function () {\n  var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n  var removeFromPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  var self = this;\n  var elesToRemove = [];\n  var elesToRemoveIds = {};\n  var cy = self._private.cy;\n\n  // add connected edges\n  function addConnectedEdges(node) {\n    var edges = node._private.edges;\n    for (var i = 0; i < edges.length; i++) {\n      add(edges[i]);\n    }\n  }\n\n  // add descendant nodes\n  function addChildren(node) {\n    var children = node._private.children;\n    for (var i = 0; i < children.length; i++) {\n      add(children[i]);\n    }\n  }\n  function add(ele) {\n    var alreadyAdded = elesToRemoveIds[ele.id()];\n    if (removeFromPool && ele.removed() || alreadyAdded) {\n      return;\n    } else {\n      elesToRemoveIds[ele.id()] = true;\n    }\n    if (ele.isNode()) {\n      elesToRemove.push(ele); // nodes are removed last\n\n      addConnectedEdges(ele);\n      addChildren(ele);\n    } else {\n      elesToRemove.unshift(ele); // edges are removed first\n    }\n  }\n\n  // make the list of elements to remove\n  // (may be removing more than specified due to connected edges etc)\n\n  for (var i = 0, l = self.length; i < l; i++) {\n    var ele = self[i];\n    add(ele);\n  }\n  function removeEdgeRef(node, edge) {\n    var connectedEdges = node._private.edges;\n    removeFromArray(connectedEdges, edge);\n\n    // removing an edges invalidates the traversal cache for its nodes\n    node.clearTraversalCache();\n  }\n  function removeParallelRef(pllEdge) {\n    // removing an edge invalidates the traversal caches for the parallel edges\n    pllEdge.clearTraversalCache();\n  }\n  var alteredParents = [];\n  alteredParents.ids = {};\n  function removeChildRef(parent, ele) {\n    ele = ele[0];\n    parent = parent[0];\n    var children = parent._private.children;\n    var pid = parent.id();\n    removeFromArray(children, ele); // remove parent => child ref\n\n    ele._private.parent = null; // remove child => parent ref\n\n    if (!alteredParents.ids[pid]) {\n      alteredParents.ids[pid] = true;\n      alteredParents.push(parent);\n    }\n  }\n  self.dirtyCompoundBoundsCache();\n  if (removeFromPool) {\n    cy.removeFromPool(elesToRemove); // remove from core pool\n  }\n  for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) {\n    var _ele4 = elesToRemove[_i6];\n    if (_ele4.isEdge()) {\n      // remove references to this edge in its connected nodes\n      var src = _ele4.source()[0];\n      var tgt = _ele4.target()[0];\n      removeEdgeRef(src, _ele4);\n      removeEdgeRef(tgt, _ele4);\n      var pllEdges = _ele4.parallelEdges();\n      for (var j = 0; j < pllEdges.length; j++) {\n        var pllEdge = pllEdges[j];\n        removeParallelRef(pllEdge);\n        if (pllEdge.isBundledBezier()) {\n          pllEdge.dirtyBoundingBoxCache();\n        }\n      }\n    } else {\n      // remove reference to parent\n      var parent = _ele4.parent();\n      if (parent.length !== 0) {\n        removeChildRef(parent, _ele4);\n      }\n    }\n    if (removeFromPool) {\n      // mark as removed\n      _ele4._private.removed = true;\n    }\n  }\n\n  // check to see if we have a compound graph or not\n  var elesStillInside = cy._private.elements;\n  cy._private.hasCompoundNodes = false;\n  for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) {\n    var _ele5 = elesStillInside[_i7];\n    if (_ele5.isParent()) {\n      cy._private.hasCompoundNodes = true;\n      break;\n    }\n  }\n  var removedElements = new Collection(this.cy(), elesToRemove);\n  if (removedElements.size() > 0) {\n    // must manually notify since trigger won't do this automatically once removed\n\n    if (notifyRenderer) {\n      removedElements.emitAndNotify('remove');\n    } else if (removeFromPool) {\n      removedElements.emit('remove');\n    }\n  }\n\n  // the parents who were modified by the removal need their style updated\n  for (var _i8 = 0; _i8 < alteredParents.length; _i8++) {\n    var _ele6 = alteredParents[_i8];\n    if (!removeFromPool || !_ele6.removed()) {\n      _ele6.updateStyle();\n    }\n  }\n  return removedElements;\n};\nelesfn$1.move = function (struct) {\n  var cy = this._private.cy;\n  var eles = this;\n\n  // just clean up refs, caches, etc. in the same way as when removing and then restoring\n  // (our calls to remove/restore do not remove from the graph or make events)\n  var notifyRenderer = false;\n  var modifyPool = false;\n  var toString = function toString(id) {\n    return id == null ? id : '' + id;\n  }; // id must be string\n\n  if (struct.source !== undefined || struct.target !== undefined) {\n    var srcId = toString(struct.source);\n    var tgtId = toString(struct.target);\n    var srcExists = srcId != null && cy.hasElementWithId(srcId);\n    var tgtExists = tgtId != null && cy.hasElementWithId(tgtId);\n    if (srcExists || tgtExists) {\n      cy.batch(function () {\n        // avoid duplicate style updates\n        eles.remove(notifyRenderer, modifyPool); // clean up refs etc.\n        eles.emitAndNotify('moveout');\n        for (var i = 0; i < eles.length; i++) {\n          var ele = eles[i];\n          var _data5 = ele._private.data;\n          if (ele.isEdge()) {\n            if (srcExists) {\n              _data5.source = srcId;\n            }\n            if (tgtExists) {\n              _data5.target = tgtId;\n            }\n          }\n        }\n        eles.restore(notifyRenderer, modifyPool); // make new refs, style, etc.\n      });\n      eles.emitAndNotify('move');\n    }\n  } else if (struct.parent !== undefined) {\n    // move node to new parent\n    var parentId = toString(struct.parent);\n    var parentExists = parentId === null || cy.hasElementWithId(parentId);\n    if (parentExists) {\n      var pidToAssign = parentId === null ? undefined : parentId;\n      cy.batch(function () {\n        // avoid duplicate style updates\n        var updated = eles.remove(notifyRenderer, modifyPool); // clean up refs etc.\n        updated.emitAndNotify('moveout');\n        for (var i = 0; i < eles.length; i++) {\n          var ele = eles[i];\n          var _data6 = ele._private.data;\n          if (ele.isNode()) {\n            _data6.parent = pidToAssign;\n          }\n        }\n        updated.restore(notifyRenderer, modifyPool); // make new refs, style, etc.\n      });\n      eles.emitAndNotify('move');\n    }\n  }\n  return this;\n};\n[elesfn$j, elesfn$i, elesfn$h, elesfn$g, elesfn$f, data, elesfn$d, dimensions, elesfn$9, elesfn$8, elesfn$7, elesfn$6, elesfn$5, elesfn$4, elesfn$3, elesfn$2].forEach(function (props) {\n  extend(elesfn$1, props);\n});\n\nvar corefn$9 = {\n  add: function add(opts) {\n    var elements;\n    var cy = this;\n\n    // add the elements\n    if (elementOrCollection(opts)) {\n      var eles = opts;\n      if (eles._private.cy === cy) {\n        // same instance => just restore\n        elements = eles.restore();\n      } else {\n        // otherwise, copy from json\n        var jsons = [];\n        for (var i = 0; i < eles.length; i++) {\n          var ele = eles[i];\n          jsons.push(ele.json());\n        }\n        elements = new Collection(cy, jsons);\n      }\n    }\n\n    // specify an array of options\n    else if (array(opts)) {\n      var _jsons = opts;\n      elements = new Collection(cy, _jsons);\n    }\n\n    // specify via opts.nodes and opts.edges\n    else if (plainObject(opts) && (array(opts.nodes) || array(opts.edges))) {\n      var elesByGroup = opts;\n      var _jsons2 = [];\n      var grs = ['nodes', 'edges'];\n      for (var _i = 0, il = grs.length; _i < il; _i++) {\n        var group = grs[_i];\n        var elesArray = elesByGroup[group];\n        if (array(elesArray)) {\n          for (var j = 0, jl = elesArray.length; j < jl; j++) {\n            var json = extend({\n              group: group\n            }, elesArray[j]);\n            _jsons2.push(json);\n          }\n        }\n      }\n      elements = new Collection(cy, _jsons2);\n    }\n\n    // specify options for one element\n    else {\n      var _json = opts;\n      elements = new Element(cy, _json).collection();\n    }\n    return elements;\n  },\n  remove: function remove(collection) {\n    if (elementOrCollection(collection)) ; else if (string(collection)) {\n      var selector = collection;\n      collection = this.$(selector);\n    }\n    return collection.remove();\n  }\n};\n\n/* global Float32Array */\n\n/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */\nfunction generateCubicBezier(mX1, mY1, mX2, mY2) {\n  var NEWTON_ITERATIONS = 4,\n    NEWTON_MIN_SLOPE = 0.001,\n    SUBDIVISION_PRECISION = 0.0000001,\n    SUBDIVISION_MAX_ITERATIONS = 10,\n    kSplineTableSize = 11,\n    kSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\n    float32ArraySupported = typeof Float32Array !== 'undefined';\n\n  /* Must contain four arguments. */\n  if (arguments.length !== 4) {\n    return false;\n  }\n\n  /* Arguments must be numbers. */\n  for (var i = 0; i < 4; ++i) {\n    if (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\n      return false;\n    }\n  }\n\n  /* X values must be in the [0, 1] range. */\n  mX1 = Math.min(mX1, 1);\n  mX2 = Math.min(mX2, 1);\n  mX1 = Math.max(mX1, 0);\n  mX2 = Math.max(mX2, 0);\n  var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n  function A(aA1, aA2) {\n    return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n  }\n  function B(aA1, aA2) {\n    return 3.0 * aA2 - 6.0 * aA1;\n  }\n  function C(aA1) {\n    return 3.0 * aA1;\n  }\n  function calcBezier(aT, aA1, aA2) {\n    return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n  }\n  function getSlope(aT, aA1, aA2) {\n    return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n  }\n  function newtonRaphsonIterate(aX, aGuessT) {\n    for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) {\n      var currentSlope = getSlope(aGuessT, mX1, mX2);\n      if (currentSlope === 0.0) {\n        return aGuessT;\n      }\n      var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n      aGuessT -= currentX / currentSlope;\n    }\n    return aGuessT;\n  }\n  function calcSampleValues() {\n    for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) {\n      mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2);\n    }\n  }\n  function binarySubdivide(aX, aA, aB) {\n    var currentX,\n      currentT,\n      i = 0;\n    do {\n      currentT = aA + (aB - aA) / 2.0;\n      currentX = calcBezier(currentT, mX1, mX2) - aX;\n      if (currentX > 0.0) {\n        aB = currentT;\n      } else {\n        aA = currentT;\n      }\n    } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n    return currentT;\n  }\n  function getTForX(aX) {\n    var intervalStart = 0.0,\n      currentSample = 1,\n      lastSample = kSplineTableSize - 1;\n    for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n    var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),\n      guessForT = intervalStart + dist * kSampleStepSize,\n      initialSlope = getSlope(guessForT, mX1, mX2);\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT);\n    } else if (initialSlope === 0.0) {\n      return guessForT;\n    } else {\n      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\n    }\n  }\n  var _precomputed = false;\n  function precompute() {\n    _precomputed = true;\n    if (mX1 !== mY1 || mX2 !== mY2) {\n      calcSampleValues();\n    }\n  }\n  var f = function f(aX) {\n    if (!_precomputed) {\n      precompute();\n    }\n    if (mX1 === mY1 && mX2 === mY2) {\n      return aX;\n    }\n    if (aX === 0) {\n      return 0;\n    }\n    if (aX === 1) {\n      return 1;\n    }\n    return calcBezier(getTForX(aX), mY1, mY2);\n  };\n  f.getControlPoints = function () {\n    return [{\n      x: mX1,\n      y: mY1\n    }, {\n      x: mX2,\n      y: mY2\n    }];\n  };\n  var str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\n  f.toString = function () {\n    return str;\n  };\n  return f;\n}\n\n/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\n/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\n   then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\nvar generateSpringRK4 = function () {\n  function springAccelerationForState(state) {\n    return -state.tension * state.x - state.friction * state.v;\n  }\n  function springEvaluateStateWithDerivative(initialState, dt, derivative) {\n    var state = {\n      x: initialState.x + derivative.dx * dt,\n      v: initialState.v + derivative.dv * dt,\n      tension: initialState.tension,\n      friction: initialState.friction\n    };\n    return {\n      dx: state.v,\n      dv: springAccelerationForState(state)\n    };\n  }\n  function springIntegrateState(state, dt) {\n    var a = {\n        dx: state.v,\n        dv: springAccelerationForState(state)\n      },\n      b = springEvaluateStateWithDerivative(state, dt * 0.5, a),\n      c = springEvaluateStateWithDerivative(state, dt * 0.5, b),\n      d = springEvaluateStateWithDerivative(state, dt, c),\n      dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\n      dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\n    state.x = state.x + dxdt * dt;\n    state.v = state.v + dvdt * dt;\n    return state;\n  }\n  return function springRK4Factory(tension, friction, duration) {\n    var initState = {\n        x: -1,\n        v: 0,\n        tension: null,\n        friction: null\n      },\n      path = [0],\n      time_lapsed = 0,\n      tolerance = 1 / 10000,\n      DT = 16 / 1000,\n      have_duration,\n      dt,\n      last_state;\n    tension = parseFloat(tension) || 500;\n    friction = parseFloat(friction) || 20;\n    duration = duration || null;\n    initState.tension = tension;\n    initState.friction = friction;\n    have_duration = duration !== null;\n\n    /* Calculate the actual time it takes for this animation to complete with the provided conditions. */\n    if (have_duration) {\n      /* Run the simulation without a duration. */\n      time_lapsed = springRK4Factory(tension, friction);\n      /* Compute the adjusted time delta. */\n      dt = time_lapsed / duration * DT;\n    } else {\n      dt = DT;\n    }\n    for (;;) {\n      /* Next/step function .*/\n      last_state = springIntegrateState(last_state || initState, dt);\n      /* Store the position. */\n      path.push(1 + last_state.x);\n      time_lapsed += 16;\n      /* If the change threshold is reached, break. */\n      if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\n        break;\n      }\n    }\n\n    /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\n       computed path and returns a snapshot of the position according to a given percentComplete. */\n    return !have_duration ? time_lapsed : function (percentComplete) {\n      return path[percentComplete * (path.length - 1) | 0];\n    };\n  };\n}();\n\nvar cubicBezier = function cubicBezier(t1, p1, t2, p2) {\n  var bezier = generateCubicBezier(t1, p1, t2, p2);\n  return function (start, end, percent) {\n    return start + (end - start) * bezier(percent);\n  };\n};\nvar easings = {\n  'linear': function linear(start, end, percent) {\n    return start + (end - start) * percent;\n  },\n  // default easings\n  'ease': cubicBezier(0.25, 0.1, 0.25, 1),\n  'ease-in': cubicBezier(0.42, 0, 1, 1),\n  'ease-out': cubicBezier(0, 0, 0.58, 1),\n  'ease-in-out': cubicBezier(0.42, 0, 0.58, 1),\n  // sine\n  'ease-in-sine': cubicBezier(0.47, 0, 0.745, 0.715),\n  'ease-out-sine': cubicBezier(0.39, 0.575, 0.565, 1),\n  'ease-in-out-sine': cubicBezier(0.445, 0.05, 0.55, 0.95),\n  // quad\n  'ease-in-quad': cubicBezier(0.55, 0.085, 0.68, 0.53),\n  'ease-out-quad': cubicBezier(0.25, 0.46, 0.45, 0.94),\n  'ease-in-out-quad': cubicBezier(0.455, 0.03, 0.515, 0.955),\n  // cubic\n  'ease-in-cubic': cubicBezier(0.55, 0.055, 0.675, 0.19),\n  'ease-out-cubic': cubicBezier(0.215, 0.61, 0.355, 1),\n  'ease-in-out-cubic': cubicBezier(0.645, 0.045, 0.355, 1),\n  // quart\n  'ease-in-quart': cubicBezier(0.895, 0.03, 0.685, 0.22),\n  'ease-out-quart': cubicBezier(0.165, 0.84, 0.44, 1),\n  'ease-in-out-quart': cubicBezier(0.77, 0, 0.175, 1),\n  // quint\n  'ease-in-quint': cubicBezier(0.755, 0.05, 0.855, 0.06),\n  'ease-out-quint': cubicBezier(0.23, 1, 0.32, 1),\n  'ease-in-out-quint': cubicBezier(0.86, 0, 0.07, 1),\n  // expo\n  'ease-in-expo': cubicBezier(0.95, 0.05, 0.795, 0.035),\n  'ease-out-expo': cubicBezier(0.19, 1, 0.22, 1),\n  'ease-in-out-expo': cubicBezier(1, 0, 0, 1),\n  // circ\n  'ease-in-circ': cubicBezier(0.6, 0.04, 0.98, 0.335),\n  'ease-out-circ': cubicBezier(0.075, 0.82, 0.165, 1),\n  'ease-in-out-circ': cubicBezier(0.785, 0.135, 0.15, 0.86),\n  // user param easings...\n\n  'spring': function spring(tension, friction, duration) {\n    if (duration === 0) {\n      // can't get a spring w/ duration 0\n      return easings.linear; // duration 0 => jump to end so impl doesn't matter\n    }\n    var spring = generateSpringRK4(tension, friction, duration);\n    return function (start, end, percent) {\n      return start + (end - start) * spring(percent);\n    };\n  },\n  'cubic-bezier': cubicBezier\n};\n\nfunction getEasedValue(type, start, end, percent, easingFn) {\n  if (percent === 1) {\n    return end;\n  }\n  if (start === end) {\n    return end;\n  }\n  var val = easingFn(start, end, percent);\n  if (type == null) {\n    return val;\n  }\n  if (type.roundValue || type.color) {\n    val = Math.round(val);\n  }\n  if (type.min !== undefined) {\n    val = Math.max(val, type.min);\n  }\n  if (type.max !== undefined) {\n    val = Math.min(val, type.max);\n  }\n  return val;\n}\nfunction getValue(prop, spec) {\n  if (prop.pfValue != null || prop.value != null) {\n    if (prop.pfValue != null && (spec == null || spec.type.units !== '%')) {\n      return prop.pfValue;\n    } else {\n      return prop.value;\n    }\n  } else {\n    return prop;\n  }\n}\nfunction ease(startProp, endProp, percent, easingFn, propSpec) {\n  var type = propSpec != null ? propSpec.type : null;\n  if (percent < 0) {\n    percent = 0;\n  } else if (percent > 1) {\n    percent = 1;\n  }\n  var start = getValue(startProp, propSpec);\n  var end = getValue(endProp, propSpec);\n  if (number$1(start) && number$1(end)) {\n    return getEasedValue(type, start, end, percent, easingFn);\n  } else if (array(start) && array(end)) {\n    var easedArr = [];\n    for (var i = 0; i < end.length; i++) {\n      var si = start[i];\n      var ei = end[i];\n      if (si != null && ei != null) {\n        var val = getEasedValue(type, si, ei, percent, easingFn);\n        easedArr.push(val);\n      } else {\n        easedArr.push(ei);\n      }\n    }\n    return easedArr;\n  }\n  return undefined;\n}\n\nfunction step$1(self, ani, now, isCore) {\n  var isEles = !isCore;\n  var _p = self._private;\n  var ani_p = ani._private;\n  var pEasing = ani_p.easing;\n  var startTime = ani_p.startTime;\n  var cy = isCore ? self : self.cy();\n  var style = cy.style();\n  if (!ani_p.easingImpl) {\n    if (pEasing == null) {\n      // use default\n      ani_p.easingImpl = easings['linear'];\n    } else {\n      // then define w/ name\n      var easingVals;\n      if (string(pEasing)) {\n        var easingProp = style.parse('transition-timing-function', pEasing);\n        easingVals = easingProp.value;\n      } else {\n        // then assume preparsed array\n        easingVals = pEasing;\n      }\n      var name, args;\n      if (string(easingVals)) {\n        name = easingVals;\n        args = [];\n      } else {\n        name = easingVals[1];\n        args = easingVals.slice(2).map(function (n) {\n          return +n;\n        });\n      }\n      if (args.length > 0) {\n        // create with args\n        if (name === 'spring') {\n          args.push(ani_p.duration); // need duration to generate spring\n        }\n        ani_p.easingImpl = easings[name].apply(null, args);\n      } else {\n        // static impl by name\n        ani_p.easingImpl = easings[name];\n      }\n    }\n  }\n  var easing = ani_p.easingImpl;\n  var percent;\n  if (ani_p.duration === 0) {\n    percent = 1;\n  } else {\n    percent = (now - startTime) / ani_p.duration;\n  }\n  if (ani_p.applying) {\n    percent = ani_p.progress;\n  }\n  if (percent < 0) {\n    percent = 0;\n  } else if (percent > 1) {\n    percent = 1;\n  }\n  if (ani_p.delay == null) {\n    // then update\n\n    var startPos = ani_p.startPosition;\n    var endPos = ani_p.position;\n    if (endPos && isEles && !self.locked()) {\n      var newPos = {};\n      if (valid(startPos.x, endPos.x)) {\n        newPos.x = ease(startPos.x, endPos.x, percent, easing);\n      }\n      if (valid(startPos.y, endPos.y)) {\n        newPos.y = ease(startPos.y, endPos.y, percent, easing);\n      }\n      self.position(newPos);\n    }\n    var startPan = ani_p.startPan;\n    var endPan = ani_p.pan;\n    var pan = _p.pan;\n    var animatingPan = endPan != null && isCore;\n    if (animatingPan) {\n      if (valid(startPan.x, endPan.x)) {\n        pan.x = ease(startPan.x, endPan.x, percent, easing);\n      }\n      if (valid(startPan.y, endPan.y)) {\n        pan.y = ease(startPan.y, endPan.y, percent, easing);\n      }\n      self.emit('pan');\n    }\n    var startZoom = ani_p.startZoom;\n    var endZoom = ani_p.zoom;\n    var animatingZoom = endZoom != null && isCore;\n    if (animatingZoom) {\n      if (valid(startZoom, endZoom)) {\n        _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom);\n      }\n      self.emit('zoom');\n    }\n    if (animatingPan || animatingZoom) {\n      self.emit('viewport');\n    }\n    var props = ani_p.style;\n    if (props && props.length > 0 && isEles) {\n      for (var i = 0; i < props.length; i++) {\n        var prop = props[i];\n        var _name = prop.name;\n        var end = prop;\n        var start = ani_p.startStyle[_name];\n        var propSpec = style.properties[start.name];\n        var easedVal = ease(start, end, percent, easing, propSpec);\n        style.overrideBypass(self, _name, easedVal);\n      } // for props\n\n      self.emit('style');\n    } // if\n  }\n  ani_p.progress = percent;\n  return percent;\n}\nfunction valid(start, end) {\n  if (start == null || end == null) {\n    return false;\n  }\n  if (number$1(start) && number$1(end)) {\n    return true;\n  } else if (start && end) {\n    return true;\n  }\n  return false;\n}\n\nfunction startAnimation(self, ani, now, isCore) {\n  var ani_p = ani._private;\n  ani_p.started = true;\n  ani_p.startTime = now - ani_p.progress * ani_p.duration;\n}\n\nfunction stepAll(now, cy) {\n  var eles = cy._private.aniEles;\n  var doneEles = [];\n  function stepOne(ele, isCore) {\n    var _p = ele._private;\n    var current = _p.animation.current;\n    var queue = _p.animation.queue;\n    var ranAnis = false;\n\n    // if nothing currently animating, get something from the queue\n    if (current.length === 0) {\n      var next = queue.shift();\n      if (next) {\n        current.push(next);\n      }\n    }\n    var callbacks = function callbacks(_callbacks) {\n      for (var j = _callbacks.length - 1; j >= 0; j--) {\n        var cb = _callbacks[j];\n        cb();\n      }\n      _callbacks.splice(0, _callbacks.length);\n    };\n\n    // step and remove if done\n    for (var i = current.length - 1; i >= 0; i--) {\n      var ani = current[i];\n      var ani_p = ani._private;\n      if (ani_p.stopped) {\n        current.splice(i, 1);\n        ani_p.hooked = false;\n        ani_p.playing = false;\n        ani_p.started = false;\n        callbacks(ani_p.frames);\n        continue;\n      }\n      if (!ani_p.playing && !ani_p.applying) {\n        continue;\n      }\n\n      // an apply() while playing shouldn't do anything\n      if (ani_p.playing && ani_p.applying) {\n        ani_p.applying = false;\n      }\n      if (!ani_p.started) {\n        startAnimation(ele, ani, now);\n      }\n      step$1(ele, ani, now, isCore);\n      if (ani_p.applying) {\n        ani_p.applying = false;\n      }\n      callbacks(ani_p.frames);\n      if (ani_p.step != null) {\n        ani_p.step(now);\n      }\n      if (ani.completed()) {\n        current.splice(i, 1);\n        ani_p.hooked = false;\n        ani_p.playing = false;\n        ani_p.started = false;\n        callbacks(ani_p.completes);\n      }\n      ranAnis = true;\n    }\n    if (!isCore && current.length === 0 && queue.length === 0) {\n      doneEles.push(ele);\n    }\n    return ranAnis;\n  } // stepElement\n\n  // handle all eles\n  var ranEleAni = false;\n  for (var e = 0; e < eles.length; e++) {\n    var ele = eles[e];\n    var handledThisEle = stepOne(ele);\n    ranEleAni = ranEleAni || handledThisEle;\n  } // each element\n\n  var ranCoreAni = stepOne(cy, true);\n\n  // notify renderer\n  if (ranEleAni || ranCoreAni) {\n    if (eles.length > 0) {\n      cy.notify('draw', eles);\n    } else {\n      cy.notify('draw');\n    }\n  }\n\n  // remove elements from list of currently animating if its queues are empty\n  eles.unmerge(doneEles);\n  cy.emit('step');\n} // stepAll\n\nvar corefn$8 = {\n  // pull in animation functions\n  animate: define.animate(),\n  animation: define.animation(),\n  animated: define.animated(),\n  clearQueue: define.clearQueue(),\n  delay: define.delay(),\n  delayAnimation: define.delayAnimation(),\n  stop: define.stop(),\n  addToAnimationPool: function addToAnimationPool(eles) {\n    var cy = this;\n    if (!cy.styleEnabled()) {\n      return;\n    } // save cycles when no style used\n\n    cy._private.aniEles.merge(eles);\n  },\n  stopAnimationLoop: function stopAnimationLoop() {\n    this._private.animationsRunning = false;\n  },\n  startAnimationLoop: function startAnimationLoop() {\n    var cy = this;\n    cy._private.animationsRunning = true;\n    if (!cy.styleEnabled()) {\n      return;\n    } // save cycles when no style used\n\n    // NB the animation loop will exec in headless environments if style enabled\n    // and explicit cy.destroy() is necessary to stop the loop\n\n    function headlessStep() {\n      if (!cy._private.animationsRunning) {\n        return;\n      }\n      requestAnimationFrame(function animationStep(now) {\n        stepAll(now, cy);\n        headlessStep();\n      });\n    }\n    var renderer = cy.renderer();\n    if (renderer && renderer.beforeRender) {\n      // let the renderer schedule animations\n      renderer.beforeRender(function rendererAnimationStep(willDraw, now) {\n        stepAll(now, cy);\n      }, renderer.beforeRenderPriorities.animations);\n    } else {\n      // manage the animation loop ourselves\n      headlessStep(); // first call\n    }\n  }\n};\n\nvar emitterOptions = {\n  qualifierCompare: function qualifierCompare(selector1, selector2) {\n    if (selector1 == null || selector2 == null) {\n      return selector1 == null && selector2 == null;\n    } else {\n      return selector1.sameText(selector2);\n    }\n  },\n  eventMatches: function eventMatches(cy, listener, eventObj) {\n    var selector = listener.qualifier;\n    if (selector != null) {\n      return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);\n    }\n    return true;\n  },\n  addEventFields: function addEventFields(cy, evt) {\n    evt.cy = cy;\n    evt.target = cy;\n  },\n  callbackContext: function callbackContext(cy, listener, eventObj) {\n    return listener.qualifier != null ? eventObj.target : cy;\n  }\n};\nvar argSelector = function argSelector(arg) {\n  if (string(arg)) {\n    return new Selector(arg);\n  } else {\n    return arg;\n  }\n};\nvar elesfn = {\n  createEmitter: function createEmitter() {\n    var _p = this._private;\n    if (!_p.emitter) {\n      _p.emitter = new Emitter(emitterOptions, this);\n    }\n    return this;\n  },\n  emitter: function emitter() {\n    return this._private.emitter;\n  },\n  on: function on(events, selector, callback) {\n    this.emitter().on(events, argSelector(selector), callback);\n    return this;\n  },\n  removeListener: function removeListener(events, selector, callback) {\n    this.emitter().removeListener(events, argSelector(selector), callback);\n    return this;\n  },\n  removeAllListeners: function removeAllListeners() {\n    this.emitter().removeAllListeners();\n    return this;\n  },\n  one: function one(events, selector, callback) {\n    this.emitter().one(events, argSelector(selector), callback);\n    return this;\n  },\n  once: function once(events, selector, callback) {\n    this.emitter().one(events, argSelector(selector), callback);\n    return this;\n  },\n  emit: function emit(events, extraParams) {\n    this.emitter().emit(events, extraParams);\n    return this;\n  },\n  emitAndNotify: function emitAndNotify(event, eles) {\n    this.emit(event);\n    this.notify(event, eles);\n    return this;\n  }\n};\ndefine.eventAliasesOn(elesfn);\n\nvar corefn$7 = {\n  png: function png(options) {\n    var renderer = this._private.renderer;\n    options = options || {};\n    return renderer.png(options);\n  },\n  jpg: function jpg(options) {\n    var renderer = this._private.renderer;\n    options = options || {};\n    options.bg = options.bg || '#fff';\n    return renderer.jpg(options);\n  }\n};\ncorefn$7.jpeg = corefn$7.jpg;\n\nvar corefn$6 = {\n  layout: function layout(options) {\n    var cy = this;\n    if (options == null) {\n      error('Layout options must be specified to make a layout');\n      return;\n    }\n    if (options.name == null) {\n      error('A `name` must be specified to make a layout');\n      return;\n    }\n    var name = options.name;\n    var Layout = cy.extension('layout', name);\n    if (Layout == null) {\n      error('No such layout `' + name + '` found.  Did you forget to import it and `cytoscape.use()` it?');\n      return;\n    }\n    var eles;\n    if (string(options.eles)) {\n      eles = cy.$(options.eles);\n    } else {\n      eles = options.eles != null ? options.eles : cy.$();\n    }\n    var layout = new Layout(extend({}, options, {\n      cy: cy,\n      eles: eles\n    }));\n    return layout;\n  }\n};\ncorefn$6.createLayout = corefn$6.makeLayout = corefn$6.layout;\n\nvar corefn$5 = {\n  notify: function notify(eventName, eventEles) {\n    var _p = this._private;\n    if (this.batching()) {\n      _p.batchNotifications = _p.batchNotifications || {};\n      var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection();\n      if (eventEles != null) {\n        eles.merge(eventEles);\n      }\n      return; // notifications are disabled during batching\n    }\n    if (!_p.notificationsEnabled) {\n      return;\n    } // exit on disabled\n\n    var renderer = this.renderer();\n\n    // exit if destroy() called on core or renderer in between frames #1499 #1528\n    if (this.destroyed() || !renderer) {\n      return;\n    }\n    renderer.notify(eventName, eventEles);\n  },\n  notifications: function notifications(bool) {\n    var p = this._private;\n    if (bool === undefined) {\n      return p.notificationsEnabled;\n    } else {\n      p.notificationsEnabled = bool ? true : false;\n    }\n    return this;\n  },\n  noNotifications: function noNotifications(callback) {\n    this.notifications(false);\n    callback();\n    this.notifications(true);\n  },\n  batching: function batching() {\n    return this._private.batchCount > 0;\n  },\n  startBatch: function startBatch() {\n    var _p = this._private;\n    if (_p.batchCount == null) {\n      _p.batchCount = 0;\n    }\n    if (_p.batchCount === 0) {\n      _p.batchStyleEles = this.collection();\n      _p.batchNotifications = {};\n    }\n    _p.batchCount++;\n    return this;\n  },\n  endBatch: function endBatch() {\n    var _p = this._private;\n    if (_p.batchCount === 0) {\n      return this;\n    }\n    _p.batchCount--;\n    if (_p.batchCount === 0) {\n      // update style for dirty eles\n      _p.batchStyleEles.updateStyle();\n      var renderer = this.renderer();\n\n      // notify the renderer of queued eles and event types\n      Object.keys(_p.batchNotifications).forEach(function (eventName) {\n        var eles = _p.batchNotifications[eventName];\n        if (eles.empty()) {\n          renderer.notify(eventName);\n        } else {\n          renderer.notify(eventName, eles);\n        }\n      });\n    }\n    return this;\n  },\n  batch: function batch(callback) {\n    this.startBatch();\n    callback();\n    this.endBatch();\n    return this;\n  },\n  // for backwards compatibility\n  batchData: function batchData(map) {\n    var cy = this;\n    return this.batch(function () {\n      var ids = Object.keys(map);\n      for (var i = 0; i < ids.length; i++) {\n        var id = ids[i];\n        var data = map[id];\n        var ele = cy.getElementById(id);\n        ele.data(data);\n      }\n    });\n  }\n};\n\nvar rendererDefaults = defaults$g({\n  hideEdgesOnViewport: false,\n  textureOnViewport: false,\n  motionBlur: false,\n  motionBlurOpacity: 0.05,\n  pixelRatio: undefined,\n  desktopTapThreshold: 4,\n  touchTapThreshold: 8,\n  wheelSensitivity: 1,\n  debug: false,\n  showFps: false,\n  // webgl options\n  webgl: false,\n  webglDebug: false,\n  webglDebugShowAtlases: false,\n  // defaults good for mobile\n  webglTexSize: 2048,\n  webglTexRows: 36,\n  webglTexRowsNodes: 18,\n  webglBatchSize: 2048,\n  webglTexPerBatch: 14,\n  webglBgColor: [255, 255, 255]\n});\nvar corefn$4 = {\n  renderTo: function renderTo(context, zoom, pan, pxRatio) {\n    var r = this._private.renderer;\n    r.renderTo(context, zoom, pan, pxRatio);\n    return this;\n  },\n  renderer: function renderer() {\n    return this._private.renderer;\n  },\n  forceRender: function forceRender() {\n    this.notify('draw');\n    return this;\n  },\n  resize: function resize() {\n    this.invalidateSize();\n    this.emitAndNotify('resize');\n    return this;\n  },\n  initRenderer: function initRenderer(options) {\n    var cy = this;\n    var RendererProto = cy.extension('renderer', options.name);\n    if (RendererProto == null) {\n      error(\"Can not initialise: No such renderer `\".concat(options.name, \"` found. Did you forget to import it and `cytoscape.use()` it?\"));\n      return;\n    }\n    if (options.wheelSensitivity !== undefined) {\n      warn(\"You have set a custom wheel sensitivity.  This will make your app zoom unnaturally when using mainstream mice.  You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.\");\n    }\n    var rOpts = rendererDefaults(options);\n    rOpts.cy = cy;\n    cy._private.renderer = new RendererProto(rOpts);\n    this.notify('init');\n  },\n  destroyRenderer: function destroyRenderer() {\n    var cy = this;\n    cy.notify('destroy'); // destroy the renderer\n\n    var domEle = cy.container();\n    if (domEle) {\n      domEle._cyreg = null;\n      while (domEle.childNodes.length > 0) {\n        domEle.removeChild(domEle.childNodes[0]);\n      }\n    }\n    cy._private.renderer = null; // to be extra safe, remove the ref\n    cy.mutableElements().forEach(function (ele) {\n      var _p = ele._private;\n      _p.rscratch = {};\n      _p.rstyle = {};\n      _p.animation.current = [];\n      _p.animation.queue = [];\n    });\n  },\n  onRender: function onRender(fn) {\n    return this.on('render', fn);\n  },\n  offRender: function offRender(fn) {\n    return this.off('render', fn);\n  }\n};\ncorefn$4.invalidateDimensions = corefn$4.resize;\n\nvar corefn$3 = {\n  // get a collection\n  // - empty collection on no args\n  // - collection of elements in the graph on selector arg\n  // - guarantee a returned collection when elements or collection specified\n  collection: function collection(eles, opts) {\n    if (string(eles)) {\n      return this.$(eles);\n    } else if (elementOrCollection(eles)) {\n      return eles.collection();\n    } else if (array(eles)) {\n      if (!opts) {\n        opts = {};\n      }\n      return new Collection(this, eles, opts.unique, opts.removed);\n    }\n    return new Collection(this);\n  },\n  nodes: function nodes(selector) {\n    var nodes = this.$(function (ele) {\n      return ele.isNode();\n    });\n    if (selector) {\n      return nodes.filter(selector);\n    }\n    return nodes;\n  },\n  edges: function edges(selector) {\n    var edges = this.$(function (ele) {\n      return ele.isEdge();\n    });\n    if (selector) {\n      return edges.filter(selector);\n    }\n    return edges;\n  },\n  // search the graph like jQuery\n  $: function $(selector) {\n    var eles = this._private.elements;\n    if (selector) {\n      return eles.filter(selector);\n    } else {\n      return eles.spawnSelf();\n    }\n  },\n  mutableElements: function mutableElements() {\n    return this._private.elements;\n  }\n};\n\n// aliases\ncorefn$3.elements = corefn$3.filter = corefn$3.$;\n\nvar styfn$8 = {};\n\n// keys for style blocks, e.g. ttfftt\nvar TRUE = 't';\nvar FALSE = 'f';\n\n// (potentially expensive calculation)\n// apply the style to the element based on\n// - its bypass\n// - what selectors match it\nstyfn$8.apply = function (eles) {\n  var self = this;\n  var _p = self._private;\n  var cy = _p.cy;\n  var updatedEles = cy.collection();\n  for (var ie = 0; ie < eles.length; ie++) {\n    var ele = eles[ie];\n    var cxtMeta = self.getContextMeta(ele);\n    if (cxtMeta.empty) {\n      continue;\n    }\n    var cxtStyle = self.getContextStyle(cxtMeta);\n    var app = self.applyContextStyle(cxtMeta, cxtStyle, ele);\n    if (ele._private.appliedInitStyle) {\n      self.updateTransitions(ele, app.diffProps);\n    } else {\n      ele._private.appliedInitStyle = true;\n    }\n    var hintsDiff = self.updateStyleHints(ele);\n    if (hintsDiff) {\n      updatedEles.push(ele);\n    }\n  } // for elements\n\n  return updatedEles;\n};\nstyfn$8.getPropertiesDiff = function (oldCxtKey, newCxtKey) {\n  var self = this;\n  var cache = self._private.propDiffs = self._private.propDiffs || {};\n  var dualCxtKey = oldCxtKey + '-' + newCxtKey;\n  var cachedVal = cache[dualCxtKey];\n  if (cachedVal) {\n    return cachedVal;\n  }\n  var diffProps = [];\n  var addedProp = {};\n  for (var i = 0; i < self.length; i++) {\n    var cxt = self[i];\n    var oldHasCxt = oldCxtKey[i] === TRUE;\n    var newHasCxt = newCxtKey[i] === TRUE;\n    var cxtHasDiffed = oldHasCxt !== newHasCxt;\n    var cxtHasMappedProps = cxt.mappedProperties.length > 0;\n    if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) {\n      var props = undefined;\n      if (cxtHasDiffed && cxtHasMappedProps) {\n        props = cxt.properties; // suffices b/c mappedProperties is a subset of properties\n      } else if (cxtHasDiffed) {\n        props = cxt.properties; // need to check them all\n      } else if (cxtHasMappedProps) {\n        props = cxt.mappedProperties; // only need to check mapped\n      }\n      for (var j = 0; j < props.length; j++) {\n        var prop = props[j];\n        var name = prop.name;\n\n        // if a later context overrides this property, then the fact that this context has switched/diffed doesn't matter\n        // (semi expensive check since it makes this function O(n^2) on context length, but worth it since overall result\n        // is cached)\n        var laterCxtOverrides = false;\n        for (var k = i + 1; k < self.length; k++) {\n          var laterCxt = self[k];\n          var hasLaterCxt = newCxtKey[k] === TRUE;\n          if (!hasLaterCxt) {\n            continue;\n          } // can't override unless the context is active\n\n          laterCxtOverrides = laterCxt.properties[prop.name] != null;\n          if (laterCxtOverrides) {\n            break;\n          } // exit early as long as one later context overrides\n        }\n        if (!addedProp[name] && !laterCxtOverrides) {\n          addedProp[name] = true;\n          diffProps.push(name);\n        }\n      } // for props\n    } // if\n  } // for contexts\n\n  cache[dualCxtKey] = diffProps;\n  return diffProps;\n};\nstyfn$8.getContextMeta = function (ele) {\n  var self = this;\n  var cxtKey = '';\n  var diffProps;\n  var prevKey = ele._private.styleCxtKey || '';\n\n  // get the cxt key\n  for (var i = 0; i < self.length; i++) {\n    var context = self[i];\n    var contextSelectorMatches = context.selector && context.selector.matches(ele); // NB: context.selector may be null for 'core'\n\n    if (contextSelectorMatches) {\n      cxtKey += TRUE;\n    } else {\n      cxtKey += FALSE;\n    }\n  } // for context\n\n  diffProps = self.getPropertiesDiff(prevKey, cxtKey);\n  ele._private.styleCxtKey = cxtKey;\n  return {\n    key: cxtKey,\n    diffPropNames: diffProps,\n    empty: diffProps.length === 0\n  };\n};\n\n// gets a computed ele style object based on matched contexts\nstyfn$8.getContextStyle = function (cxtMeta) {\n  var cxtKey = cxtMeta.key;\n  var self = this;\n  var cxtStyles = this._private.contextStyles = this._private.contextStyles || {};\n\n  // if already computed style, returned cached copy\n  if (cxtStyles[cxtKey]) {\n    return cxtStyles[cxtKey];\n  }\n  var style = {\n    _private: {\n      key: cxtKey\n    }\n  };\n  for (var i = 0; i < self.length; i++) {\n    var cxt = self[i];\n    var hasCxt = cxtKey[i] === TRUE;\n    if (!hasCxt) {\n      continue;\n    }\n    for (var j = 0; j < cxt.properties.length; j++) {\n      var prop = cxt.properties[j];\n      style[prop.name] = prop;\n    }\n  }\n  cxtStyles[cxtKey] = style;\n  return style;\n};\nstyfn$8.applyContextStyle = function (cxtMeta, cxtStyle, ele) {\n  var self = this;\n  var diffProps = cxtMeta.diffPropNames;\n  var retDiffProps = {};\n  var types = self.types;\n  for (var i = 0; i < diffProps.length; i++) {\n    var diffPropName = diffProps[i];\n    var cxtProp = cxtStyle[diffPropName];\n    var eleProp = ele.pstyle(diffPropName);\n    if (!cxtProp) {\n      // no context prop means delete\n      if (!eleProp) {\n        continue; // no existing prop means nothing needs to be removed\n        // nb affects initial application on mapped values like control-point-distances\n      } else if (eleProp.bypass) {\n        cxtProp = {\n          name: diffPropName,\n          deleteBypassed: true\n        };\n      } else {\n        cxtProp = {\n          name: diffPropName,\n          \"delete\": true\n        };\n      }\n    }\n\n    // save cycles when the context prop doesn't need to be applied\n    if (eleProp === cxtProp) {\n      continue;\n    }\n\n    // save cycles when a mapped context prop doesn't need to be applied\n    if (cxtProp.mapped === types.fn // context prop is function mapper\n    && eleProp != null // some props can be null even by default (e.g. a prop that overrides another one)\n    && eleProp.mapping != null // ele prop is a concrete value from from a mapper\n    && eleProp.mapping.value === cxtProp.value // the current prop on the ele is a flat prop value for the function mapper\n    ) {\n      // NB don't write to cxtProp, as it's shared among eles (stored in stylesheet)\n      var mapping = eleProp.mapping; // can write to mapping, as it's a per-ele copy\n      var fnValue = mapping.fnValue = cxtProp.value(ele); // temporarily cache the value in case of a miss\n\n      if (fnValue === mapping.prevFnValue) {\n        continue;\n      }\n    }\n    var retDiffProp = retDiffProps[diffPropName] = {\n      prev: eleProp\n    };\n    self.applyParsedProperty(ele, cxtProp);\n    retDiffProp.next = ele.pstyle(diffPropName);\n    if (retDiffProp.next && retDiffProp.next.bypass) {\n      retDiffProp.next = retDiffProp.next.bypassed;\n    }\n  }\n  return {\n    diffProps: retDiffProps\n  };\n};\nstyfn$8.updateStyleHints = function (ele) {\n  var _p = ele._private;\n  var self = this;\n  var propNames = self.propertyGroupNames;\n  var propGrKeys = self.propertyGroupKeys;\n  var propHash = function propHash(ele, propNames, seedKey) {\n    return self.getPropertiesHash(ele, propNames, seedKey);\n  };\n  var oldStyleKey = _p.styleKey;\n  if (ele.removed()) {\n    return false;\n  }\n  var isNode = _p.group === 'nodes';\n\n  // get the style key hashes per prop group\n  // but lazily -- only use non-default prop values to reduce the number of hashes\n  //\n\n  var overriddenStyles = ele._private.style;\n  propNames = Object.keys(overriddenStyles);\n  for (var i = 0; i < propGrKeys.length; i++) {\n    var grKey = propGrKeys[i];\n    _p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT];\n  }\n  var updateGrKey1 = function updateGrKey1(val, grKey) {\n    return _p.styleKeys[grKey][0] = hashInt(val, _p.styleKeys[grKey][0]);\n  };\n  var updateGrKey2 = function updateGrKey2(val, grKey) {\n    return _p.styleKeys[grKey][1] = hashIntAlt(val, _p.styleKeys[grKey][1]);\n  };\n  var updateGrKey = function updateGrKey(val, grKey) {\n    updateGrKey1(val, grKey);\n    updateGrKey2(val, grKey);\n  };\n  var updateGrKeyWStr = function updateGrKeyWStr(strVal, grKey) {\n    for (var j = 0; j < strVal.length; j++) {\n      var ch = strVal.charCodeAt(j);\n      updateGrKey1(ch, grKey);\n      updateGrKey2(ch, grKey);\n    }\n  };\n\n  // - hashing works on 32 bit ints b/c we use bitwise ops\n  // - small numbers get cut off (e.g. 0.123 is seen as 0 by the hashing function)\n  // - raise up small numbers so more significant digits are seen by hashing\n  // - make small numbers larger than a normal value to avoid collisions\n  // - works in practice and it's relatively cheap\n  var N = 2000000000;\n  var cleanNum = function cleanNum(val) {\n    return -128 < val && val < 128 && Math.floor(val) !== val ? N - (val * 1024 | 0) : val;\n  };\n  for (var _i = 0; _i < propNames.length; _i++) {\n    var name = propNames[_i];\n    var parsedProp = overriddenStyles[name];\n    if (parsedProp == null) {\n      continue;\n    }\n    var propInfo = this.properties[name];\n    var type = propInfo.type;\n    var _grKey = propInfo.groupKey;\n    var normalizedNumberVal = undefined;\n    if (propInfo.hashOverride != null) {\n      normalizedNumberVal = propInfo.hashOverride(ele, parsedProp);\n    } else if (parsedProp.pfValue != null) {\n      normalizedNumberVal = parsedProp.pfValue;\n    }\n\n    // might not be a number if it allows enums\n    var numberVal = propInfo.enums == null ? parsedProp.value : null;\n    var haveNormNum = normalizedNumberVal != null;\n    var haveUnitedNum = numberVal != null;\n    var haveNum = haveNormNum || haveUnitedNum;\n    var units = parsedProp.units;\n\n    // numbers are cheaper to hash than strings\n    // 1 hash op vs n hash ops (for length n string)\n    if (type.number && haveNum && !type.multiple) {\n      var v = haveNormNum ? normalizedNumberVal : numberVal;\n      updateGrKey(cleanNum(v), _grKey);\n      if (!haveNormNum && units != null) {\n        updateGrKeyWStr(units, _grKey);\n      }\n    } else {\n      updateGrKeyWStr(parsedProp.strValue, _grKey);\n    }\n  }\n\n  // overall style key\n  //\n\n  var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT];\n  for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) {\n    var _grKey2 = propGrKeys[_i2];\n    var grHash = _p.styleKeys[_grKey2];\n    hash[0] = hashInt(grHash[0], hash[0]);\n    hash[1] = hashIntAlt(grHash[1], hash[1]);\n  }\n  _p.styleKey = combineHashes(hash[0], hash[1]);\n\n  // label dims\n  //\n\n  var sk = _p.styleKeys;\n  _p.labelDimsKey = combineHashesArray(sk.labelDimensions);\n  var labelKeys = propHash(ele, ['label'], sk.labelDimensions);\n  _p.labelKey = combineHashesArray(labelKeys);\n  _p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys));\n  if (!isNode) {\n    var sourceLabelKeys = propHash(ele, ['source-label'], sk.labelDimensions);\n    _p.sourceLabelKey = combineHashesArray(sourceLabelKeys);\n    _p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys));\n    var targetLabelKeys = propHash(ele, ['target-label'], sk.labelDimensions);\n    _p.targetLabelKey = combineHashesArray(targetLabelKeys);\n    _p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys));\n  }\n\n  // node\n  //\n\n  if (isNode) {\n    var _p$styleKeys = _p.styleKeys,\n      nodeBody = _p$styleKeys.nodeBody,\n      nodeBorder = _p$styleKeys.nodeBorder,\n      nodeOutline = _p$styleKeys.nodeOutline,\n      backgroundImage = _p$styleKeys.backgroundImage,\n      compound = _p$styleKeys.compound,\n      pie = _p$styleKeys.pie,\n      stripe = _p$styleKeys.stripe;\n    var nodeKeys = [nodeBody, nodeBorder, nodeOutline, backgroundImage, compound, pie, stripe].filter(function (k) {\n      return k != null;\n    }).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]);\n    _p.nodeKey = combineHashesArray(nodeKeys);\n    _p.hasPie = pie != null && pie[0] !== DEFAULT_HASH_SEED && pie[1] !== DEFAULT_HASH_SEED_ALT;\n    _p.hasStripe = stripe != null && stripe[0] !== DEFAULT_HASH_SEED && stripe[1] !== DEFAULT_HASH_SEED_ALT;\n  }\n  return oldStyleKey !== _p.styleKey;\n};\nstyfn$8.clearStyleHints = function (ele) {\n  var _p = ele._private;\n  _p.styleCxtKey = '';\n  _p.styleKeys = {};\n  _p.styleKey = null;\n  _p.labelKey = null;\n  _p.labelStyleKey = null;\n  _p.sourceLabelKey = null;\n  _p.sourceLabelStyleKey = null;\n  _p.targetLabelKey = null;\n  _p.targetLabelStyleKey = null;\n  _p.nodeKey = null;\n  _p.hasPie = null;\n  _p.hasStripe = null;\n};\n\n// apply a property to the style (for internal use)\n// returns whether application was successful\n//\n// now, this function flattens the property, and here's how:\n//\n// for parsedProp:{ bypass: true, deleteBypass: true }\n// no property is generated, instead the bypass property in the\n// element's style is replaced by what's pointed to by the `bypassed`\n// field in the bypass property (i.e. restoring the property the\n// bypass was overriding)\n//\n// for parsedProp:{ mapped: truthy }\n// the generated flattenedProp:{ mapping: prop }\n//\n// for parsedProp:{ bypass: true }\n// the generated flattenedProp:{ bypassed: parsedProp }\nstyfn$8.applyParsedProperty = function (ele, parsedProp) {\n  var self = this;\n  var prop = parsedProp;\n  var style = ele._private.style;\n  var flatProp;\n  var types = self.types;\n  var type = self.properties[prop.name].type;\n  var propIsBypass = prop.bypass;\n  var origProp = style[prop.name];\n  var origPropIsBypass = origProp && origProp.bypass;\n  var _p = ele._private;\n  var flatPropMapping = 'mapping';\n  var getVal = function getVal(p) {\n    if (p == null) {\n      return null;\n    } else if (p.pfValue != null) {\n      return p.pfValue;\n    } else {\n      return p.value;\n    }\n  };\n  var checkTriggers = function checkTriggers() {\n    var fromVal = getVal(origProp);\n    var toVal = getVal(prop);\n    self.checkTriggers(ele, prop.name, fromVal, toVal);\n  };\n\n  // edge sanity checks to prevent the client from making serious mistakes\n  if (parsedProp.name === 'curve-style' && ele.isEdge() && (\n  // loops must be bundled beziers\n  parsedProp.value !== 'bezier' && ele.isLoop() ||\n  // edges connected to compound nodes can not be haystacks\n  parsedProp.value === 'haystack' && (ele.source().isParent() || ele.target().isParent()))) {\n    prop = parsedProp = this.parse(parsedProp.name, 'bezier', propIsBypass);\n  }\n  if (prop[\"delete\"]) {\n    // delete the property and use the default value on falsey value\n    style[prop.name] = undefined;\n    checkTriggers();\n    return true;\n  }\n  if (prop.deleteBypassed) {\n    // delete the property that the\n    if (!origProp) {\n      checkTriggers();\n      return true; // can't delete if no prop\n    } else if (origProp.bypass) {\n      // delete bypassed\n      origProp.bypassed = undefined;\n      checkTriggers();\n      return true;\n    } else {\n      return false; // we're unsuccessful deleting the bypassed\n    }\n  }\n\n  // check if we need to delete the current bypass\n  if (prop.deleteBypass) {\n    // then this property is just here to indicate we need to delete\n    if (!origProp) {\n      checkTriggers();\n      return true; // property is already not defined\n    } else if (origProp.bypass) {\n      // then replace the bypass property with the original\n      // because the bypassed property was already applied (and therefore parsed), we can just replace it (no reapplying necessary)\n      style[prop.name] = origProp.bypassed;\n      checkTriggers();\n      return true;\n    } else {\n      return false; // we're unsuccessful deleting the bypass\n    }\n  }\n  var printMappingErr = function printMappingErr() {\n    warn('Do not assign mappings to elements without corresponding data (i.e. ele `' + ele.id() + '` has no mapping for property `' + prop.name + '` with data field `' + prop.field + '`); try a `[' + prop.field + ']` selector to limit scope to elements with `' + prop.field + '` defined');\n  };\n\n  // put the property in the style objects\n  switch (prop.mapped) {\n    // flatten the property if mapped\n    case types.mapData:\n      {\n        // flatten the field (e.g. data.foo.bar)\n        var fields = prop.field.split('.');\n        var fieldVal = _p.data;\n        for (var i = 0; i < fields.length && fieldVal; i++) {\n          var field = fields[i];\n          fieldVal = fieldVal[field];\n        }\n        if (fieldVal == null) {\n          printMappingErr();\n          return false;\n        }\n        var percent;\n        if (!number$1(fieldVal)) {\n          // then don't apply and fall back on the existing style\n          warn('Do not use continuous mappers without specifying numeric data (i.e. `' + prop.field + ': ' + fieldVal + '` for `' + ele.id() + '` is non-numeric)');\n          return false;\n        } else {\n          var fieldWidth = prop.fieldMax - prop.fieldMin;\n          if (fieldWidth === 0) {\n            // safety check -- not strictly necessary as no props of zero range should be passed here\n            percent = 0;\n          } else {\n            percent = (fieldVal - prop.fieldMin) / fieldWidth;\n          }\n        }\n\n        // make sure to bound percent value\n        if (percent < 0) {\n          percent = 0;\n        } else if (percent > 1) {\n          percent = 1;\n        }\n        if (type.color) {\n          var r1 = prop.valueMin[0];\n          var r2 = prop.valueMax[0];\n          var g1 = prop.valueMin[1];\n          var g2 = prop.valueMax[1];\n          var b1 = prop.valueMin[2];\n          var b2 = prop.valueMax[2];\n          var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3];\n          var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3];\n          var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)];\n          flatProp = {\n            // colours are simple, so just create the flat property instead of expensive string parsing\n            bypass: prop.bypass,\n            // we're a bypass if the mapping property is a bypass\n            name: prop.name,\n            value: clr,\n            strValue: 'rgb(' + clr[0] + ', ' + clr[1] + ', ' + clr[2] + ')'\n          };\n        } else if (type.number) {\n          var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent;\n          flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping);\n        } else {\n          return false; // can only map to colours and numbers\n        }\n        if (!flatProp) {\n          // if we can't flatten the property, then don't apply the property and fall back on the existing style\n          printMappingErr();\n          return false;\n        }\n        flatProp.mapping = prop; // keep a reference to the mapping\n        prop = flatProp; // the flattened (mapped) property is the one we want\n\n        break;\n      }\n\n    // direct mapping\n    case types.data:\n      {\n        // flatten the field (e.g. data.foo.bar)\n        var _fields = prop.field.split('.');\n        var _fieldVal = _p.data;\n        for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) {\n          var _field = _fields[_i3];\n          _fieldVal = _fieldVal[_field];\n        }\n        if (_fieldVal != null) {\n          flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping);\n        }\n        if (!flatProp) {\n          // if we can't flatten the property, then don't apply and fall back on the existing style\n          printMappingErr();\n          return false;\n        }\n        flatProp.mapping = prop; // keep a reference to the mapping\n        prop = flatProp; // the flattened (mapped) property is the one we want\n\n        break;\n      }\n    case types.fn:\n      {\n        var fn = prop.value;\n        var fnRetVal = prop.fnValue != null ? prop.fnValue : fn(ele); // check for cached value before calling function\n\n        prop.prevFnValue = fnRetVal;\n        if (fnRetVal == null) {\n          warn('Custom function mappers may not return null (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is null)');\n          return false;\n        }\n        flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping);\n        if (!flatProp) {\n          warn('Custom function mappers may not return invalid values for the property type (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is invalid)');\n          return false;\n        }\n        flatProp.mapping = copy(prop); // keep a reference to the mapping\n        prop = flatProp; // the flattened (mapped) property is the one we want\n\n        break;\n      }\n    case undefined:\n      break;\n    // just set the property\n\n    default:\n      return false;\n    // not a valid mapping\n  }\n\n  // if the property is a bypass property, then link the resultant property to the original one\n  if (propIsBypass) {\n    if (origPropIsBypass) {\n      // then this bypass overrides the existing one\n      prop.bypassed = origProp.bypassed; // steal bypassed prop from old bypass\n    } else {\n      // then link the orig prop to the new bypass\n      prop.bypassed = origProp;\n    }\n    style[prop.name] = prop; // and set\n  } else {\n    // prop is not bypass\n    if (origPropIsBypass) {\n      // then keep the orig prop (since it's a bypass) and link to the new prop\n      origProp.bypassed = prop;\n    } else {\n      // then just replace the old prop with the new one\n      style[prop.name] = prop;\n    }\n  }\n  checkTriggers();\n  return true;\n};\nstyfn$8.cleanElements = function (eles, keepBypasses) {\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    this.clearStyleHints(ele);\n    ele.dirtyCompoundBoundsCache();\n    ele.dirtyBoundingBoxCache();\n    if (!keepBypasses) {\n      ele._private.style = {};\n    } else {\n      var style = ele._private.style;\n      var propNames = Object.keys(style);\n      for (var j = 0; j < propNames.length; j++) {\n        var propName = propNames[j];\n        var eleProp = style[propName];\n        if (eleProp != null) {\n          if (eleProp.bypass) {\n            eleProp.bypassed = null;\n          } else {\n            style[propName] = null;\n          }\n        }\n      }\n    }\n  }\n};\n\n// updates the visual style for all elements (useful for manual style modification after init)\nstyfn$8.update = function () {\n  var cy = this._private.cy;\n  var eles = cy.mutableElements();\n  eles.updateStyle();\n};\n\n// diffProps : { name => { prev, next } }\nstyfn$8.updateTransitions = function (ele, diffProps) {\n  var self = this;\n  var _p = ele._private;\n  var props = ele.pstyle('transition-property').value;\n  var duration = ele.pstyle('transition-duration').pfValue;\n  var delay = ele.pstyle('transition-delay').pfValue;\n  if (props.length > 0 && duration > 0) {\n    var style = {};\n\n    // build up the style to animate towards\n    var anyPrev = false;\n    for (var i = 0; i < props.length; i++) {\n      var prop = props[i];\n      var styProp = ele.pstyle(prop);\n      var diffProp = diffProps[prop];\n      if (!diffProp) {\n        continue;\n      }\n      var prevProp = diffProp.prev;\n      var fromProp = prevProp;\n      var toProp = diffProp.next != null ? diffProp.next : styProp;\n      var diff = false;\n      var initVal = undefined;\n      var initDt = 0.000001; // delta time % value for initVal (allows animating out of init zero opacity)\n\n      if (!fromProp) {\n        continue;\n      }\n\n      // consider px values\n      if (number$1(fromProp.pfValue) && number$1(toProp.pfValue)) {\n        diff = toProp.pfValue - fromProp.pfValue; // nonzero is truthy\n        initVal = fromProp.pfValue + initDt * diff;\n\n        // consider numerical values\n      } else if (number$1(fromProp.value) && number$1(toProp.value)) {\n        diff = toProp.value - fromProp.value; // nonzero is truthy\n        initVal = fromProp.value + initDt * diff;\n\n        // consider colour values\n      } else if (array(fromProp.value) && array(toProp.value)) {\n        diff = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2];\n        initVal = fromProp.strValue;\n      }\n\n      // the previous value is good for an animation only if it's different\n      if (diff) {\n        style[prop] = toProp.strValue; // to val\n        this.applyBypass(ele, prop, initVal); // from val\n        anyPrev = true;\n      }\n    } // end if props allow ani\n\n    // can't transition if there's nothing previous to transition from\n    if (!anyPrev) {\n      return;\n    }\n    _p.transitioning = true;\n    new Promise$1(function (resolve) {\n      if (delay > 0) {\n        ele.delayAnimation(delay).play().promise().then(resolve);\n      } else {\n        resolve();\n      }\n    }).then(function () {\n      return ele.animation({\n        style: style,\n        duration: duration,\n        easing: ele.pstyle('transition-timing-function').value,\n        queue: false\n      }).play().promise();\n    }).then(function () {\n      // if( !isBypass ){\n      self.removeBypasses(ele, props);\n      ele.emitAndNotify('style');\n      // }\n\n      _p.transitioning = false;\n    });\n  } else if (_p.transitioning) {\n    this.removeBypasses(ele, props);\n    ele.emitAndNotify('style');\n    _p.transitioning = false;\n  }\n};\nstyfn$8.checkTrigger = function (ele, name, fromValue, toValue, getTrigger, onTrigger) {\n  var prop = this.properties[name];\n  var triggerCheck = getTrigger(prop);\n  if (ele.removed()) {\n    return;\n  }\n  if (triggerCheck != null && triggerCheck(fromValue, toValue, ele)) {\n    onTrigger(prop);\n  }\n};\nstyfn$8.checkZOrderTrigger = function (ele, name, fromValue, toValue) {\n  var _this = this;\n  this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n    return prop.triggersZOrder;\n  }, function () {\n    _this._private.cy.notify('zorder', ele);\n  });\n};\nstyfn$8.checkBoundsTrigger = function (ele, name, fromValue, toValue) {\n  this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n    return prop.triggersBounds;\n  }, function (prop) {\n    ele.dirtyCompoundBoundsCache();\n    ele.dirtyBoundingBoxCache();\n  });\n};\nstyfn$8.checkConnectedEdgesBoundsTrigger = function (ele, name, fromValue, toValue) {\n  this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n    return prop.triggersBoundsOfConnectedEdges;\n  }, function (prop) {\n    ele.connectedEdges().forEach(function (edge) {\n      edge.dirtyBoundingBoxCache();\n    });\n  });\n};\nstyfn$8.checkParallelEdgesBoundsTrigger = function (ele, name, fromValue, toValue) {\n  this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n    return prop.triggersBoundsOfParallelEdges;\n  }, function (prop) {\n    ele.parallelEdges().forEach(function (pllEdge) {\n      pllEdge.dirtyBoundingBoxCache();\n    });\n  });\n};\nstyfn$8.checkTriggers = function (ele, name, fromValue, toValue) {\n  ele.dirtyStyleCache();\n  this.checkZOrderTrigger(ele, name, fromValue, toValue);\n  this.checkBoundsTrigger(ele, name, fromValue, toValue);\n  this.checkConnectedEdgesBoundsTrigger(ele, name, fromValue, toValue);\n  this.checkParallelEdgesBoundsTrigger(ele, name, fromValue, toValue);\n};\n\nvar styfn$7 = {};\n\n// bypasses are applied to an existing style on an element, and just tacked on temporarily\n// returns true iff application was successful for at least 1 specified property\nstyfn$7.applyBypass = function (eles, name, value, updateTransitions) {\n  var self = this;\n  var props = [];\n  var isBypass = true;\n\n  // put all the properties (can specify one or many) in an array after parsing them\n  if (name === '*' || name === '**') {\n    // apply to all property names\n\n    if (value !== undefined) {\n      for (var i = 0; i < self.properties.length; i++) {\n        var prop = self.properties[i];\n        var _name = prop.name;\n        var parsedProp = this.parse(_name, value, true);\n        if (parsedProp) {\n          props.push(parsedProp);\n        }\n      }\n    }\n  } else if (string(name)) {\n    // then parse the single property\n    var _parsedProp = this.parse(name, value, true);\n    if (_parsedProp) {\n      props.push(_parsedProp);\n    }\n  } else if (plainObject(name)) {\n    // then parse each property\n    var specifiedProps = name;\n    updateTransitions = value;\n    var names = Object.keys(specifiedProps);\n    for (var _i = 0; _i < names.length; _i++) {\n      var _name2 = names[_i];\n      var _value = specifiedProps[_name2];\n      if (_value === undefined) {\n        // try camel case name too\n        _value = specifiedProps[dash2camel(_name2)];\n      }\n      if (_value !== undefined) {\n        var _parsedProp2 = this.parse(_name2, _value, true);\n        if (_parsedProp2) {\n          props.push(_parsedProp2);\n        }\n      }\n    }\n  } else {\n    // can't do anything without well defined properties\n    return false;\n  }\n\n  // we've failed if there are no valid properties\n  if (props.length === 0) {\n    return false;\n  }\n\n  // now, apply the bypass properties on the elements\n  var ret = false; // return true if at least one succesful bypass applied\n  for (var _i2 = 0; _i2 < eles.length; _i2++) {\n    // for each ele\n    var ele = eles[_i2];\n    var diffProps = {};\n    var diffProp = undefined;\n    for (var j = 0; j < props.length; j++) {\n      // for each prop\n      var _prop = props[j];\n      if (updateTransitions) {\n        var prevProp = ele.pstyle(_prop.name);\n        diffProp = diffProps[_prop.name] = {\n          prev: prevProp\n        };\n      }\n      ret = this.applyParsedProperty(ele, copy(_prop)) || ret;\n      if (updateTransitions) {\n        diffProp.next = ele.pstyle(_prop.name);\n      }\n    } // for props\n\n    if (ret) {\n      this.updateStyleHints(ele);\n    }\n    if (updateTransitions) {\n      this.updateTransitions(ele, diffProps, isBypass);\n    }\n  } // for eles\n\n  return ret;\n};\n\n// only useful in specific cases like animation\nstyfn$7.overrideBypass = function (eles, name, value) {\n  name = camel2dash(name);\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    var prop = ele._private.style[name];\n    var type = this.properties[name].type;\n    var isColor = type.color;\n    var isMulti = type.mutiple;\n    var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value;\n    if (!prop || !prop.bypass) {\n      // need a bypass if one doesn't exist\n      this.applyBypass(ele, name, value);\n    } else {\n      prop.value = value;\n      if (prop.pfValue != null) {\n        prop.pfValue = value;\n      }\n      if (isColor) {\n        prop.strValue = 'rgb(' + value.join(',') + ')';\n      } else if (isMulti) {\n        prop.strValue = value.join(' ');\n      } else {\n        prop.strValue = '' + value;\n      }\n      this.updateStyleHints(ele);\n    }\n    this.checkTriggers(ele, name, oldValue, value);\n  }\n};\nstyfn$7.removeAllBypasses = function (eles, updateTransitions) {\n  return this.removeBypasses(eles, this.propertyNames, updateTransitions);\n};\nstyfn$7.removeBypasses = function (eles, props, updateTransitions) {\n  var isBypass = true;\n  for (var j = 0; j < eles.length; j++) {\n    var ele = eles[j];\n    var diffProps = {};\n    for (var i = 0; i < props.length; i++) {\n      var name = props[i];\n      var prop = this.properties[name];\n      var prevProp = ele.pstyle(prop.name);\n      if (!prevProp || !prevProp.bypass) {\n        // if a bypass doesn't exist for the prop, nothing needs to be removed\n        continue;\n      }\n      var value = ''; // empty => remove bypass\n      var parsedProp = this.parse(name, value, true);\n      var diffProp = diffProps[prop.name] = {\n        prev: prevProp\n      };\n      this.applyParsedProperty(ele, parsedProp);\n      diffProp.next = ele.pstyle(prop.name);\n    } // for props\n\n    this.updateStyleHints(ele);\n    if (updateTransitions) {\n      this.updateTransitions(ele, diffProps, isBypass);\n    }\n  } // for eles\n};\n\nvar styfn$6 = {};\n\n// gets what an em size corresponds to in pixels relative to a dom element\nstyfn$6.getEmSizeInPixels = function () {\n  var px = this.containerCss('font-size');\n  if (px != null) {\n    return parseFloat(px);\n  } else {\n    return 1; // for headless\n  }\n};\n\n// gets css property from the core container\nstyfn$6.containerCss = function (propName) {\n  var cy = this._private.cy;\n  var domElement = cy.container();\n  var containerWindow = cy.window();\n  if (containerWindow && domElement && containerWindow.getComputedStyle) {\n    return containerWindow.getComputedStyle(domElement).getPropertyValue(propName);\n  }\n};\n\nvar styfn$5 = {};\n\n// gets the rendered style for an element\nstyfn$5.getRenderedStyle = function (ele, prop) {\n  if (prop) {\n    return this.getStylePropertyValue(ele, prop, true);\n  } else {\n    return this.getRawStyle(ele, true);\n  }\n};\n\n// gets the raw style for an element\nstyfn$5.getRawStyle = function (ele, isRenderedVal) {\n  var self = this;\n  ele = ele[0]; // insure it's an element\n\n  if (ele) {\n    var rstyle = {};\n    for (var i = 0; i < self.properties.length; i++) {\n      var prop = self.properties[i];\n      var val = self.getStylePropertyValue(ele, prop.name, isRenderedVal);\n      if (val != null) {\n        rstyle[prop.name] = val;\n        rstyle[dash2camel(prop.name)] = val;\n      }\n    }\n    return rstyle;\n  }\n};\nstyfn$5.getIndexedStyle = function (ele, property, subproperty, index) {\n  var pstyle = ele.pstyle(property)[subproperty][index];\n  return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property)[subproperty][0];\n};\nstyfn$5.getStylePropertyValue = function (ele, propName, isRenderedVal) {\n  var self = this;\n  ele = ele[0]; // insure it's an element\n\n  if (ele) {\n    var prop = self.properties[propName];\n    if (prop.alias) {\n      prop = prop.pointsTo;\n    }\n    var type = prop.type;\n    var styleProp = ele.pstyle(prop.name);\n    if (styleProp) {\n      var value = styleProp.value,\n        units = styleProp.units,\n        strValue = styleProp.strValue;\n      if (isRenderedVal && type.number && value != null && number$1(value)) {\n        var zoom = ele.cy().zoom();\n        var getRenderedValue = function getRenderedValue(val) {\n          return val * zoom;\n        };\n        var getValueStringWithUnits = function getValueStringWithUnits(val, units) {\n          return getRenderedValue(val) + units;\n        };\n        var isArrayValue = array(value);\n        var haveUnits = isArrayValue ? units.every(function (u) {\n          return u != null;\n        }) : units != null;\n        if (haveUnits) {\n          if (isArrayValue) {\n            return value.map(function (v, i) {\n              return getValueStringWithUnits(v, units[i]);\n            }).join(' ');\n          } else {\n            return getValueStringWithUnits(value, units);\n          }\n        } else {\n          if (isArrayValue) {\n            return value.map(function (v) {\n              return string(v) ? v : '' + getRenderedValue(v);\n            }).join(' ');\n          } else {\n            return '' + getRenderedValue(value);\n          }\n        }\n      } else if (strValue != null) {\n        return strValue;\n      }\n    }\n    return null;\n  }\n};\nstyfn$5.getAnimationStartStyle = function (ele, aniProps) {\n  var rstyle = {};\n  for (var i = 0; i < aniProps.length; i++) {\n    var aniProp = aniProps[i];\n    var name = aniProp.name;\n    var styleProp = ele.pstyle(name);\n    if (styleProp !== undefined) {\n      // then make a prop of it\n      if (plainObject(styleProp)) {\n        styleProp = this.parse(name, styleProp.strValue);\n      } else {\n        styleProp = this.parse(name, styleProp);\n      }\n    }\n    if (styleProp) {\n      rstyle[name] = styleProp;\n    }\n  }\n  return rstyle;\n};\nstyfn$5.getPropsList = function (propsObj) {\n  var self = this;\n  var rstyle = [];\n  var style = propsObj;\n  var props = self.properties;\n  if (style) {\n    var names = Object.keys(style);\n    for (var i = 0; i < names.length; i++) {\n      var name = names[i];\n      var val = style[name];\n      var prop = props[name] || props[camel2dash(name)];\n      var styleProp = this.parse(prop.name, val);\n      if (styleProp) {\n        rstyle.push(styleProp);\n      }\n    }\n  }\n  return rstyle;\n};\nstyfn$5.getNonDefaultPropertiesHash = function (ele, propNames, seed) {\n  var hash = seed.slice();\n  var name, val, strVal, chVal;\n  var i, j;\n  for (i = 0; i < propNames.length; i++) {\n    name = propNames[i];\n    val = ele.pstyle(name, false);\n    if (val == null) {\n      continue;\n    } else if (val.pfValue != null) {\n      hash[0] = hashInt(chVal, hash[0]);\n      hash[1] = hashIntAlt(chVal, hash[1]);\n    } else {\n      strVal = val.strValue;\n      for (j = 0; j < strVal.length; j++) {\n        chVal = strVal.charCodeAt(j);\n        hash[0] = hashInt(chVal, hash[0]);\n        hash[1] = hashIntAlt(chVal, hash[1]);\n      }\n    }\n  }\n  return hash;\n};\nstyfn$5.getPropertiesHash = styfn$5.getNonDefaultPropertiesHash;\n\nvar styfn$4 = {};\nstyfn$4.appendFromJson = function (json) {\n  var style = this;\n  for (var i = 0; i < json.length; i++) {\n    var context = json[i];\n    var selector = context.selector;\n    var props = context.style || context.css;\n    var names = Object.keys(props);\n    style.selector(selector); // apply selector\n\n    for (var j = 0; j < names.length; j++) {\n      var name = names[j];\n      var value = props[name];\n      style.css(name, value); // apply property\n    }\n  }\n  return style;\n};\n\n// accessible cy.style() function\nstyfn$4.fromJson = function (json) {\n  var style = this;\n  style.resetToDefault();\n  style.appendFromJson(json);\n  return style;\n};\n\n// get json from cy.style() api\nstyfn$4.json = function () {\n  var json = [];\n  for (var i = this.defaultLength; i < this.length; i++) {\n    var cxt = this[i];\n    var selector = cxt.selector;\n    var props = cxt.properties;\n    var css = {};\n    for (var j = 0; j < props.length; j++) {\n      var prop = props[j];\n      css[prop.name] = prop.strValue;\n    }\n    json.push({\n      selector: !selector ? 'core' : selector.toString(),\n      style: css\n    });\n  }\n  return json;\n};\n\nvar styfn$3 = {};\nstyfn$3.appendFromString = function (string) {\n  var self = this;\n  var style = this;\n  var remaining = '' + string;\n  var selAndBlockStr;\n  var blockRem;\n  var propAndValStr;\n\n  // remove comments from the style string\n  remaining = remaining.replace(/[/][*](\\s|.)+?[*][/]/g, '');\n  function removeSelAndBlockFromRemaining() {\n    // remove the parsed selector and block from the remaining text to parse\n    if (remaining.length > selAndBlockStr.length) {\n      remaining = remaining.substr(selAndBlockStr.length);\n    } else {\n      remaining = '';\n    }\n  }\n  function removePropAndValFromRem() {\n    // remove the parsed property and value from the remaining block text to parse\n    if (blockRem.length > propAndValStr.length) {\n      blockRem = blockRem.substr(propAndValStr.length);\n    } else {\n      blockRem = '';\n    }\n  }\n  for (;;) {\n    var nothingLeftToParse = remaining.match(/^\\s*$/);\n    if (nothingLeftToParse) {\n      break;\n    }\n    var selAndBlock = remaining.match(/^\\s*((?:.|\\s)+?)\\s*\\{((?:.|\\s)+?)\\}/);\n    if (!selAndBlock) {\n      warn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + remaining);\n      break;\n    }\n    selAndBlockStr = selAndBlock[0];\n\n    // parse the selector\n    var selectorStr = selAndBlock[1];\n    if (selectorStr !== 'core') {\n      var selector = new Selector(selectorStr);\n      if (selector.invalid) {\n        warn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + selectorStr);\n\n        // skip this selector and block\n        removeSelAndBlockFromRemaining();\n        continue;\n      }\n    }\n\n    // parse the block of properties and values\n    var blockStr = selAndBlock[2];\n    var invalidBlock = false;\n    blockRem = blockStr;\n    var props = [];\n    for (;;) {\n      var _nothingLeftToParse = blockRem.match(/^\\s*$/);\n      if (_nothingLeftToParse) {\n        break;\n      }\n      var propAndVal = blockRem.match(/^\\s*(.+?)\\s*:\\s*(.+?)(?:\\s*;|\\s*$)/);\n      if (!propAndVal) {\n        warn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + blockStr);\n        invalidBlock = true;\n        break;\n      }\n      propAndValStr = propAndVal[0];\n      var propStr = propAndVal[1];\n      var valStr = propAndVal[2];\n      var prop = self.properties[propStr];\n      if (!prop) {\n        warn('Skipping property: Invalid property name in: ' + propAndValStr);\n\n        // skip this property in the block\n        removePropAndValFromRem();\n        continue;\n      }\n      var parsedProp = style.parse(propStr, valStr);\n      if (!parsedProp) {\n        warn('Skipping property: Invalid property definition in: ' + propAndValStr);\n\n        // skip this property in the block\n        removePropAndValFromRem();\n        continue;\n      }\n      props.push({\n        name: propStr,\n        val: valStr\n      });\n      removePropAndValFromRem();\n    }\n    if (invalidBlock) {\n      removeSelAndBlockFromRemaining();\n      break;\n    }\n\n    // put the parsed block in the style\n    style.selector(selectorStr);\n    for (var i = 0; i < props.length; i++) {\n      var _prop = props[i];\n      style.css(_prop.name, _prop.val);\n    }\n    removeSelAndBlockFromRemaining();\n  }\n  return style;\n};\nstyfn$3.fromString = function (string) {\n  var style = this;\n  style.resetToDefault();\n  style.appendFromString(string);\n  return style;\n};\n\nvar styfn$2 = {};\n(function () {\n  var number$1 = number;\n  var rgba = rgbaNoBackRefs;\n  var hsla = hslaNoBackRefs;\n  var hex3$1 = hex3;\n  var hex6$1 = hex6;\n  var data = function data(prefix) {\n    return '^' + prefix + '\\\\s*\\\\(\\\\s*([\\\\w\\\\.]+)\\\\s*\\\\)$';\n  };\n  var mapData = function mapData(prefix) {\n    var mapArg = number$1 + '|\\\\w+|' + rgba + '|' + hsla + '|' + hex3$1 + '|' + hex6$1;\n    return '^' + prefix + '\\\\s*\\\\(([\\\\w\\\\.]+)\\\\s*\\\\,\\\\s*(' + number$1 + ')\\\\s*\\\\,\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + mapArg + ')\\\\s*\\\\,\\\\s*(' + mapArg + ')\\\\)$';\n  };\n  var urlRegexes = ['^url\\\\s*\\\\(\\\\s*[\\'\"]?(.+?)[\\'\"]?\\\\s*\\\\)$', '^(none)$', '^(.+)$'];\n\n  // each visual style property has a type and needs to be validated according to it\n  styfn$2.types = {\n    time: {\n      number: true,\n      min: 0,\n      units: 's|ms',\n      implicitUnits: 'ms'\n    },\n    percent: {\n      number: true,\n      min: 0,\n      max: 100,\n      units: '%',\n      implicitUnits: '%'\n    },\n    percentages: {\n      number: true,\n      min: 0,\n      max: 100,\n      units: '%',\n      implicitUnits: '%',\n      multiple: true\n    },\n    zeroOneNumber: {\n      number: true,\n      min: 0,\n      max: 1,\n      unitless: true\n    },\n    zeroOneNumbers: {\n      number: true,\n      min: 0,\n      max: 1,\n      unitless: true,\n      multiple: true\n    },\n    nOneOneNumber: {\n      number: true,\n      min: -1,\n      max: 1,\n      unitless: true\n    },\n    nonNegativeInt: {\n      number: true,\n      min: 0,\n      integer: true,\n      unitless: true\n    },\n    nonNegativeNumber: {\n      number: true,\n      min: 0,\n      unitless: true\n    },\n    position: {\n      enums: ['parent', 'origin']\n    },\n    nodeSize: {\n      number: true,\n      min: 0,\n      enums: ['label']\n    },\n    number: {\n      number: true,\n      unitless: true\n    },\n    numbers: {\n      number: true,\n      unitless: true,\n      multiple: true\n    },\n    positiveNumber: {\n      number: true,\n      unitless: true,\n      min: 0,\n      strictMin: true\n    },\n    size: {\n      number: true,\n      min: 0\n    },\n    bidirectionalSize: {\n      number: true\n    },\n    // allows negative\n    bidirectionalSizeMaybePercent: {\n      number: true,\n      allowPercent: true\n    },\n    // allows negative\n    bidirectionalSizes: {\n      number: true,\n      multiple: true\n    },\n    // allows negative\n    sizeMaybePercent: {\n      number: true,\n      min: 0,\n      allowPercent: true\n    },\n    axisDirection: {\n      enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto']\n    },\n    axisDirectionExplicit: {\n      enums: ['leftward', 'rightward', 'upward', 'downward']\n    },\n    axisDirectionPrimary: {\n      enums: ['horizontal', 'vertical']\n    },\n    paddingRelativeTo: {\n      enums: ['width', 'height', 'average', 'min', 'max']\n    },\n    bgWH: {\n      number: true,\n      min: 0,\n      allowPercent: true,\n      enums: ['auto'],\n      multiple: true\n    },\n    bgPos: {\n      number: true,\n      allowPercent: true,\n      multiple: true\n    },\n    bgRelativeTo: {\n      enums: ['inner', 'include-padding'],\n      multiple: true\n    },\n    bgRepeat: {\n      enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'],\n      multiple: true\n    },\n    bgFit: {\n      enums: ['none', 'contain', 'cover'],\n      multiple: true\n    },\n    bgCrossOrigin: {\n      enums: ['anonymous', 'use-credentials', 'null'],\n      multiple: true\n    },\n    bgClip: {\n      enums: ['none', 'node'],\n      multiple: true\n    },\n    bgContainment: {\n      enums: ['inside', 'over'],\n      multiple: true\n    },\n    boxSelection: {\n      enums: ['contain', 'overlap', 'none']\n    },\n    color: {\n      color: true\n    },\n    colors: {\n      color: true,\n      multiple: true\n    },\n    fill: {\n      enums: ['solid', 'linear-gradient', 'radial-gradient']\n    },\n    bool: {\n      enums: ['yes', 'no']\n    },\n    bools: {\n      enums: ['yes', 'no'],\n      multiple: true\n    },\n    lineStyle: {\n      enums: ['solid', 'dotted', 'dashed']\n    },\n    lineCap: {\n      enums: ['butt', 'round', 'square']\n    },\n    linePosition: {\n      enums: ['center', 'inside', 'outside']\n    },\n    lineJoin: {\n      enums: ['round', 'bevel', 'miter']\n    },\n    borderStyle: {\n      enums: ['solid', 'dotted', 'dashed', 'double']\n    },\n    curveStyle: {\n      enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'straight-triangle', 'taxi', 'round-segments', 'round-taxi']\n    },\n    radiusType: {\n      enums: ['arc-radius', 'influence-radius'],\n      multiple: true\n    },\n    fontFamily: {\n      regex: '^([\\\\w- \\\\\"]+(?:\\\\s*,\\\\s*[\\\\w- \\\\\"]+)*)$'\n    },\n    fontStyle: {\n      enums: ['italic', 'normal', 'oblique']\n    },\n    fontWeight: {\n      enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900]\n    },\n    textDecoration: {\n      enums: ['none', 'underline', 'overline', 'line-through']\n    },\n    textTransform: {\n      enums: ['none', 'uppercase', 'lowercase']\n    },\n    textWrap: {\n      enums: ['none', 'wrap', 'ellipsis']\n    },\n    textOverflowWrap: {\n      enums: ['whitespace', 'anywhere']\n    },\n    textBackgroundShape: {\n      enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'circle']\n    },\n    nodeShape: {\n      enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'cutrectangle', 'cut-rectangle', 'bottomroundrectangle', 'bottom-round-rectangle', 'barrel', 'ellipse', 'triangle', 'round-triangle', 'square', 'pentagon', 'round-pentagon', 'hexagon', 'round-hexagon', 'concavehexagon', 'concave-hexagon', 'heptagon', 'round-heptagon', 'octagon', 'round-octagon', 'tag', 'round-tag', 'star', 'diamond', 'round-diamond', 'vee', 'rhomboid', 'right-rhomboid', 'polygon']\n    },\n    overlayShape: {\n      enums: ['roundrectangle', 'round-rectangle', 'ellipse']\n    },\n    cornerRadius: {\n      number: true,\n      min: 0,\n      units: 'px|em',\n      implicitUnits: 'px',\n      enums: ['auto']\n    },\n    compoundIncludeLabels: {\n      enums: ['include', 'exclude']\n    },\n    arrowShape: {\n      enums: ['tee', 'triangle', 'triangle-tee', 'circle-triangle', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none']\n    },\n    arrowFill: {\n      enums: ['filled', 'hollow']\n    },\n    arrowWidth: {\n      number: true,\n      units: '%|px|em',\n      implicitUnits: 'px',\n      enums: ['match-line']\n    },\n    display: {\n      enums: ['element', 'none']\n    },\n    visibility: {\n      enums: ['hidden', 'visible']\n    },\n    zCompoundDepth: {\n      enums: ['bottom', 'orphan', 'auto', 'top']\n    },\n    zIndexCompare: {\n      enums: ['auto', 'manual']\n    },\n    valign: {\n      enums: ['top', 'center', 'bottom']\n    },\n    halign: {\n      enums: ['left', 'center', 'right']\n    },\n    justification: {\n      enums: ['left', 'center', 'right', 'auto']\n    },\n    text: {\n      string: true\n    },\n    data: {\n      mapping: true,\n      regex: data('data')\n    },\n    layoutData: {\n      mapping: true,\n      regex: data('layoutData')\n    },\n    scratch: {\n      mapping: true,\n      regex: data('scratch')\n    },\n    mapData: {\n      mapping: true,\n      regex: mapData('mapData')\n    },\n    mapLayoutData: {\n      mapping: true,\n      regex: mapData('mapLayoutData')\n    },\n    mapScratch: {\n      mapping: true,\n      regex: mapData('mapScratch')\n    },\n    fn: {\n      mapping: true,\n      fn: true\n    },\n    url: {\n      regexes: urlRegexes,\n      singleRegexMatchValue: true\n    },\n    urls: {\n      regexes: urlRegexes,\n      singleRegexMatchValue: true,\n      multiple: true\n    },\n    propList: {\n      propList: true\n    },\n    angle: {\n      number: true,\n      units: 'deg|rad',\n      implicitUnits: 'rad'\n    },\n    textRotation: {\n      number: true,\n      units: 'deg|rad',\n      implicitUnits: 'rad',\n      enums: ['none', 'autorotate']\n    },\n    polygonPointList: {\n      number: true,\n      multiple: true,\n      evenMultiple: true,\n      min: -1,\n      max: 1,\n      unitless: true\n    },\n    edgeDistances: {\n      enums: ['intersection', 'node-position', 'endpoints']\n    },\n    edgeEndpoint: {\n      number: true,\n      multiple: true,\n      units: '%|px|em|deg|rad',\n      implicitUnits: 'px',\n      enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'],\n      singleEnum: true,\n      validate: function validate(valArr, unitsArr) {\n        switch (valArr.length) {\n          case 2:\n            // can be % or px only\n            return unitsArr[0] !== 'deg' && unitsArr[0] !== 'rad' && unitsArr[1] !== 'deg' && unitsArr[1] !== 'rad';\n          case 1:\n            // can be enum, deg, or rad only\n            return string(valArr[0]) || unitsArr[0] === 'deg' || unitsArr[0] === 'rad';\n          default:\n            return false;\n        }\n      }\n    },\n    easing: {\n      regexes: ['^(spring)\\\\s*\\\\(\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*\\\\)$', '^(cubic-bezier)\\\\s*\\\\(\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*\\\\)$'],\n      enums: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'ease-in-sine', 'ease-out-sine', 'ease-in-out-sine', 'ease-in-quad', 'ease-out-quad', 'ease-in-out-quad', 'ease-in-cubic', 'ease-out-cubic', 'ease-in-out-cubic', 'ease-in-quart', 'ease-out-quart', 'ease-in-out-quart', 'ease-in-quint', 'ease-out-quint', 'ease-in-out-quint', 'ease-in-expo', 'ease-out-expo', 'ease-in-out-expo', 'ease-in-circ', 'ease-out-circ', 'ease-in-out-circ']\n    },\n    gradientDirection: {\n      enums: ['to-bottom', 'to-top', 'to-left', 'to-right', 'to-bottom-right', 'to-bottom-left', 'to-top-right', 'to-top-left', 'to-right-bottom', 'to-left-bottom', 'to-right-top', 'to-left-top' // different order\n      ]\n    },\n    boundsExpansion: {\n      number: true,\n      multiple: true,\n      min: 0,\n      validate: function validate(valArr) {\n        var length = valArr.length;\n        return length === 1 || length === 2 || length === 4;\n      }\n    }\n  };\n  var diff = {\n    zeroNonZero: function zeroNonZero(val1, val2) {\n      if ((val1 == null || val2 == null) && val1 !== val2) {\n        return true; // null cases could represent any value\n      }\n      if (val1 == 0 && val2 != 0) {\n        return true;\n      } else if (val1 != 0 && val2 == 0) {\n        return true;\n      } else {\n        return false;\n      }\n    },\n    any: function any(val1, val2) {\n      return val1 != val2;\n    },\n    emptyNonEmpty: function emptyNonEmpty(str1, str2) {\n      var empty1 = emptyString(str1);\n      var empty2 = emptyString(str2);\n      return empty1 && !empty2 || !empty1 && empty2;\n    }\n  };\n\n  // define visual style properties\n  //\n  // - n.b. adding a new group of props may require updates to updateStyleHints()\n  // - adding new props to an existing group gets handled automatically\n\n  var t = styfn$2.types;\n  var mainLabel = [{\n    name: 'label',\n    type: t.text,\n    triggersBounds: diff.any,\n    triggersZOrder: diff.emptyNonEmpty\n  }, {\n    name: 'text-rotation',\n    type: t.textRotation,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-margin-x',\n    type: t.bidirectionalSize,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-margin-y',\n    type: t.bidirectionalSize,\n    triggersBounds: diff.any\n  }];\n  var sourceLabel = [{\n    name: 'source-label',\n    type: t.text,\n    triggersBounds: diff.any\n  }, {\n    name: 'source-text-rotation',\n    type: t.textRotation,\n    triggersBounds: diff.any\n  }, {\n    name: 'source-text-margin-x',\n    type: t.bidirectionalSize,\n    triggersBounds: diff.any\n  }, {\n    name: 'source-text-margin-y',\n    type: t.bidirectionalSize,\n    triggersBounds: diff.any\n  }, {\n    name: 'source-text-offset',\n    type: t.size,\n    triggersBounds: diff.any\n  }];\n  var targetLabel = [{\n    name: 'target-label',\n    type: t.text,\n    triggersBounds: diff.any\n  }, {\n    name: 'target-text-rotation',\n    type: t.textRotation,\n    triggersBounds: diff.any\n  }, {\n    name: 'target-text-margin-x',\n    type: t.bidirectionalSize,\n    triggersBounds: diff.any\n  }, {\n    name: 'target-text-margin-y',\n    type: t.bidirectionalSize,\n    triggersBounds: diff.any\n  }, {\n    name: 'target-text-offset',\n    type: t.size,\n    triggersBounds: diff.any\n  }];\n  var labelDimensions = [{\n    name: 'font-family',\n    type: t.fontFamily,\n    triggersBounds: diff.any\n  }, {\n    name: 'font-style',\n    type: t.fontStyle,\n    triggersBounds: diff.any\n  }, {\n    name: 'font-weight',\n    type: t.fontWeight,\n    triggersBounds: diff.any\n  }, {\n    name: 'font-size',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-transform',\n    type: t.textTransform,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-wrap',\n    type: t.textWrap,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-overflow-wrap',\n    type: t.textOverflowWrap,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-max-width',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-outline-width',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'line-height',\n    type: t.positiveNumber,\n    triggersBounds: diff.any\n  }];\n  var commonLabel = [{\n    name: 'text-valign',\n    type: t.valign,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-halign',\n    type: t.halign,\n    triggersBounds: diff.any\n  }, {\n    name: 'color',\n    type: t.color\n  }, {\n    name: 'text-outline-color',\n    type: t.color\n  }, {\n    name: 'text-outline-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'text-background-color',\n    type: t.color\n  }, {\n    name: 'text-background-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'text-background-padding',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-border-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'text-border-color',\n    type: t.color\n  }, {\n    name: 'text-border-width',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-border-style',\n    type: t.borderStyle,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-background-shape',\n    type: t.textBackgroundShape,\n    triggersBounds: diff.any\n  }, {\n    name: 'text-justification',\n    type: t.justification\n  }, {\n    name: 'box-select-labels',\n    type: t.bool,\n    triggersBounds: diff.any\n  }];\n  var behavior = [{\n    name: 'events',\n    type: t.bool,\n    triggersZOrder: diff.any\n  }, {\n    name: 'text-events',\n    type: t.bool,\n    triggersZOrder: diff.any\n  }, {\n    name: 'box-selection',\n    type: t.boxSelection,\n    triggersZOrder: diff.any\n  }];\n  var visibility = [{\n    name: 'display',\n    type: t.display,\n    triggersZOrder: diff.any,\n    triggersBounds: diff.any,\n    triggersBoundsOfConnectedEdges: diff.any,\n    triggersBoundsOfParallelEdges: function triggersBoundsOfParallelEdges(fromValue, toValue, ele) {\n      if (fromValue === toValue) {\n        return false;\n      }\n\n      // only if edge is bundled bezier (so as not to affect performance of other edges)\n      return ele.pstyle('curve-style').value === 'bezier';\n    }\n  }, {\n    name: 'visibility',\n    type: t.visibility,\n    triggersZOrder: diff.any\n  }, {\n    name: 'opacity',\n    type: t.zeroOneNumber,\n    triggersZOrder: diff.zeroNonZero\n  }, {\n    name: 'text-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'min-zoomed-font-size',\n    type: t.size\n  }, {\n    name: 'z-compound-depth',\n    type: t.zCompoundDepth,\n    triggersZOrder: diff.any\n  }, {\n    name: 'z-index-compare',\n    type: t.zIndexCompare,\n    triggersZOrder: diff.any\n  }, {\n    name: 'z-index',\n    type: t.number,\n    triggersZOrder: diff.any\n  }];\n  var overlay = [{\n    name: 'overlay-padding',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'overlay-color',\n    type: t.color\n  }, {\n    name: 'overlay-opacity',\n    type: t.zeroOneNumber,\n    triggersBounds: diff.zeroNonZero\n  }, {\n    name: 'overlay-shape',\n    type: t.overlayShape,\n    triggersBounds: diff.any\n  }, {\n    name: 'overlay-corner-radius',\n    type: t.cornerRadius\n  }];\n  var underlay = [{\n    name: 'underlay-padding',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'underlay-color',\n    type: t.color\n  }, {\n    name: 'underlay-opacity',\n    type: t.zeroOneNumber,\n    triggersBounds: diff.zeroNonZero\n  }, {\n    name: 'underlay-shape',\n    type: t.overlayShape,\n    triggersBounds: diff.any\n  }, {\n    name: 'underlay-corner-radius',\n    type: t.cornerRadius\n  }];\n  var transition = [{\n    name: 'transition-property',\n    type: t.propList\n  }, {\n    name: 'transition-duration',\n    type: t.time\n  }, {\n    name: 'transition-delay',\n    type: t.time\n  }, {\n    name: 'transition-timing-function',\n    type: t.easing\n  }];\n  var nodeSizeHashOverride = function nodeSizeHashOverride(ele, parsedProp) {\n    if (parsedProp.value === 'label') {\n      return -ele.poolIndex(); // no hash key hits is using label size (hitrate for perf probably low anyway)\n    } else {\n      return parsedProp.pfValue;\n    }\n  };\n  var nodeBody = [{\n    name: 'height',\n    type: t.nodeSize,\n    triggersBounds: diff.any,\n    hashOverride: nodeSizeHashOverride\n  }, {\n    name: 'width',\n    type: t.nodeSize,\n    triggersBounds: diff.any,\n    hashOverride: nodeSizeHashOverride\n  }, {\n    name: 'shape',\n    type: t.nodeShape,\n    triggersBounds: diff.any\n  }, {\n    name: 'shape-polygon-points',\n    type: t.polygonPointList,\n    triggersBounds: diff.any\n  }, {\n    name: 'corner-radius',\n    type: t.cornerRadius\n  }, {\n    name: 'background-color',\n    type: t.color\n  }, {\n    name: 'background-fill',\n    type: t.fill\n  }, {\n    name: 'background-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'background-blacken',\n    type: t.nOneOneNumber\n  }, {\n    name: 'background-gradient-stop-colors',\n    type: t.colors\n  }, {\n    name: 'background-gradient-stop-positions',\n    type: t.percentages\n  }, {\n    name: 'background-gradient-direction',\n    type: t.gradientDirection\n  }, {\n    name: 'padding',\n    type: t.sizeMaybePercent,\n    triggersBounds: diff.any\n  }, {\n    name: 'padding-relative-to',\n    type: t.paddingRelativeTo,\n    triggersBounds: diff.any\n  }, {\n    name: 'bounds-expansion',\n    type: t.boundsExpansion,\n    triggersBounds: diff.any\n  }];\n  var nodeBorder = [{\n    name: 'border-color',\n    type: t.color\n  }, {\n    name: 'border-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'border-width',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'border-style',\n    type: t.borderStyle\n  }, {\n    name: 'border-cap',\n    type: t.lineCap\n  }, {\n    name: 'border-join',\n    type: t.lineJoin\n  }, {\n    name: 'border-dash-pattern',\n    type: t.numbers\n  }, {\n    name: 'border-dash-offset',\n    type: t.number\n  }, {\n    name: 'border-position',\n    type: t.linePosition\n  }];\n  var nodeOutline = [{\n    name: 'outline-color',\n    type: t.color\n  }, {\n    name: 'outline-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'outline-width',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'outline-style',\n    type: t.borderStyle\n  }, {\n    name: 'outline-offset',\n    type: t.size,\n    triggersBounds: diff.any\n  }];\n  var backgroundImage = [{\n    name: 'background-image',\n    type: t.urls\n  }, {\n    name: 'background-image-crossorigin',\n    type: t.bgCrossOrigin\n  }, {\n    name: 'background-image-opacity',\n    type: t.zeroOneNumbers\n  }, {\n    name: 'background-image-containment',\n    type: t.bgContainment\n  }, {\n    name: 'background-image-smoothing',\n    type: t.bools\n  }, {\n    name: 'background-position-x',\n    type: t.bgPos\n  }, {\n    name: 'background-position-y',\n    type: t.bgPos\n  }, {\n    name: 'background-width-relative-to',\n    type: t.bgRelativeTo\n  }, {\n    name: 'background-height-relative-to',\n    type: t.bgRelativeTo\n  }, {\n    name: 'background-repeat',\n    type: t.bgRepeat\n  }, {\n    name: 'background-fit',\n    type: t.bgFit\n  }, {\n    name: 'background-clip',\n    type: t.bgClip\n  }, {\n    name: 'background-width',\n    type: t.bgWH\n  }, {\n    name: 'background-height',\n    type: t.bgWH\n  }, {\n    name: 'background-offset-x',\n    type: t.bgPos\n  }, {\n    name: 'background-offset-y',\n    type: t.bgPos\n  }];\n  var compound = [{\n    name: 'position',\n    type: t.position,\n    triggersBounds: diff.any\n  }, {\n    name: 'compound-sizing-wrt-labels',\n    type: t.compoundIncludeLabels,\n    triggersBounds: diff.any\n  }, {\n    name: 'min-width',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'min-width-bias-left',\n    type: t.sizeMaybePercent,\n    triggersBounds: diff.any\n  }, {\n    name: 'min-width-bias-right',\n    type: t.sizeMaybePercent,\n    triggersBounds: diff.any\n  }, {\n    name: 'min-height',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'min-height-bias-top',\n    type: t.sizeMaybePercent,\n    triggersBounds: diff.any\n  }, {\n    name: 'min-height-bias-bottom',\n    type: t.sizeMaybePercent,\n    triggersBounds: diff.any\n  }];\n  var edgeLine = [{\n    name: 'line-style',\n    type: t.lineStyle\n  }, {\n    name: 'line-color',\n    type: t.color\n  }, {\n    name: 'line-fill',\n    type: t.fill\n  }, {\n    name: 'line-cap',\n    type: t.lineCap\n  }, {\n    name: 'line-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'line-dash-pattern',\n    type: t.numbers\n  }, {\n    name: 'line-dash-offset',\n    type: t.number\n  }, {\n    name: 'line-outline-width',\n    type: t.size\n  }, {\n    name: 'line-outline-color',\n    type: t.color\n  }, {\n    name: 'line-gradient-stop-colors',\n    type: t.colors\n  }, {\n    name: 'line-gradient-stop-positions',\n    type: t.percentages\n  }, {\n    name: 'curve-style',\n    type: t.curveStyle,\n    triggersBounds: diff.any,\n    triggersBoundsOfParallelEdges: function triggersBoundsOfParallelEdges(fromValue, toValue) {\n      if (fromValue === toValue) {\n        return false;\n      } // must have diff\n\n      return fromValue === 'bezier' ||\n      // remove from bundle\n      toValue === 'bezier'; // add to bundle\n    }\n  }, {\n    name: 'haystack-radius',\n    type: t.zeroOneNumber,\n    triggersBounds: diff.any\n  }, {\n    name: 'source-endpoint',\n    type: t.edgeEndpoint,\n    triggersBounds: diff.any\n  }, {\n    name: 'target-endpoint',\n    type: t.edgeEndpoint,\n    triggersBounds: diff.any\n  }, {\n    name: 'control-point-step-size',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'control-point-distances',\n    type: t.bidirectionalSizes,\n    triggersBounds: diff.any\n  }, {\n    name: 'control-point-weights',\n    type: t.numbers,\n    triggersBounds: diff.any\n  }, {\n    name: 'segment-distances',\n    type: t.bidirectionalSizes,\n    triggersBounds: diff.any\n  }, {\n    name: 'segment-weights',\n    type: t.numbers,\n    triggersBounds: diff.any\n  }, {\n    name: 'segment-radii',\n    type: t.numbers,\n    triggersBounds: diff.any\n  }, {\n    name: 'radius-type',\n    type: t.radiusType,\n    triggersBounds: diff.any\n  }, {\n    name: 'taxi-turn',\n    type: t.bidirectionalSizeMaybePercent,\n    triggersBounds: diff.any\n  }, {\n    name: 'taxi-turn-min-distance',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'taxi-direction',\n    type: t.axisDirection,\n    triggersBounds: diff.any\n  }, {\n    name: 'taxi-radius',\n    type: t.number,\n    triggersBounds: diff.any\n  }, {\n    name: 'edge-distances',\n    type: t.edgeDistances,\n    triggersBounds: diff.any\n  }, {\n    name: 'arrow-scale',\n    type: t.positiveNumber,\n    triggersBounds: diff.any\n  }, {\n    name: 'loop-direction',\n    type: t.angle,\n    triggersBounds: diff.any\n  }, {\n    name: 'loop-sweep',\n    type: t.angle,\n    triggersBounds: diff.any\n  }, {\n    name: 'source-distance-from-node',\n    type: t.size,\n    triggersBounds: diff.any\n  }, {\n    name: 'target-distance-from-node',\n    type: t.size,\n    triggersBounds: diff.any\n  }];\n  var ghost = [{\n    name: 'ghost',\n    type: t.bool,\n    triggersBounds: diff.any\n  }, {\n    name: 'ghost-offset-x',\n    type: t.bidirectionalSize,\n    triggersBounds: diff.any\n  }, {\n    name: 'ghost-offset-y',\n    type: t.bidirectionalSize,\n    triggersBounds: diff.any\n  }, {\n    name: 'ghost-opacity',\n    type: t.zeroOneNumber\n  }];\n  var core = [{\n    name: 'selection-box-color',\n    type: t.color\n  }, {\n    name: 'selection-box-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'selection-box-border-color',\n    type: t.color\n  }, {\n    name: 'selection-box-border-width',\n    type: t.size\n  }, {\n    name: 'active-bg-color',\n    type: t.color\n  }, {\n    name: 'active-bg-opacity',\n    type: t.zeroOneNumber\n  }, {\n    name: 'active-bg-size',\n    type: t.size\n  }, {\n    name: 'outside-texture-bg-color',\n    type: t.color\n  }, {\n    name: 'outside-texture-bg-opacity',\n    type: t.zeroOneNumber\n  }];\n\n  // pie backgrounds for nodes\n  var pie = [];\n  styfn$2.pieBackgroundN = 16; // because the pie properties are numbered, give access to a constant N (for renderer use)\n  pie.push({\n    name: 'pie-size',\n    type: t.sizeMaybePercent\n  });\n  pie.push({\n    name: 'pie-hole',\n    type: t.sizeMaybePercent\n  });\n  pie.push({\n    name: 'pie-start-angle',\n    type: t.angle\n  });\n  for (var i = 1; i <= styfn$2.pieBackgroundN; i++) {\n    pie.push({\n      name: 'pie-' + i + '-background-color',\n      type: t.color\n    });\n    pie.push({\n      name: 'pie-' + i + '-background-size',\n      type: t.percent\n    });\n    pie.push({\n      name: 'pie-' + i + '-background-opacity',\n      type: t.zeroOneNumber\n    });\n  }\n\n  // stripe backgrounds for nodes\n  var stripe = [];\n  styfn$2.stripeBackgroundN = 16; // because the stripe properties are numbered, give access to a constant N (for renderer use)\n  stripe.push({\n    name: 'stripe-size',\n    type: t.sizeMaybePercent\n  });\n  stripe.push({\n    name: 'stripe-direction',\n    type: t.axisDirectionPrimary\n  });\n  for (var _i = 1; _i <= styfn$2.stripeBackgroundN; _i++) {\n    stripe.push({\n      name: 'stripe-' + _i + '-background-color',\n      type: t.color\n    });\n    stripe.push({\n      name: 'stripe-' + _i + '-background-size',\n      type: t.percent\n    });\n    stripe.push({\n      name: 'stripe-' + _i + '-background-opacity',\n      type: t.zeroOneNumber\n    });\n  }\n\n  // edge arrows\n  var edgeArrow = [];\n  var arrowPrefixes = styfn$2.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target'];\n  [{\n    name: 'arrow-shape',\n    type: t.arrowShape,\n    triggersBounds: diff.any\n  }, {\n    name: 'arrow-color',\n    type: t.color\n  }, {\n    name: 'arrow-fill',\n    type: t.arrowFill\n  }, {\n    name: 'arrow-width',\n    type: t.arrowWidth\n  }].forEach(function (prop) {\n    arrowPrefixes.forEach(function (prefix) {\n      var name = prefix + '-' + prop.name;\n      var type = prop.type,\n        triggersBounds = prop.triggersBounds;\n      edgeArrow.push({\n        name: name,\n        type: type,\n        triggersBounds: triggersBounds\n      });\n    });\n  }, {});\n  var props = styfn$2.properties = [].concat(behavior, transition, visibility, overlay, underlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, nodeOutline, backgroundImage, pie, stripe, compound, edgeLine, edgeArrow, core);\n  var propGroups = styfn$2.propertyGroups = {\n    // common to all eles\n    behavior: behavior,\n    transition: transition,\n    visibility: visibility,\n    overlay: overlay,\n    underlay: underlay,\n    ghost: ghost,\n    // labels\n    commonLabel: commonLabel,\n    labelDimensions: labelDimensions,\n    mainLabel: mainLabel,\n    sourceLabel: sourceLabel,\n    targetLabel: targetLabel,\n    // node props\n    nodeBody: nodeBody,\n    nodeBorder: nodeBorder,\n    nodeOutline: nodeOutline,\n    backgroundImage: backgroundImage,\n    pie: pie,\n    stripe: stripe,\n    compound: compound,\n    // edge props\n    edgeLine: edgeLine,\n    edgeArrow: edgeArrow,\n    core: core\n  };\n  var propGroupNames = styfn$2.propertyGroupNames = {};\n  var propGroupKeys = styfn$2.propertyGroupKeys = Object.keys(propGroups);\n  propGroupKeys.forEach(function (key) {\n    propGroupNames[key] = propGroups[key].map(function (prop) {\n      return prop.name;\n    });\n    propGroups[key].forEach(function (prop) {\n      return prop.groupKey = key;\n    });\n  });\n\n  // define aliases\n  var aliases = styfn$2.aliases = [{\n    name: 'content',\n    pointsTo: 'label'\n  }, {\n    name: 'control-point-distance',\n    pointsTo: 'control-point-distances'\n  }, {\n    name: 'control-point-weight',\n    pointsTo: 'control-point-weights'\n  }, {\n    name: 'segment-distance',\n    pointsTo: 'segment-distances'\n  }, {\n    name: 'segment-weight',\n    pointsTo: 'segment-weights'\n  }, {\n    name: 'segment-radius',\n    pointsTo: 'segment-radii'\n  }, {\n    name: 'edge-text-rotation',\n    pointsTo: 'text-rotation'\n  }, {\n    name: 'padding-left',\n    pointsTo: 'padding'\n  }, {\n    name: 'padding-right',\n    pointsTo: 'padding'\n  }, {\n    name: 'padding-top',\n    pointsTo: 'padding'\n  }, {\n    name: 'padding-bottom',\n    pointsTo: 'padding'\n  }];\n\n  // list of property names\n  styfn$2.propertyNames = props.map(function (p) {\n    return p.name;\n  });\n\n  // allow access of properties by name ( e.g. style.properties.height )\n  for (var _i2 = 0; _i2 < props.length; _i2++) {\n    var prop = props[_i2];\n    props[prop.name] = prop; // allow lookup by name\n  }\n\n  // map aliases\n  for (var _i3 = 0; _i3 < aliases.length; _i3++) {\n    var alias = aliases[_i3];\n    var pointsToProp = props[alias.pointsTo];\n    var aliasProp = {\n      name: alias.name,\n      alias: true,\n      pointsTo: pointsToProp\n    };\n\n    // add alias prop for parsing\n    props.push(aliasProp);\n    props[alias.name] = aliasProp; // allow lookup by name\n  }\n})();\nstyfn$2.getDefaultProperty = function (name) {\n  return this.getDefaultProperties()[name];\n};\nstyfn$2.getDefaultProperties = function () {\n  var _p = this._private;\n  if (_p.defaultProperties != null) {\n    return _p.defaultProperties;\n  }\n  var rawProps = extend({\n    // core props\n    'selection-box-color': '#ddd',\n    'selection-box-opacity': 0.65,\n    'selection-box-border-color': '#aaa',\n    'selection-box-border-width': 1,\n    'active-bg-color': 'black',\n    'active-bg-opacity': 0.15,\n    'active-bg-size': 30,\n    'outside-texture-bg-color': '#000',\n    'outside-texture-bg-opacity': 0.125,\n    // common node/edge props\n    'events': 'yes',\n    'text-events': 'no',\n    'text-valign': 'top',\n    'text-halign': 'center',\n    'text-justification': 'auto',\n    'line-height': 1,\n    'color': '#000',\n    'box-selection': 'contain',\n    'text-outline-color': '#000',\n    'text-outline-width': 0,\n    'text-outline-opacity': 1,\n    'text-opacity': 1,\n    'text-decoration': 'none',\n    'text-transform': 'none',\n    'text-wrap': 'none',\n    'text-overflow-wrap': 'whitespace',\n    'text-max-width': 9999,\n    'text-background-color': '#000',\n    'text-background-opacity': 0,\n    'text-background-shape': 'rectangle',\n    'text-background-padding': 0,\n    'text-border-opacity': 0,\n    'text-border-width': 0,\n    'text-border-style': 'solid',\n    'text-border-color': '#000',\n    'font-family': 'Helvetica Neue, Helvetica, sans-serif',\n    'font-style': 'normal',\n    'font-weight': 'normal',\n    'font-size': 16,\n    'min-zoomed-font-size': 0,\n    'text-rotation': 'none',\n    'source-text-rotation': 'none',\n    'target-text-rotation': 'none',\n    'visibility': 'visible',\n    'display': 'element',\n    'opacity': 1,\n    'z-compound-depth': 'auto',\n    'z-index-compare': 'auto',\n    'z-index': 0,\n    'label': '',\n    'text-margin-x': 0,\n    'text-margin-y': 0,\n    'source-label': '',\n    'source-text-offset': 0,\n    'source-text-margin-x': 0,\n    'source-text-margin-y': 0,\n    'target-label': '',\n    'target-text-offset': 0,\n    'target-text-margin-x': 0,\n    'target-text-margin-y': 0,\n    'overlay-opacity': 0,\n    'overlay-color': '#000',\n    'overlay-padding': 10,\n    'overlay-shape': 'round-rectangle',\n    'overlay-corner-radius': 'auto',\n    'underlay-opacity': 0,\n    'underlay-color': '#000',\n    'underlay-padding': 10,\n    'underlay-shape': 'round-rectangle',\n    'underlay-corner-radius': 'auto',\n    'transition-property': 'none',\n    'transition-duration': 0,\n    'transition-delay': 0,\n    'transition-timing-function': 'linear',\n    'box-select-labels': 'no',\n    // node props\n    'background-blacken': 0,\n    'background-color': '#999',\n    'background-fill': 'solid',\n    'background-opacity': 1,\n    'background-image': 'none',\n    'background-image-crossorigin': 'anonymous',\n    'background-image-opacity': 1,\n    'background-image-containment': 'inside',\n    'background-image-smoothing': 'yes',\n    'background-position-x': '50%',\n    'background-position-y': '50%',\n    'background-offset-x': 0,\n    'background-offset-y': 0,\n    'background-width-relative-to': 'include-padding',\n    'background-height-relative-to': 'include-padding',\n    'background-repeat': 'no-repeat',\n    'background-fit': 'none',\n    'background-clip': 'node',\n    'background-width': 'auto',\n    'background-height': 'auto',\n    'border-color': '#000',\n    'border-opacity': 1,\n    'border-width': 0,\n    'border-style': 'solid',\n    'border-dash-pattern': [4, 2],\n    'border-dash-offset': 0,\n    'border-cap': 'butt',\n    'border-join': 'miter',\n    'border-position': 'center',\n    'outline-color': '#999',\n    'outline-opacity': 1,\n    'outline-width': 0,\n    'outline-offset': 0,\n    'outline-style': 'solid',\n    'height': 30,\n    'width': 30,\n    'shape': 'ellipse',\n    'shape-polygon-points': '-1, -1,   1, -1,   1, 1,   -1, 1',\n    'corner-radius': 'auto',\n    'bounds-expansion': 0,\n    // node gradient\n    'background-gradient-direction': 'to-bottom',\n    'background-gradient-stop-colors': '#999',\n    'background-gradient-stop-positions': '0%',\n    // ghost props\n    'ghost': 'no',\n    'ghost-offset-y': 0,\n    'ghost-offset-x': 0,\n    'ghost-opacity': 0,\n    // compound props\n    'padding': 0,\n    'padding-relative-to': 'width',\n    'position': 'origin',\n    'compound-sizing-wrt-labels': 'include',\n    'min-width': 0,\n    'min-width-bias-left': 0,\n    'min-width-bias-right': 0,\n    'min-height': 0,\n    'min-height-bias-top': 0,\n    'min-height-bias-bottom': 0\n  }, {\n    // node pie bg\n    'pie-size': '100%',\n    'pie-hole': 0,\n    'pie-start-angle': '0deg'\n  }, [{\n    name: 'pie-{{i}}-background-color',\n    value: 'black'\n  }, {\n    name: 'pie-{{i}}-background-size',\n    value: '0%'\n  }, {\n    name: 'pie-{{i}}-background-opacity',\n    value: 1\n  }].reduce(function (css, prop) {\n    for (var i = 1; i <= styfn$2.pieBackgroundN; i++) {\n      var name = prop.name.replace('{{i}}', i);\n      var val = prop.value;\n      css[name] = val;\n    }\n    return css;\n  }, {}), {\n    // node stripes bg\n    'stripe-size': '100%',\n    'stripe-direction': 'horizontal'\n  }, [{\n    name: 'stripe-{{i}}-background-color',\n    value: 'black'\n  }, {\n    name: 'stripe-{{i}}-background-size',\n    value: '0%'\n  }, {\n    name: 'stripe-{{i}}-background-opacity',\n    value: 1\n  }].reduce(function (css, prop) {\n    for (var i = 1; i <= styfn$2.stripeBackgroundN; i++) {\n      var name = prop.name.replace('{{i}}', i);\n      var val = prop.value;\n      css[name] = val;\n    }\n    return css;\n  }, {}), {\n    // edge props\n    'line-style': 'solid',\n    'line-color': '#999',\n    'line-fill': 'solid',\n    'line-cap': 'butt',\n    'line-opacity': 1,\n    'line-outline-width': 0,\n    'line-outline-color': '#000',\n    'line-gradient-stop-colors': '#999',\n    'line-gradient-stop-positions': '0%',\n    'control-point-step-size': 40,\n    'control-point-weights': 0.5,\n    'segment-weights': 0.5,\n    'segment-distances': 20,\n    'segment-radii': 15,\n    'radius-type': 'arc-radius',\n    'taxi-turn': '50%',\n    'taxi-radius': 15,\n    'taxi-turn-min-distance': 10,\n    'taxi-direction': 'auto',\n    'edge-distances': 'intersection',\n    'curve-style': 'haystack',\n    'haystack-radius': 0,\n    'arrow-scale': 1,\n    'loop-direction': '-45deg',\n    'loop-sweep': '-90deg',\n    'source-distance-from-node': 0,\n    'target-distance-from-node': 0,\n    'source-endpoint': 'outside-to-node',\n    'target-endpoint': 'outside-to-node',\n    'line-dash-pattern': [6, 3],\n    'line-dash-offset': 0\n  }, [{\n    name: 'arrow-shape',\n    value: 'none'\n  }, {\n    name: 'arrow-color',\n    value: '#999'\n  }, {\n    name: 'arrow-fill',\n    value: 'filled'\n  }, {\n    name: 'arrow-width',\n    value: 1\n  }].reduce(function (css, prop) {\n    styfn$2.arrowPrefixes.forEach(function (prefix) {\n      var name = prefix + '-' + prop.name;\n      var val = prop.value;\n      css[name] = val;\n    });\n    return css;\n  }, {}));\n  var parsedProps = {};\n  for (var i = 0; i < this.properties.length; i++) {\n    var prop = this.properties[i];\n    if (prop.pointsTo) {\n      continue;\n    }\n    var name = prop.name;\n    var val = rawProps[name];\n    var parsedProp = this.parse(name, val);\n    parsedProps[name] = parsedProp;\n  }\n  _p.defaultProperties = parsedProps;\n  return _p.defaultProperties;\n};\nstyfn$2.addDefaultStylesheet = function () {\n  this.selector(':parent').css({\n    'shape': 'rectangle',\n    'padding': 10,\n    'background-color': '#eee',\n    'border-color': '#ccc',\n    'border-width': 1\n  }).selector('edge').css({\n    'width': 3\n  }).selector(':loop').css({\n    'curve-style': 'bezier'\n  }).selector('edge:compound').css({\n    'curve-style': 'bezier',\n    'source-endpoint': 'outside-to-line',\n    'target-endpoint': 'outside-to-line'\n  }).selector(':selected').css({\n    'background-color': '#0169D9',\n    'line-color': '#0169D9',\n    'source-arrow-color': '#0169D9',\n    'target-arrow-color': '#0169D9',\n    'mid-source-arrow-color': '#0169D9',\n    'mid-target-arrow-color': '#0169D9'\n  }).selector(':parent:selected').css({\n    'background-color': '#CCE1F9',\n    'border-color': '#aec8e5'\n  }).selector(':active').css({\n    'overlay-color': 'black',\n    'overlay-padding': 10,\n    'overlay-opacity': 0.25\n  });\n  this.defaultLength = this.length;\n};\n\nvar styfn$1 = {};\n\n// a caching layer for property parsing\nstyfn$1.parse = function (name, value, propIsBypass, propIsFlat) {\n  var self = this;\n\n  // function values can't be cached in all cases, and there isn't much benefit of caching them anyway\n  if (fn$6(value)) {\n    return self.parseImplWarn(name, value, propIsBypass, propIsFlat);\n  }\n  var flatKey = propIsFlat === 'mapping' || propIsFlat === true || propIsFlat === false || propIsFlat == null ? 'dontcare' : propIsFlat;\n  var bypassKey = propIsBypass ? 't' : 'f';\n  var valueKey = '' + value;\n  var argHash = hashStrings(name, valueKey, bypassKey, flatKey);\n  var propCache = self.propCache = self.propCache || [];\n  var ret;\n  if (!(ret = propCache[argHash])) {\n    ret = propCache[argHash] = self.parseImplWarn(name, value, propIsBypass, propIsFlat);\n  }\n\n  // - bypasses can't be shared b/c the value can be changed by animations or otherwise overridden\n  // - mappings can't be shared b/c mappings are per-element\n  if (propIsBypass || propIsFlat === 'mapping') {\n    // need a copy since props are mutated later in their lifecycles\n    ret = copy(ret);\n    if (ret) {\n      ret.value = copy(ret.value); // because it could be an array, e.g. colour\n    }\n  }\n  return ret;\n};\nstyfn$1.parseImplWarn = function (name, value, propIsBypass, propIsFlat) {\n  var prop = this.parseImpl(name, value, propIsBypass, propIsFlat);\n  if (!prop && value != null) {\n    warn(\"The style property `\".concat(name, \": \").concat(value, \"` is invalid\"));\n  }\n  if (prop && (prop.name === 'width' || prop.name === 'height') && value === 'label') {\n    warn('The style value of `label` is deprecated for `' + prop.name + '`');\n  }\n  return prop;\n};\n\n// parse a property; return null on invalid; return parsed property otherwise\n// fields :\n// - name : the name of the property\n// - value : the parsed, native-typed value of the property\n// - strValue : a string value that represents the property value in valid css\n// - bypass : true iff the property is a bypass property\nstyfn$1.parseImpl = function (name, value, propIsBypass, propIsFlat) {\n  var self = this;\n  name = camel2dash(name); // make sure the property name is in dash form (e.g. 'property-name' not 'propertyName')\n\n  var property = self.properties[name];\n  var passedValue = value;\n  var types = self.types;\n  if (!property) {\n    return null;\n  } // return null on property of unknown name\n  if (value === undefined) {\n    return null;\n  } // can't assign undefined\n\n  // the property may be an alias\n  if (property.alias) {\n    property = property.pointsTo;\n    name = property.name;\n  }\n  var valueIsString = string(value);\n  if (valueIsString) {\n    // trim the value to make parsing easier\n    value = value.trim();\n  }\n  var type = property.type;\n  if (!type) {\n    return null;\n  } // no type, no luck\n\n  // check if bypass is null or empty string (i.e. indication to delete bypass property)\n  if (propIsBypass && (value === '' || value === null)) {\n    return {\n      name: name,\n      value: value,\n      bypass: true,\n      deleteBypass: true\n    };\n  }\n\n  // check if value is a function used as a mapper\n  if (fn$6(value)) {\n    return {\n      name: name,\n      value: value,\n      strValue: 'fn',\n      mapped: types.fn,\n      bypass: propIsBypass\n    };\n  }\n\n  // check if value is mapped\n  var data, mapData;\n  if (!valueIsString || propIsFlat || value.length < 7 || value[1] !== 'a') ; else if (value.length >= 7 && value[0] === 'd' && (data = new RegExp(types.data.regex).exec(value))) {\n    if (propIsBypass) {\n      return false;\n    } // mappers not allowed in bypass\n\n    var mapped = types.data;\n    return {\n      name: name,\n      value: data,\n      strValue: '' + value,\n      mapped: mapped,\n      field: data[1],\n      bypass: propIsBypass\n    };\n  } else if (value.length >= 10 && value[0] === 'm' && (mapData = new RegExp(types.mapData.regex).exec(value))) {\n    if (propIsBypass) {\n      return false;\n    } // mappers not allowed in bypass\n    if (type.multiple) {\n      return false;\n    } // impossible to map to num\n\n    var _mapped = types.mapData;\n\n    // we can map only if the type is a colour or a number\n    if (!(type.color || type.number)) {\n      return false;\n    }\n    var valueMin = this.parse(name, mapData[4]); // parse to validate\n    if (!valueMin || valueMin.mapped) {\n      return false;\n    } // can't be invalid or mapped\n\n    var valueMax = this.parse(name, mapData[5]); // parse to validate\n    if (!valueMax || valueMax.mapped) {\n      return false;\n    } // can't be invalid or mapped\n\n    // check if valueMin and valueMax are the same\n    if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) {\n      warn('`' + name + ': ' + value + '` is not a valid mapper because the output range is zero; converting to `' + name + ': ' + valueMin.strValue + '`');\n      return this.parse(name, valueMin.strValue); // can't make much of a mapper without a range\n    } else if (type.color) {\n      var c1 = valueMin.value;\n      var c2 = valueMax.value;\n      var same = c1[0] === c2[0] // red\n      && c1[1] === c2[1] // green\n      && c1[2] === c2[2] // blue\n      && (\n      // optional alpha\n      c1[3] === c2[3] // same alpha outright\n      || (c1[3] == null || c1[3] === 1 // full opacity for colour 1?\n      ) && (c2[3] == null || c2[3] === 1) // full opacity for colour 2?\n      );\n      if (same) {\n        return false;\n      } // can't make a mapper without a range\n    }\n    return {\n      name: name,\n      value: mapData,\n      strValue: '' + value,\n      mapped: _mapped,\n      field: mapData[1],\n      fieldMin: parseFloat(mapData[2]),\n      // min & max are numeric\n      fieldMax: parseFloat(mapData[3]),\n      valueMin: valueMin.value,\n      valueMax: valueMax.value,\n      bypass: propIsBypass\n    };\n  }\n  if (type.multiple && propIsFlat !== 'multiple') {\n    var vals;\n    if (valueIsString) {\n      vals = value.split(/\\s+/);\n    } else if (array(value)) {\n      vals = value;\n    } else {\n      vals = [value];\n    }\n    if (type.evenMultiple && vals.length % 2 !== 0) {\n      return null;\n    }\n    var valArr = [];\n    var unitsArr = [];\n    var pfValArr = [];\n    var strVal = '';\n    var hasEnum = false;\n    for (var i = 0; i < vals.length; i++) {\n      var p = self.parse(name, vals[i], propIsBypass, 'multiple');\n      hasEnum = hasEnum || string(p.value);\n      valArr.push(p.value);\n      pfValArr.push(p.pfValue != null ? p.pfValue : p.value);\n      unitsArr.push(p.units);\n      strVal += (i > 0 ? ' ' : '') + p.strValue;\n    }\n    if (type.validate && !type.validate(valArr, unitsArr)) {\n      return null;\n    }\n    if (type.singleEnum && hasEnum) {\n      if (valArr.length === 1 && string(valArr[0])) {\n        return {\n          name: name,\n          value: valArr[0],\n          strValue: valArr[0],\n          bypass: propIsBypass\n        };\n      } else {\n        return null;\n      }\n    }\n    return {\n      name: name,\n      value: valArr,\n      pfValue: pfValArr,\n      strValue: strVal,\n      bypass: propIsBypass,\n      units: unitsArr\n    };\n  }\n\n  // several types also allow enums\n  var checkEnums = function checkEnums() {\n    for (var _i = 0; _i < type.enums.length; _i++) {\n      var en = type.enums[_i];\n      if (en === value) {\n        return {\n          name: name,\n          value: value,\n          strValue: '' + value,\n          bypass: propIsBypass\n        };\n      }\n    }\n    return null;\n  };\n\n  // check the type and return the appropriate object\n  if (type.number) {\n    var units;\n    var implicitUnits = 'px'; // not set => px\n\n    if (type.units) {\n      // use specified units if set\n      units = type.units;\n    }\n    if (type.implicitUnits) {\n      implicitUnits = type.implicitUnits;\n    }\n    if (!type.unitless) {\n      if (valueIsString) {\n        var unitsRegex = 'px|em' + (type.allowPercent ? '|\\\\%' : '');\n        if (units) {\n          unitsRegex = units;\n        } // only allow explicit units if so set\n        var match = value.match('^(' + number + ')(' + unitsRegex + ')?' + '$');\n        if (match) {\n          value = match[1];\n          units = match[2] || implicitUnits;\n        }\n      } else if (!units || type.implicitUnits) {\n        units = implicitUnits; // implicitly px if unspecified\n      }\n    }\n    value = parseFloat(value);\n\n    // if not a number and enums not allowed, then the value is invalid\n    if (isNaN(value) && type.enums === undefined) {\n      return null;\n    }\n\n    // check if this number type also accepts special keywords in place of numbers\n    // (i.e. `left`, `auto`, etc)\n    if (isNaN(value) && type.enums !== undefined) {\n      value = passedValue;\n      return checkEnums();\n    }\n\n    // check if value must be an integer\n    if (type.integer && !integer(value)) {\n      return null;\n    }\n\n    // check value is within range\n    if (type.min !== undefined && (value < type.min || type.strictMin && value === type.min) || type.max !== undefined && (value > type.max || type.strictMax && value === type.max)) {\n      return null;\n    }\n    var ret = {\n      name: name,\n      value: value,\n      strValue: '' + value + (units ? units : ''),\n      units: units,\n      bypass: propIsBypass\n    };\n\n    // normalise value in pixels\n    if (type.unitless || units !== 'px' && units !== 'em') {\n      ret.pfValue = value;\n    } else {\n      ret.pfValue = units === 'px' || !units ? value : this.getEmSizeInPixels() * value;\n    }\n\n    // normalise value in ms\n    if (units === 'ms' || units === 's') {\n      ret.pfValue = units === 'ms' ? value : 1000 * value;\n    }\n\n    // normalise value in rad\n    if (units === 'deg' || units === 'rad') {\n      ret.pfValue = units === 'rad' ? value : deg2rad(value);\n    }\n\n    // normalize value in %\n    if (units === '%') {\n      ret.pfValue = value / 100;\n    }\n    return ret;\n  } else if (type.propList) {\n    var props = [];\n    var propsStr = '' + value;\n    if (propsStr === 'none') ; else {\n      // go over each prop\n\n      var propsSplit = propsStr.split(/\\s*,\\s*|\\s+/);\n      for (var _i2 = 0; _i2 < propsSplit.length; _i2++) {\n        var propName = propsSplit[_i2].trim();\n        if (self.properties[propName]) {\n          props.push(propName);\n        } else {\n          warn('`' + propName + '` is not a valid property name');\n        }\n      }\n      if (props.length === 0) {\n        return null;\n      }\n    }\n    return {\n      name: name,\n      value: props,\n      strValue: props.length === 0 ? 'none' : props.join(' '),\n      bypass: propIsBypass\n    };\n  } else if (type.color) {\n    var tuple = color2tuple(value);\n    if (!tuple) {\n      return null;\n    }\n    return {\n      name: name,\n      value: tuple,\n      pfValue: tuple,\n      strValue: 'rgb(' + tuple[0] + ',' + tuple[1] + ',' + tuple[2] + ')',\n      // n.b. no spaces b/c of multiple support\n      bypass: propIsBypass\n    };\n  } else if (type.regex || type.regexes) {\n    // first check enums\n    if (type.enums) {\n      var enumProp = checkEnums();\n      if (enumProp) {\n        return enumProp;\n      }\n    }\n    var regexes = type.regexes ? type.regexes : [type.regex];\n    for (var _i3 = 0; _i3 < regexes.length; _i3++) {\n      var regex = new RegExp(regexes[_i3]); // make a regex from the type string\n      var m = regex.exec(value);\n      if (m) {\n        // regex matches\n        return {\n          name: name,\n          value: type.singleRegexMatchValue ? m[1] : m,\n          strValue: '' + value,\n          bypass: propIsBypass\n        };\n      }\n    }\n    return null; // didn't match any\n  } else if (type.string) {\n    // just return\n    return {\n      name: name,\n      value: '' + value,\n      strValue: '' + value,\n      bypass: propIsBypass\n    };\n  } else if (type.enums) {\n    // check enums last because it's a combo type in others\n    return checkEnums();\n  } else {\n    return null; // not a type we can handle\n  }\n};\n\nvar _Style = function Style(cy) {\n  if (!(this instanceof _Style)) {\n    return new _Style(cy);\n  }\n  if (!core(cy)) {\n    error('A style must have a core reference');\n    return;\n  }\n  this._private = {\n    cy: cy,\n    coreStyle: {}\n  };\n  this.length = 0;\n  this.resetToDefault();\n};\nvar styfn = _Style.prototype;\nstyfn.instanceString = function () {\n  return 'style';\n};\n\n// remove all contexts\nstyfn.clear = function () {\n  var _p = this._private;\n  var cy = _p.cy;\n  var eles = cy.elements();\n  for (var i = 0; i < this.length; i++) {\n    this[i] = undefined;\n  }\n  this.length = 0;\n  _p.contextStyles = {};\n  _p.propDiffs = {};\n  this.cleanElements(eles, true);\n  eles.forEach(function (ele) {\n    var ele_p = ele[0]._private;\n    ele_p.styleDirty = true;\n    ele_p.appliedInitStyle = false;\n  });\n  return this; // chaining\n};\nstyfn.resetToDefault = function () {\n  this.clear();\n  this.addDefaultStylesheet();\n  return this;\n};\n\n// builds a style object for the 'core' selector\nstyfn.core = function (propName) {\n  return this._private.coreStyle[propName] || this.getDefaultProperty(propName);\n};\n\n// create a new context from the specified selector string and switch to that context\nstyfn.selector = function (selectorStr) {\n  // 'core' is a special case and does not need a selector\n  var selector = selectorStr === 'core' ? null : new Selector(selectorStr);\n  var i = this.length++; // new context means new index\n  this[i] = {\n    selector: selector,\n    properties: [],\n    mappedProperties: [],\n    index: i\n  };\n  return this; // chaining\n};\n\n// add one or many css rules to the current context\nstyfn.css = function () {\n  var self = this;\n  var args = arguments;\n  if (args.length === 1) {\n    var map = args[0];\n    for (var i = 0; i < self.properties.length; i++) {\n      var prop = self.properties[i];\n      var mapVal = map[prop.name];\n      if (mapVal === undefined) {\n        mapVal = map[dash2camel(prop.name)];\n      }\n      if (mapVal !== undefined) {\n        this.cssRule(prop.name, mapVal);\n      }\n    }\n  } else if (args.length === 2) {\n    this.cssRule(args[0], args[1]);\n  }\n\n  // do nothing if args are invalid\n\n  return this; // chaining\n};\nstyfn.style = styfn.css;\n\n// add a single css rule to the current context\nstyfn.cssRule = function (name, value) {\n  // name-value pair\n  var property = this.parse(name, value);\n\n  // add property to current context if valid\n  if (property) {\n    var i = this.length - 1;\n    this[i].properties.push(property);\n    this[i].properties[property.name] = property; // allow access by name as well\n\n    if (property.name.match(/pie-(\\d+)-background-size/) && property.value) {\n      this._private.hasPie = true;\n    }\n    if (property.name.match(/stripe-(\\d+)-background-size/) && property.value) {\n      this._private.hasStripe = true;\n    }\n    if (property.mapped) {\n      this[i].mappedProperties.push(property);\n    }\n\n    // add to core style if necessary\n    var currentSelectorIsCore = !this[i].selector;\n    if (currentSelectorIsCore) {\n      this._private.coreStyle[property.name] = property;\n    }\n  }\n  return this; // chaining\n};\nstyfn.append = function (style) {\n  if (stylesheet(style)) {\n    style.appendToStyle(this);\n  } else if (array(style)) {\n    this.appendFromJson(style);\n  } else if (string(style)) {\n    this.appendFromString(style);\n  } // you probably wouldn't want to append a Style, since you'd duplicate the default parts\n\n  return this;\n};\n\n// static function\n_Style.fromJson = function (cy, json) {\n  var style = new _Style(cy);\n  style.fromJson(json);\n  return style;\n};\n_Style.fromString = function (cy, string) {\n  return new _Style(cy).fromString(string);\n};\n[styfn$8, styfn$7, styfn$6, styfn$5, styfn$4, styfn$3, styfn$2, styfn$1].forEach(function (props) {\n  extend(styfn, props);\n});\n_Style.types = styfn.types;\n_Style.properties = styfn.properties;\n_Style.propertyGroups = styfn.propertyGroups;\n_Style.propertyGroupNames = styfn.propertyGroupNames;\n_Style.propertyGroupKeys = styfn.propertyGroupKeys;\n\nvar corefn$2 = {\n  style: function style(newStyle) {\n    if (newStyle) {\n      var s = this.setStyle(newStyle);\n      s.update();\n    }\n    return this._private.style;\n  },\n  setStyle: function setStyle(style) {\n    var _p = this._private;\n    if (stylesheet(style)) {\n      _p.style = style.generateStyle(this);\n    } else if (array(style)) {\n      _p.style = _Style.fromJson(this, style);\n    } else if (string(style)) {\n      _p.style = _Style.fromString(this, style);\n    } else {\n      _p.style = _Style(this);\n    }\n    return _p.style;\n  },\n  // e.g. cy.data() changed => recalc ele mappers\n  updateStyle: function updateStyle() {\n    this.mutableElements().updateStyle(); // just send to all eles\n  }\n};\n\nvar defaultSelectionType = 'single';\nvar corefn$1 = {\n  autolock: function autolock(bool) {\n    if (bool !== undefined) {\n      this._private.autolock = bool ? true : false;\n    } else {\n      return this._private.autolock;\n    }\n    return this; // chaining\n  },\n  autoungrabify: function autoungrabify(bool) {\n    if (bool !== undefined) {\n      this._private.autoungrabify = bool ? true : false;\n    } else {\n      return this._private.autoungrabify;\n    }\n    return this; // chaining\n  },\n  autounselectify: function autounselectify(bool) {\n    if (bool !== undefined) {\n      this._private.autounselectify = bool ? true : false;\n    } else {\n      return this._private.autounselectify;\n    }\n    return this; // chaining\n  },\n  selectionType: function selectionType(selType) {\n    var _p = this._private;\n    if (_p.selectionType == null) {\n      _p.selectionType = defaultSelectionType;\n    }\n    if (selType !== undefined) {\n      if (selType === 'additive' || selType === 'single') {\n        _p.selectionType = selType;\n      }\n    } else {\n      return _p.selectionType;\n    }\n    return this;\n  },\n  panningEnabled: function panningEnabled(bool) {\n    if (bool !== undefined) {\n      this._private.panningEnabled = bool ? true : false;\n    } else {\n      return this._private.panningEnabled;\n    }\n    return this; // chaining\n  },\n  userPanningEnabled: function userPanningEnabled(bool) {\n    if (bool !== undefined) {\n      this._private.userPanningEnabled = bool ? true : false;\n    } else {\n      return this._private.userPanningEnabled;\n    }\n    return this; // chaining\n  },\n  zoomingEnabled: function zoomingEnabled(bool) {\n    if (bool !== undefined) {\n      this._private.zoomingEnabled = bool ? true : false;\n    } else {\n      return this._private.zoomingEnabled;\n    }\n    return this; // chaining\n  },\n  userZoomingEnabled: function userZoomingEnabled(bool) {\n    if (bool !== undefined) {\n      this._private.userZoomingEnabled = bool ? true : false;\n    } else {\n      return this._private.userZoomingEnabled;\n    }\n    return this; // chaining\n  },\n  boxSelectionEnabled: function boxSelectionEnabled(bool) {\n    if (bool !== undefined) {\n      this._private.boxSelectionEnabled = bool ? true : false;\n    } else {\n      return this._private.boxSelectionEnabled;\n    }\n    return this; // chaining\n  },\n  pan: function pan() {\n    var args = arguments;\n    var pan = this._private.pan;\n    var dim, val, dims, x, y;\n    switch (args.length) {\n      case 0:\n        // .pan()\n        return pan;\n      case 1:\n        if (string(args[0])) {\n          // .pan('x')\n          dim = args[0];\n          return pan[dim];\n        } else if (plainObject(args[0])) {\n          // .pan({ x: 0, y: 100 })\n          if (!this._private.panningEnabled) {\n            return this;\n          }\n          dims = args[0];\n          x = dims.x;\n          y = dims.y;\n          if (number$1(x)) {\n            pan.x = x;\n          }\n          if (number$1(y)) {\n            pan.y = y;\n          }\n          this.emit('pan viewport');\n        }\n        break;\n      case 2:\n        // .pan('x', 100)\n        if (!this._private.panningEnabled) {\n          return this;\n        }\n        dim = args[0];\n        val = args[1];\n        if ((dim === 'x' || dim === 'y') && number$1(val)) {\n          pan[dim] = val;\n        }\n        this.emit('pan viewport');\n        break;\n      // invalid\n    }\n    this.notify('viewport');\n    return this; // chaining\n  },\n  panBy: function panBy(arg0, arg1) {\n    var args = arguments;\n    var pan = this._private.pan;\n    var dim, val, dims, x, y;\n    if (!this._private.panningEnabled) {\n      return this;\n    }\n    switch (args.length) {\n      case 1:\n        if (plainObject(arg0)) {\n          // .panBy({ x: 0, y: 100 })\n          dims = args[0];\n          x = dims.x;\n          y = dims.y;\n          if (number$1(x)) {\n            pan.x += x;\n          }\n          if (number$1(y)) {\n            pan.y += y;\n          }\n          this.emit('pan viewport');\n        }\n        break;\n      case 2:\n        // .panBy('x', 100)\n        dim = arg0;\n        val = arg1;\n        if ((dim === 'x' || dim === 'y') && number$1(val)) {\n          pan[dim] += val;\n        }\n        this.emit('pan viewport');\n        break;\n      // invalid\n    }\n    this.notify('viewport');\n    return this; // chaining\n  },\n  gc: function gc() {\n    this.notify('gc');\n  },\n  fit: function fit(elements, padding) {\n    var viewportState = this.getFitViewport(elements, padding);\n    if (viewportState) {\n      var _p = this._private;\n      _p.zoom = viewportState.zoom;\n      _p.pan = viewportState.pan;\n      this.emit('pan zoom viewport');\n      this.notify('viewport');\n    }\n    return this; // chaining\n  },\n  getFitViewport: function getFitViewport(elements, padding) {\n    if (number$1(elements) && padding === undefined) {\n      // elements is optional\n      padding = elements;\n      elements = undefined;\n    }\n    if (!this._private.panningEnabled || !this._private.zoomingEnabled) {\n      return;\n    }\n    var bb;\n    if (string(elements)) {\n      var sel = elements;\n      elements = this.$(sel);\n    } else if (boundingBox(elements)) {\n      // assume bb\n      var bbe = elements;\n      bb = {\n        x1: bbe.x1,\n        y1: bbe.y1,\n        x2: bbe.x2,\n        y2: bbe.y2\n      };\n      bb.w = bb.x2 - bb.x1;\n      bb.h = bb.y2 - bb.y1;\n    } else if (!elementOrCollection(elements)) {\n      elements = this.mutableElements();\n    }\n    if (elementOrCollection(elements) && elements.empty()) {\n      return;\n    } // can't fit to nothing\n\n    bb = bb || elements.boundingBox();\n    var w = this.width();\n    var h = this.height();\n    var zoom;\n    padding = number$1(padding) ? padding : 0;\n    if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) {\n      zoom = Math.min((w - 2 * padding) / bb.w, (h - 2 * padding) / bb.h);\n\n      // crop zoom\n      zoom = zoom > this._private.maxZoom ? this._private.maxZoom : zoom;\n      zoom = zoom < this._private.minZoom ? this._private.minZoom : zoom;\n      var pan = {\n        // now pan to middle\n        x: (w - zoom * (bb.x1 + bb.x2)) / 2,\n        y: (h - zoom * (bb.y1 + bb.y2)) / 2\n      };\n      return {\n        zoom: zoom,\n        pan: pan\n      };\n    }\n    return;\n  },\n  zoomRange: function zoomRange(min, max) {\n    var _p = this._private;\n    if (max == null) {\n      var opts = min;\n      min = opts.min;\n      max = opts.max;\n    }\n    if (number$1(min) && number$1(max) && min <= max) {\n      _p.minZoom = min;\n      _p.maxZoom = max;\n    } else if (number$1(min) && max === undefined && min <= _p.maxZoom) {\n      _p.minZoom = min;\n    } else if (number$1(max) && min === undefined && max >= _p.minZoom) {\n      _p.maxZoom = max;\n    }\n    return this;\n  },\n  minZoom: function minZoom(zoom) {\n    if (zoom === undefined) {\n      return this._private.minZoom;\n    } else {\n      return this.zoomRange({\n        min: zoom\n      });\n    }\n  },\n  maxZoom: function maxZoom(zoom) {\n    if (zoom === undefined) {\n      return this._private.maxZoom;\n    } else {\n      return this.zoomRange({\n        max: zoom\n      });\n    }\n  },\n  getZoomedViewport: function getZoomedViewport(params) {\n    var _p = this._private;\n    var currentPan = _p.pan;\n    var currentZoom = _p.zoom;\n    var pos; // in rendered px\n    var zoom;\n    var bail = false;\n    if (!_p.zoomingEnabled) {\n      // zooming disabled\n      bail = true;\n    }\n    if (number$1(params)) {\n      // then set the zoom\n      zoom = params;\n    } else if (plainObject(params)) {\n      // then zoom about a point\n      zoom = params.level;\n      if (params.position != null) {\n        pos = modelToRenderedPosition$1(params.position, currentZoom, currentPan);\n      } else if (params.renderedPosition != null) {\n        pos = params.renderedPosition;\n      }\n      if (pos != null && !_p.panningEnabled) {\n        // panning disabled\n        bail = true;\n      }\n    }\n\n    // crop zoom\n    zoom = zoom > _p.maxZoom ? _p.maxZoom : zoom;\n    zoom = zoom < _p.minZoom ? _p.minZoom : zoom;\n\n    // can't zoom with invalid params\n    if (bail || !number$1(zoom) || zoom === currentZoom || pos != null && (!number$1(pos.x) || !number$1(pos.y))) {\n      return null;\n    }\n    if (pos != null) {\n      // set zoom about position\n      var pan1 = currentPan;\n      var zoom1 = currentZoom;\n      var zoom2 = zoom;\n      var pan2 = {\n        x: -zoom2 / zoom1 * (pos.x - pan1.x) + pos.x,\n        y: -zoom2 / zoom1 * (pos.y - pan1.y) + pos.y\n      };\n      return {\n        zoomed: true,\n        panned: true,\n        zoom: zoom2,\n        pan: pan2\n      };\n    } else {\n      // just set the zoom\n      return {\n        zoomed: true,\n        panned: false,\n        zoom: zoom,\n        pan: currentPan\n      };\n    }\n  },\n  zoom: function zoom(params) {\n    if (params === undefined) {\n      // get\n      return this._private.zoom;\n    } else {\n      // set\n      var vp = this.getZoomedViewport(params);\n      var _p = this._private;\n      if (vp == null || !vp.zoomed) {\n        return this;\n      }\n      _p.zoom = vp.zoom;\n      if (vp.panned) {\n        _p.pan.x = vp.pan.x;\n        _p.pan.y = vp.pan.y;\n      }\n      this.emit('zoom' + (vp.panned ? ' pan' : '') + ' viewport');\n      this.notify('viewport');\n      return this; // chaining\n    }\n  },\n  viewport: function viewport(opts) {\n    var _p = this._private;\n    var zoomDefd = true;\n    var panDefd = true;\n    var events = []; // to trigger\n    var zoomFailed = false;\n    var panFailed = false;\n    if (!opts) {\n      return this;\n    }\n    if (!number$1(opts.zoom)) {\n      zoomDefd = false;\n    }\n    if (!plainObject(opts.pan)) {\n      panDefd = false;\n    }\n    if (!zoomDefd && !panDefd) {\n      return this;\n    }\n    if (zoomDefd) {\n      var z = opts.zoom;\n      if (z < _p.minZoom || z > _p.maxZoom || !_p.zoomingEnabled) {\n        zoomFailed = true;\n      } else {\n        _p.zoom = z;\n        events.push('zoom');\n      }\n    }\n    if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) {\n      var p = opts.pan;\n      if (number$1(p.x)) {\n        _p.pan.x = p.x;\n        panFailed = false;\n      }\n      if (number$1(p.y)) {\n        _p.pan.y = p.y;\n        panFailed = false;\n      }\n      if (!panFailed) {\n        events.push('pan');\n      }\n    }\n    if (events.length > 0) {\n      events.push('viewport');\n      this.emit(events.join(' '));\n      this.notify('viewport');\n    }\n    return this; // chaining\n  },\n  center: function center(elements) {\n    var pan = this.getCenterPan(elements);\n    if (pan) {\n      this._private.pan = pan;\n      this.emit('pan viewport');\n      this.notify('viewport');\n    }\n    return this; // chaining\n  },\n  getCenterPan: function getCenterPan(elements, zoom) {\n    if (!this._private.panningEnabled) {\n      return;\n    }\n    if (string(elements)) {\n      var selector = elements;\n      elements = this.mutableElements().filter(selector);\n    } else if (!elementOrCollection(elements)) {\n      elements = this.mutableElements();\n    }\n    if (elements.length === 0) {\n      return;\n    } // can't centre pan to nothing\n\n    var bb = elements.boundingBox();\n    var w = this.width();\n    var h = this.height();\n    zoom = zoom === undefined ? this._private.zoom : zoom;\n    var pan = {\n      // middle\n      x: (w - zoom * (bb.x1 + bb.x2)) / 2,\n      y: (h - zoom * (bb.y1 + bb.y2)) / 2\n    };\n    return pan;\n  },\n  reset: function reset() {\n    if (!this._private.panningEnabled || !this._private.zoomingEnabled) {\n      return this;\n    }\n    this.viewport({\n      pan: {\n        x: 0,\n        y: 0\n      },\n      zoom: 1\n    });\n    return this; // chaining\n  },\n  invalidateSize: function invalidateSize() {\n    this._private.sizeCache = null;\n  },\n  size: function size() {\n    var _p = this._private;\n    var container = _p.container;\n    var cy = this;\n    return _p.sizeCache = _p.sizeCache || (container ? function () {\n      var style = cy.window().getComputedStyle(container);\n      var val = function val(name) {\n        return parseFloat(style.getPropertyValue(name));\n      };\n      return {\n        width: container.clientWidth - val('padding-left') - val('padding-right'),\n        height: container.clientHeight - val('padding-top') - val('padding-bottom')\n      };\n    }() : {\n      // fallback if no container (not 0 b/c can be used for dividing etc)\n      width: 1,\n      height: 1\n    });\n  },\n  width: function width() {\n    return this.size().width;\n  },\n  height: function height() {\n    return this.size().height;\n  },\n  extent: function extent() {\n    var pan = this._private.pan;\n    var zoom = this._private.zoom;\n    var rb = this.renderedExtent();\n    var b = {\n      x1: (rb.x1 - pan.x) / zoom,\n      x2: (rb.x2 - pan.x) / zoom,\n      y1: (rb.y1 - pan.y) / zoom,\n      y2: (rb.y2 - pan.y) / zoom\n    };\n    b.w = b.x2 - b.x1;\n    b.h = b.y2 - b.y1;\n    return b;\n  },\n  renderedExtent: function renderedExtent() {\n    var width = this.width();\n    var height = this.height();\n    return {\n      x1: 0,\n      y1: 0,\n      x2: width,\n      y2: height,\n      w: width,\n      h: height\n    };\n  },\n  multiClickDebounceTime: function multiClickDebounceTime(_int) {\n    if (_int) this._private.multiClickDebounceTime = _int;else return this._private.multiClickDebounceTime;\n    return this; // chaining\n  }\n};\n\n// aliases\ncorefn$1.centre = corefn$1.center;\n\n// backwards compatibility\ncorefn$1.autolockNodes = corefn$1.autolock;\ncorefn$1.autoungrabifyNodes = corefn$1.autoungrabify;\n\nvar fn = {\n  data: define.data({\n    field: 'data',\n    bindingEvent: 'data',\n    allowBinding: true,\n    allowSetting: true,\n    settingEvent: 'data',\n    settingTriggersEvent: true,\n    triggerFnName: 'trigger',\n    allowGetting: true,\n    updateStyle: true\n  }),\n  removeData: define.removeData({\n    field: 'data',\n    event: 'data',\n    triggerFnName: 'trigger',\n    triggerEvent: true,\n    updateStyle: true\n  }),\n  scratch: define.data({\n    field: 'scratch',\n    bindingEvent: 'scratch',\n    allowBinding: true,\n    allowSetting: true,\n    settingEvent: 'scratch',\n    settingTriggersEvent: true,\n    triggerFnName: 'trigger',\n    allowGetting: true,\n    updateStyle: true\n  }),\n  removeScratch: define.removeData({\n    field: 'scratch',\n    event: 'scratch',\n    triggerFnName: 'trigger',\n    triggerEvent: true,\n    updateStyle: true\n  })\n};\n\n// aliases\nfn.attr = fn.data;\nfn.removeAttr = fn.removeData;\n\nvar Core = function Core(opts) {\n  var cy = this;\n  opts = extend({}, opts);\n  var container = opts.container;\n\n  // allow for passing a wrapped jquery object\n  // e.g. cytoscape({ container: $('#cy') })\n  if (container && !htmlElement(container) && htmlElement(container[0])) {\n    container = container[0];\n  }\n  var reg = container ? container._cyreg : null; // e.g. already registered some info (e.g. readies) via jquery\n  reg = reg || {};\n  if (reg && reg.cy) {\n    reg.cy.destroy();\n    reg = {}; // old instance => replace reg completely\n  }\n  var readies = reg.readies = reg.readies || [];\n  if (container) {\n    container._cyreg = reg;\n  } // make sure container assoc'd reg points to this cy\n  reg.cy = cy;\n  var head = _window !== undefined && container !== undefined && !opts.headless;\n  var options = opts;\n  options.layout = extend({\n    name: head ? 'grid' : 'null'\n  }, options.layout);\n  options.renderer = extend({\n    name: head ? 'canvas' : 'null'\n  }, options.renderer);\n  var defVal = function defVal(def, val, altVal) {\n    if (val !== undefined) {\n      return val;\n    } else if (altVal !== undefined) {\n      return altVal;\n    } else {\n      return def;\n    }\n  };\n  var _p = this._private = {\n    container: container,\n    // html dom ele container\n    ready: false,\n    // whether ready has been triggered\n    options: options,\n    // cached options\n    elements: new Collection(this),\n    // elements in the graph\n    listeners: [],\n    // list of listeners\n    aniEles: new Collection(this),\n    // elements being animated\n    data: options.data || {},\n    // data for the core\n    scratch: {},\n    // scratch object for core\n    layout: null,\n    renderer: null,\n    destroyed: false,\n    // whether destroy was called\n    notificationsEnabled: true,\n    // whether notifications are sent to the renderer\n    minZoom: 1e-50,\n    maxZoom: 1e50,\n    zoomingEnabled: defVal(true, options.zoomingEnabled),\n    userZoomingEnabled: defVal(true, options.userZoomingEnabled),\n    panningEnabled: defVal(true, options.panningEnabled),\n    userPanningEnabled: defVal(true, options.userPanningEnabled),\n    boxSelectionEnabled: defVal(true, options.boxSelectionEnabled),\n    autolock: defVal(false, options.autolock, options.autolockNodes),\n    autoungrabify: defVal(false, options.autoungrabify, options.autoungrabifyNodes),\n    autounselectify: defVal(false, options.autounselectify),\n    styleEnabled: options.styleEnabled === undefined ? head : options.styleEnabled,\n    zoom: number$1(options.zoom) ? options.zoom : 1,\n    pan: {\n      x: plainObject(options.pan) && number$1(options.pan.x) ? options.pan.x : 0,\n      y: plainObject(options.pan) && number$1(options.pan.y) ? options.pan.y : 0\n    },\n    animation: {\n      // object for currently-running animations\n      current: [],\n      queue: []\n    },\n    hasCompoundNodes: false,\n    multiClickDebounceTime: defVal(250, options.multiClickDebounceTime)\n  };\n  this.createEmitter();\n\n  // set selection type\n  this.selectionType(options.selectionType);\n\n  // init zoom bounds\n  this.zoomRange({\n    min: options.minZoom,\n    max: options.maxZoom\n  });\n  var loadExtData = function loadExtData(extData, next) {\n    var anyIsPromise = extData.some(promise);\n    if (anyIsPromise) {\n      return Promise$1.all(extData).then(next); // load all data asynchronously, then exec rest of init\n    } else {\n      next(extData); // exec synchronously for convenience\n    }\n  };\n\n  // start with the default stylesheet so we have something before loading an external stylesheet\n  if (_p.styleEnabled) {\n    cy.setStyle([]);\n  }\n\n  // create the renderer\n  var rendererOptions = extend({}, options, options.renderer); // allow rendering hints in top level options\n  cy.initRenderer(rendererOptions);\n  var setElesAndLayout = function setElesAndLayout(elements, onload, ondone) {\n    cy.notifications(false);\n\n    // remove old elements\n    var oldEles = cy.mutableElements();\n    if (oldEles.length > 0) {\n      oldEles.remove();\n    }\n    if (elements != null) {\n      if (plainObject(elements) || array(elements)) {\n        cy.add(elements);\n      }\n    }\n    cy.one('layoutready', function (e) {\n      cy.notifications(true);\n      cy.emit(e); // we missed this event by turning notifications off, so pass it on\n\n      cy.one('load', onload);\n      cy.emitAndNotify('load');\n    }).one('layoutstop', function () {\n      cy.one('done', ondone);\n      cy.emit('done');\n    });\n    var layoutOpts = extend({}, cy._private.options.layout);\n    layoutOpts.eles = cy.elements();\n    cy.layout(layoutOpts).run();\n  };\n  loadExtData([options.style, options.elements], function (thens) {\n    var initStyle = thens[0];\n    var initEles = thens[1];\n\n    // init style\n    if (_p.styleEnabled) {\n      cy.style().append(initStyle);\n    }\n\n    // initial load\n    setElesAndLayout(initEles, function () {\n      // onready\n      cy.startAnimationLoop();\n      _p.ready = true;\n\n      // if a ready callback is specified as an option, the bind it\n      if (fn$6(options.ready)) {\n        cy.on('ready', options.ready);\n      }\n\n      // bind all the ready handlers registered before creating this instance\n      for (var i = 0; i < readies.length; i++) {\n        var fn = readies[i];\n        cy.on('ready', fn);\n      }\n      if (reg) {\n        reg.readies = [];\n      } // clear b/c we've bound them all and don't want to keep it around in case a new core uses the same div etc\n\n      cy.emit('ready');\n    }, options.done);\n  });\n};\nvar corefn = Core.prototype; // short alias\n\nextend(corefn, {\n  instanceString: function instanceString() {\n    return 'core';\n  },\n  isReady: function isReady() {\n    return this._private.ready;\n  },\n  destroyed: function destroyed() {\n    return this._private.destroyed;\n  },\n  ready: function ready(fn) {\n    if (this.isReady()) {\n      this.emitter().emit('ready', [], fn); // just calls fn as though triggered via ready event\n    } else {\n      this.on('ready', fn);\n    }\n    return this;\n  },\n  destroy: function destroy() {\n    var cy = this;\n    if (cy.destroyed()) return;\n    cy.stopAnimationLoop();\n    cy.destroyRenderer();\n    this.emit('destroy');\n    cy._private.destroyed = true;\n    return cy;\n  },\n  hasElementWithId: function hasElementWithId(id) {\n    return this._private.elements.hasElementWithId(id);\n  },\n  getElementById: function getElementById(id) {\n    return this._private.elements.getElementById(id);\n  },\n  hasCompoundNodes: function hasCompoundNodes() {\n    return this._private.hasCompoundNodes;\n  },\n  headless: function headless() {\n    return this._private.renderer.isHeadless();\n  },\n  styleEnabled: function styleEnabled() {\n    return this._private.styleEnabled;\n  },\n  addToPool: function addToPool(eles) {\n    this._private.elements.merge(eles);\n    return this; // chaining\n  },\n  removeFromPool: function removeFromPool(eles) {\n    this._private.elements.unmerge(eles);\n    return this;\n  },\n  container: function container() {\n    return this._private.container || null;\n  },\n  window: function window() {\n    var container = this._private.container;\n    if (container == null) return _window;\n    var ownerDocument = this._private.container.ownerDocument;\n    if (ownerDocument === undefined || ownerDocument == null) {\n      return _window;\n    }\n    return ownerDocument.defaultView || _window;\n  },\n  mount: function mount(container) {\n    if (container == null) {\n      return;\n    }\n    var cy = this;\n    var _p = cy._private;\n    var options = _p.options;\n    if (!htmlElement(container) && htmlElement(container[0])) {\n      container = container[0];\n    }\n    cy.stopAnimationLoop();\n    cy.destroyRenderer();\n    _p.container = container;\n    _p.styleEnabled = true;\n    cy.invalidateSize();\n    cy.initRenderer(extend({}, options, options.renderer, {\n      // allow custom renderer name to be re-used, otherwise use canvas\n      name: options.renderer.name === 'null' ? 'canvas' : options.renderer.name\n    }));\n    cy.startAnimationLoop();\n    cy.style(options.style);\n    cy.emit('mount');\n    return cy;\n  },\n  unmount: function unmount() {\n    var cy = this;\n    cy.stopAnimationLoop();\n    cy.destroyRenderer();\n    cy.initRenderer({\n      name: 'null'\n    });\n    cy.emit('unmount');\n    return cy;\n  },\n  options: function options() {\n    return copy(this._private.options);\n  },\n  json: function json(obj) {\n    var cy = this;\n    var _p = cy._private;\n    var eles = cy.mutableElements();\n    var getFreshRef = function getFreshRef(ele) {\n      return cy.getElementById(ele.id());\n    };\n    if (plainObject(obj)) {\n      // set\n\n      cy.startBatch();\n      if (obj.elements) {\n        var idInJson = {};\n        var updateEles = function updateEles(jsons, gr) {\n          var toAdd = [];\n          var toMod = [];\n          for (var i = 0; i < jsons.length; i++) {\n            var json = jsons[i];\n            if (!json.data.id) {\n              warn('cy.json() cannot handle elements without an ID attribute');\n              continue;\n            }\n            var id = '' + json.data.id; // id must be string\n            var ele = cy.getElementById(id);\n            idInJson[id] = true;\n            if (ele.length !== 0) {\n              // existing element should be updated\n              toMod.push({\n                ele: ele,\n                json: json\n              });\n            } else {\n              // otherwise should be added\n              if (gr) {\n                json.group = gr;\n                toAdd.push(json);\n              } else {\n                toAdd.push(json);\n              }\n            }\n          }\n          cy.add(toAdd);\n          for (var _i = 0; _i < toMod.length; _i++) {\n            var _toMod$_i = toMod[_i],\n              _ele = _toMod$_i.ele,\n              _json = _toMod$_i.json;\n            _ele.json(_json);\n          }\n        };\n        if (array(obj.elements)) {\n          // elements: []\n          updateEles(obj.elements);\n        } else {\n          // elements: { nodes: [], edges: [] }\n          var grs = ['nodes', 'edges'];\n          for (var i = 0; i < grs.length; i++) {\n            var gr = grs[i];\n            var elements = obj.elements[gr];\n            if (array(elements)) {\n              updateEles(elements, gr);\n            }\n          }\n        }\n        var parentsToRemove = cy.collection();\n        eles.filter(function (ele) {\n          return !idInJson[ele.id()];\n        }).forEach(function (ele) {\n          if (ele.isParent()) {\n            parentsToRemove.merge(ele);\n          } else {\n            ele.remove();\n          }\n        });\n\n        // so that children are not removed w/parent\n        parentsToRemove.forEach(function (ele) {\n          return ele.children().move({\n            parent: null\n          });\n        });\n\n        // intermediate parents may be moved by prior line, so make sure we remove by fresh refs\n        parentsToRemove.forEach(function (ele) {\n          return getFreshRef(ele).remove();\n        });\n      }\n      if (obj.style) {\n        cy.style(obj.style);\n      }\n      if (obj.zoom != null && obj.zoom !== _p.zoom) {\n        cy.zoom(obj.zoom);\n      }\n      if (obj.pan) {\n        if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) {\n          cy.pan(obj.pan);\n        }\n      }\n      if (obj.data) {\n        cy.data(obj.data);\n      }\n      var fields = ['minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'panningEnabled', 'userPanningEnabled', 'boxSelectionEnabled', 'autolock', 'autoungrabify', 'autounselectify', 'multiClickDebounceTime'];\n      for (var _i2 = 0; _i2 < fields.length; _i2++) {\n        var f = fields[_i2];\n        if (obj[f] != null) {\n          cy[f](obj[f]);\n        }\n      }\n      cy.endBatch();\n      return this; // chaining\n    } else {\n      // get\n      var flat = !!obj;\n      var json = {};\n      if (flat) {\n        json.elements = this.elements().map(function (ele) {\n          return ele.json();\n        });\n      } else {\n        json.elements = {};\n        eles.forEach(function (ele) {\n          var group = ele.group();\n          if (!json.elements[group]) {\n            json.elements[group] = [];\n          }\n          json.elements[group].push(ele.json());\n        });\n      }\n      if (this._private.styleEnabled) {\n        json.style = cy.style().json();\n      }\n      json.data = copy(cy.data());\n      var options = _p.options;\n      json.zoomingEnabled = _p.zoomingEnabled;\n      json.userZoomingEnabled = _p.userZoomingEnabled;\n      json.zoom = _p.zoom;\n      json.minZoom = _p.minZoom;\n      json.maxZoom = _p.maxZoom;\n      json.panningEnabled = _p.panningEnabled;\n      json.userPanningEnabled = _p.userPanningEnabled;\n      json.pan = copy(_p.pan);\n      json.boxSelectionEnabled = _p.boxSelectionEnabled;\n      json.renderer = copy(options.renderer);\n      json.hideEdgesOnViewport = options.hideEdgesOnViewport;\n      json.textureOnViewport = options.textureOnViewport;\n      json.wheelSensitivity = options.wheelSensitivity;\n      json.motionBlur = options.motionBlur;\n      json.multiClickDebounceTime = options.multiClickDebounceTime;\n      return json;\n    }\n  }\n});\ncorefn.$id = corefn.getElementById;\n[corefn$9, corefn$8, elesfn, corefn$7, corefn$6, corefn$5, corefn$4, corefn$3, corefn$2, corefn$1, fn].forEach(function (props) {\n  extend(corefn, props);\n});\n\n/* eslint-disable no-unused-vars */\nvar defaults$7 = {\n  fit: true,\n  // whether to fit the viewport to the graph\n  directed: false,\n  // whether the tree is directed downwards (or edges can point in any direction if false)\n  direction: 'downward',\n  // determines the direction in which the tree structure is drawn.  The possible values are 'downward', 'upward', 'rightward', or 'leftward'.\n  padding: 30,\n  // padding on fit\n  circle: false,\n  // put depths in concentric circles if true, put depths top down if false\n  grid: false,\n  // whether to create an even grid into which the DAG is placed (circle:false only)\n  spacingFactor: 1.75,\n  // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap)\n  boundingBox: undefined,\n  // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n  avoidOverlap: true,\n  // prevents node overlap, may overflow boundingBox if not enough space\n  nodeDimensionsIncludeLabels: false,\n  // Excludes the label when calculating node bounding boxes for the layout algorithm\n  roots: undefined,\n  // the roots of the trees\n  depthSort: undefined,\n  // a sorting function to order nodes at equal depth. e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n  animate: false,\n  // whether to transition the node positions\n  animationDuration: 500,\n  // duration of animation in ms if enabled\n  animationEasing: undefined,\n  // easing of animation if enabled,\n  animateFilter: function animateFilter(node, i) {\n    return true;\n  },\n  // a function that determines whether the node should be animated.  All nodes animated by default on animate enabled.  Non-animated nodes are positioned immediately when the layout starts\n  ready: undefined,\n  // callback on layoutready\n  stop: undefined,\n  // callback on layoutstop\n  transform: function transform(node, position) {\n    return position;\n  } // transform a given node position. Useful for changing flow direction in discrete layouts\n};\nvar deprecatedOptionDefaults = {\n  maximal: false,\n  // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only); setting acyclic to true sets maximal to true also\n  acyclic: false // whether the tree is acyclic and thus a node could be shifted (due to the maximal option) multiple times without causing an infinite loop; setting to true sets maximal to true also; if you are uncertain whether a tree is acyclic, set to false to avoid potential infinite loops\n};\n\n/* eslint-enable */\n\nvar getInfo = function getInfo(ele) {\n  return ele.scratch('breadthfirst');\n};\nvar setInfo = function setInfo(ele, obj) {\n  return ele.scratch('breadthfirst', obj);\n};\nfunction BreadthFirstLayout(options) {\n  this.options = extend({}, defaults$7, deprecatedOptionDefaults, options);\n}\nBreadthFirstLayout.prototype.run = function () {\n  var options = this.options;\n  var cy = options.cy;\n  var eles = options.eles;\n  var nodes = eles.nodes().filter(function (n) {\n    return n.isChildless();\n  });\n  var graph = eles;\n  var directed = options.directed;\n  var maximal = options.acyclic || options.maximal || options.maximalAdjustments > 0; // maximalAdjustments for compat. w/ old code; also, setting acyclic to true sets maximal to true\n\n  var hasBoundingBox = !!options.boundingBox;\n  var bb = makeBoundingBox(hasBoundingBox ? options.boundingBox : structuredClone(cy.extent()));\n  var roots;\n  if (elementOrCollection(options.roots)) {\n    roots = options.roots;\n  } else if (array(options.roots)) {\n    var rootsArray = [];\n    for (var i = 0; i < options.roots.length; i++) {\n      var id = options.roots[i];\n      var ele = cy.getElementById(id);\n      rootsArray.push(ele);\n    }\n    roots = cy.collection(rootsArray);\n  } else if (string(options.roots)) {\n    roots = cy.$(options.roots);\n  } else {\n    if (directed) {\n      roots = nodes.roots();\n    } else {\n      var components = eles.components();\n      roots = cy.collection();\n      var _loop = function _loop() {\n        var comp = components[_i];\n        var maxDegree = comp.maxDegree(false);\n        var compRoots = comp.filter(function (ele) {\n          return ele.degree(false) === maxDegree;\n        });\n        roots = roots.add(compRoots);\n      };\n      for (var _i = 0; _i < components.length; _i++) {\n        _loop();\n      }\n    }\n  }\n  var depths = [];\n  var foundByBfs = {};\n  var addToDepth = function addToDepth(ele, d) {\n    if (depths[d] == null) {\n      depths[d] = [];\n    }\n    var i = depths[d].length;\n    depths[d].push(ele);\n    setInfo(ele, {\n      index: i,\n      depth: d\n    });\n  };\n  var changeDepth = function changeDepth(ele, newDepth) {\n    var _getInfo = getInfo(ele),\n      depth = _getInfo.depth,\n      index = _getInfo.index;\n    depths[depth][index] = null;\n\n    // add only childless nodes\n    if (ele.isChildless()) addToDepth(ele, newDepth);\n  };\n\n  // find the depths of the nodes\n  graph.bfs({\n    roots: roots,\n    directed: options.directed,\n    visit: function visit(node, edge, pNode, i, depth) {\n      var ele = node[0];\n      var id = ele.id();\n\n      // add only childless nodes\n      if (ele.isChildless()) addToDepth(ele, depth);\n      foundByBfs[id] = true;\n    }\n  });\n\n  // check for nodes not found by bfs\n  var orphanNodes = [];\n  for (var _i2 = 0; _i2 < nodes.length; _i2++) {\n    var _ele = nodes[_i2];\n    if (foundByBfs[_ele.id()]) {\n      continue;\n    } else {\n      orphanNodes.push(_ele);\n    }\n  }\n\n  // assign the nodes a depth and index\n  var assignDepthsAt = function assignDepthsAt(i) {\n    var eles = depths[i];\n    for (var j = 0; j < eles.length; j++) {\n      var _ele2 = eles[j];\n      if (_ele2 == null) {\n        eles.splice(j, 1);\n        j--;\n        continue;\n      }\n      setInfo(_ele2, {\n        depth: i,\n        index: j\n      });\n    }\n  };\n  var adjustMaximally = function adjustMaximally(ele, shifted) {\n    var eInfo = getInfo(ele);\n    var incomers = ele.incomers().filter(function (el) {\n      return el.isNode() && eles.has(el);\n    });\n    var maxDepth = -1;\n    var id = ele.id();\n    for (var k = 0; k < incomers.length; k++) {\n      var incmr = incomers[k];\n      var iInfo = getInfo(incmr);\n      maxDepth = Math.max(maxDepth, iInfo.depth);\n    }\n    if (eInfo.depth <= maxDepth) {\n      if (!options.acyclic && shifted[id]) {\n        return null;\n      }\n      var newDepth = maxDepth + 1;\n      changeDepth(ele, newDepth);\n      shifted[id] = newDepth;\n      return true;\n    }\n    return false;\n  };\n\n  // for the directed case, try to make the edges all go down (i.e. depth i => depth i + 1)\n  if (directed && maximal) {\n    var Q = [];\n    var shifted = {};\n    var enqueue = function enqueue(n) {\n      return Q.push(n);\n    };\n    var dequeue = function dequeue() {\n      return Q.shift();\n    };\n    nodes.forEach(function (n) {\n      return Q.push(n);\n    });\n    while (Q.length > 0) {\n      var _ele3 = dequeue();\n      var didShift = adjustMaximally(_ele3, shifted);\n      if (didShift) {\n        _ele3.outgoers().filter(function (el) {\n          return el.isNode() && eles.has(el);\n        }).forEach(enqueue);\n      } else if (didShift === null) {\n        warn('Detected double maximal shift for node `' + _ele3.id() + '`.  Bailing maximal adjustment due to cycle.  Use `options.maximal: true` only on DAGs.');\n        break; // exit on failure\n      }\n    }\n  }\n\n  // find min distance we need to leave between nodes\n  var minDistance = 0;\n  if (options.avoidOverlap) {\n    for (var _i3 = 0; _i3 < nodes.length; _i3++) {\n      var n = nodes[_i3];\n      var nbb = n.layoutDimensions(options);\n      var w = nbb.w;\n      var h = nbb.h;\n      minDistance = Math.max(minDistance, w, h);\n    }\n  }\n\n  // get the weighted percent for an element based on its connectivity to other levels\n  var cachedWeightedPercent = {};\n  var getWeightedPercent = function getWeightedPercent(ele) {\n    if (cachedWeightedPercent[ele.id()]) {\n      return cachedWeightedPercent[ele.id()];\n    }\n    var eleDepth = getInfo(ele).depth;\n    var neighbors = ele.neighborhood();\n    var percent = 0;\n    var samples = 0;\n    for (var _i4 = 0; _i4 < neighbors.length; _i4++) {\n      var neighbor = neighbors[_i4];\n      if (neighbor.isEdge() || neighbor.isParent() || !nodes.has(neighbor)) {\n        continue;\n      }\n      var bf = getInfo(neighbor);\n      if (bf == null) {\n        continue;\n      }\n      var index = bf.index;\n      var depth = bf.depth;\n\n      // unassigned neighbours shouldn't affect the ordering\n      if (index == null || depth == null) {\n        continue;\n      }\n      var nDepth = depths[depth].length;\n      if (depth < eleDepth) {\n        // only get influenced by elements above\n        percent += index / nDepth;\n        samples++;\n      }\n    }\n    samples = Math.max(1, samples);\n    percent = percent / samples;\n    if (samples === 0) {\n      // put lone nodes at the start\n      percent = 0;\n    }\n    cachedWeightedPercent[ele.id()] = percent;\n    return percent;\n  };\n\n  // rearrange the indices in each depth level based on connectivity\n  var sortFn = function sortFn(a, b) {\n    var apct = getWeightedPercent(a);\n    var bpct = getWeightedPercent(b);\n    var diff = apct - bpct;\n    if (diff === 0) {\n      return ascending(a.id(), b.id()); // make sure sort doesn't have don't-care comparisons\n    } else {\n      return diff;\n    }\n  };\n  if (options.depthSort !== undefined) {\n    sortFn = options.depthSort;\n  }\n  var depthsLen = depths.length;\n\n  // sort each level to make connected nodes closer\n  for (var _i5 = 0; _i5 < depthsLen; _i5++) {\n    depths[_i5].sort(sortFn);\n    assignDepthsAt(_i5);\n  }\n\n  // assign orphan nodes to a new top-level depth\n  var orphanDepth = [];\n  for (var _i6 = 0; _i6 < orphanNodes.length; _i6++) {\n    orphanDepth.push(orphanNodes[_i6]);\n  }\n  var assignDepths = function assignDepths() {\n    for (var _i7 = 0; _i7 < depthsLen; _i7++) {\n      assignDepthsAt(_i7);\n    }\n  };\n\n  // add a new top-level depth only when there are orphan nodes\n  if (orphanDepth.length) {\n    depths.unshift(orphanDepth);\n    depthsLen = depths.length;\n    assignDepths();\n  }\n  var biggestDepthSize = 0;\n  for (var _i8 = 0; _i8 < depthsLen; _i8++) {\n    biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize);\n  }\n  var center = {\n    x: bb.x1 + bb.w / 2,\n    y: bb.y1 + bb.h / 2\n  };\n\n  // average node size\n  var aveNodeSize = nodes.reduce(function (acc, node) {\n    return function (box) {\n      return {\n        w: acc.w === -1 ? box.w : (acc.w + box.w) / 2,\n        h: acc.h === -1 ? box.h : (acc.h + box.h) / 2\n      };\n    }(node.boundingBox({\n      includeLabels: options.nodeDimensionsIncludeLabels\n    }));\n  }, {\n    w: -1,\n    h: -1\n  });\n  var distanceY = Math.max(\n  // only one depth\n  depthsLen === 1 ? 0 :\n  // inside a bounding box, no need for top & bottom padding\n  hasBoundingBox ? (bb.h - options.padding * 2 - aveNodeSize.h) / (depthsLen - 1) : (bb.h - options.padding * 2 - aveNodeSize.h) / (depthsLen + 1), minDistance);\n  var maxDepthSize = depths.reduce(function (max, eles) {\n    return Math.max(max, eles.length);\n  }, 0);\n  var getPositionTopBottom = function getPositionTopBottom(ele) {\n    var _getInfo2 = getInfo(ele),\n      depth = _getInfo2.depth,\n      index = _getInfo2.index;\n    if (options.circle) {\n      var radiusStepSize = Math.min(bb.w / 2 / depthsLen, bb.h / 2 / depthsLen);\n      radiusStepSize = Math.max(radiusStepSize, minDistance);\n      var radius = radiusStepSize * depth + radiusStepSize - (depthsLen > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0);\n      var theta = 2 * Math.PI / depths[depth].length * index;\n      if (depth === 0 && depths[0].length === 1) {\n        radius = 1;\n      }\n      return {\n        x: center.x + radius * Math.cos(theta),\n        y: center.y + radius * Math.sin(theta)\n      };\n    } else {\n      var depthSize = depths[depth].length;\n      var distanceX = Math.max(\n      // only one depth\n      depthSize === 1 ? 0 :\n      // inside a bounding box, no need for left & right padding\n      hasBoundingBox ? (bb.w - options.padding * 2 - aveNodeSize.w) / ((options.grid ? maxDepthSize : depthSize) - 1) : (bb.w - options.padding * 2 - aveNodeSize.w) / ((options.grid ? maxDepthSize : depthSize) + 1), minDistance);\n      var epos = {\n        x: center.x + (index + 1 - (depthSize + 1) / 2) * distanceX,\n        y: center.y + (depth + 1 - (depthsLen + 1) / 2) * distanceY\n      };\n      return epos;\n    }\n  };\n  var rotateDegrees = {\n    'downward': 0,\n    'leftward': 90,\n    'upward': 180,\n    'rightward': -90\n  };\n  if (Object.keys(rotateDegrees).indexOf(options.direction) === -1) {\n    error(\"Invalid direction '\".concat(options.direction, \"' specified for breadthfirst layout. Valid values are: \").concat(Object.keys(rotateDegrees).join(', ')));\n  }\n  var getPosition = function getPosition(ele) {\n    return rotatePosAndSkewByBox(getPositionTopBottom(ele), bb, rotateDegrees[options.direction]);\n  };\n  eles.nodes().layoutPositions(this, options, getPosition);\n  return this; // chaining\n};\n\nvar defaults$6 = {\n  fit: true,\n  // whether to fit the viewport to the graph\n  padding: 30,\n  // the padding on fit\n  boundingBox: undefined,\n  // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n  avoidOverlap: true,\n  // prevents node overlap, may overflow boundingBox and radius if not enough space\n  nodeDimensionsIncludeLabels: false,\n  // Excludes the label when calculating node bounding boxes for the layout algorithm\n  spacingFactor: undefined,\n  // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n  radius: undefined,\n  // the radius of the circle\n  startAngle: 3 / 2 * Math.PI,\n  // where nodes start in radians\n  sweep: undefined,\n  // how many radians should be between the first and last node (defaults to full circle)\n  clockwise: true,\n  // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)\n  sort: undefined,\n  // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n  animate: false,\n  // whether to transition the node positions\n  animationDuration: 500,\n  // duration of animation in ms if enabled\n  animationEasing: undefined,\n  // easing of animation if enabled\n  animateFilter: function animateFilter(node, i) {\n    return true;\n  },\n  // a function that determines whether the node should be animated.  All nodes animated by default on animate enabled.  Non-animated nodes are positioned immediately when the layout starts\n  ready: undefined,\n  // callback on layoutready\n  stop: undefined,\n  // callback on layoutstop\n  transform: function transform(node, position) {\n    return position;\n  } // transform a given node position. Useful for changing flow direction in discrete layouts \n};\nfunction CircleLayout(options) {\n  this.options = extend({}, defaults$6, options);\n}\nCircleLayout.prototype.run = function () {\n  var params = this.options;\n  var options = params;\n  var cy = params.cy;\n  var eles = options.eles;\n  var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;\n  var nodes = eles.nodes().not(':parent');\n  if (options.sort) {\n    nodes = nodes.sort(options.sort);\n  }\n  var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n    x1: 0,\n    y1: 0,\n    w: cy.width(),\n    h: cy.height()\n  });\n  var center = {\n    x: bb.x1 + bb.w / 2,\n    y: bb.y1 + bb.h / 2\n  };\n  var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / nodes.length : options.sweep;\n  var dTheta = sweep / Math.max(1, nodes.length - 1);\n  var r;\n  var minDistance = 0;\n  for (var i = 0; i < nodes.length; i++) {\n    var n = nodes[i];\n    var nbb = n.layoutDimensions(options);\n    var w = nbb.w;\n    var h = nbb.h;\n    minDistance = Math.max(minDistance, w, h);\n  }\n  if (number$1(options.radius)) {\n    r = options.radius;\n  } else if (nodes.length <= 1) {\n    r = 0;\n  } else {\n    r = Math.min(bb.h, bb.w) / 2 - minDistance;\n  }\n\n  // calculate the radius\n  if (nodes.length > 1 && options.avoidOverlap) {\n    // but only if more than one node (can't overlap)\n    minDistance *= 1.75; // just to have some nice spacing\n\n    var dcos = Math.cos(dTheta) - Math.cos(0);\n    var dsin = Math.sin(dTheta) - Math.sin(0);\n    var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n    r = Math.max(rMin, r);\n  }\n  var getPos = function getPos(ele, i) {\n    var theta = options.startAngle + i * dTheta * (clockwise ? 1 : -1);\n    var rx = r * Math.cos(theta);\n    var ry = r * Math.sin(theta);\n    var pos = {\n      x: center.x + rx,\n      y: center.y + ry\n    };\n    return pos;\n  };\n  eles.nodes().layoutPositions(this, options, getPos);\n  return this; // chaining\n};\n\nvar defaults$5 = {\n  fit: true,\n  // whether to fit the viewport to the graph\n  padding: 30,\n  // the padding on fit\n  startAngle: 3 / 2 * Math.PI,\n  // where nodes start in radians\n  sweep: undefined,\n  // how many radians should be between the first and last node (defaults to full circle)\n  clockwise: true,\n  // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)\n  equidistant: false,\n  // whether levels have an equal radial distance betwen them, may cause bounding box overflow\n  minNodeSpacing: 10,\n  // min spacing between outside of nodes (used for radius adjustment)\n  boundingBox: undefined,\n  // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n  avoidOverlap: true,\n  // prevents node overlap, may overflow boundingBox if not enough space\n  nodeDimensionsIncludeLabels: false,\n  // Excludes the label when calculating node bounding boxes for the layout algorithm\n  height: undefined,\n  // height of layout area (overrides container height)\n  width: undefined,\n  // width of layout area (overrides container width)\n  spacingFactor: undefined,\n  // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n  concentric: function concentric(node) {\n    // returns numeric value for each node, placing higher nodes in levels towards the centre\n    return node.degree();\n  },\n  levelWidth: function levelWidth(nodes) {\n    // the variation of concentric values in each level\n    return nodes.maxDegree() / 4;\n  },\n  animate: false,\n  // whether to transition the node positions\n  animationDuration: 500,\n  // duration of animation in ms if enabled\n  animationEasing: undefined,\n  // easing of animation if enabled\n  animateFilter: function animateFilter(node, i) {\n    return true;\n  },\n  // a function that determines whether the node should be animated.  All nodes animated by default on animate enabled.  Non-animated nodes are positioned immediately when the layout starts\n  ready: undefined,\n  // callback on layoutready\n  stop: undefined,\n  // callback on layoutstop\n  transform: function transform(node, position) {\n    return position;\n  } // transform a given node position. Useful for changing flow direction in discrete layouts\n};\nfunction ConcentricLayout(options) {\n  this.options = extend({}, defaults$5, options);\n}\nConcentricLayout.prototype.run = function () {\n  var params = this.options;\n  var options = params;\n  var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;\n  var cy = params.cy;\n  var eles = options.eles;\n  var nodes = eles.nodes().not(':parent');\n  var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n    x1: 0,\n    y1: 0,\n    w: cy.width(),\n    h: cy.height()\n  });\n  var center = {\n    x: bb.x1 + bb.w / 2,\n    y: bb.y1 + bb.h / 2\n  };\n  var nodeValues = []; // { node, value }\n  var maxNodeSize = 0;\n  for (var i = 0; i < nodes.length; i++) {\n    var node = nodes[i];\n    var value = undefined;\n\n    // calculate the node value\n    value = options.concentric(node);\n    nodeValues.push({\n      value: value,\n      node: node\n    });\n\n    // for style mapping\n    node._private.scratch.concentric = value;\n  }\n\n  // in case we used the `concentric` in style\n  nodes.updateStyle();\n\n  // calculate max size now based on potentially updated mappers\n  for (var _i = 0; _i < nodes.length; _i++) {\n    var _node = nodes[_i];\n    var nbb = _node.layoutDimensions(options);\n    maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h);\n  }\n\n  // sort node values in descreasing order\n  nodeValues.sort(function (a, b) {\n    return b.value - a.value;\n  });\n  var levelWidth = options.levelWidth(nodes);\n\n  // put the values into levels\n  var levels = [[]];\n  var currentLevel = levels[0];\n  for (var _i2 = 0; _i2 < nodeValues.length; _i2++) {\n    var val = nodeValues[_i2];\n    if (currentLevel.length > 0) {\n      var diff = Math.abs(currentLevel[0].value - val.value);\n      if (diff >= levelWidth) {\n        currentLevel = [];\n        levels.push(currentLevel);\n      }\n    }\n    currentLevel.push(val);\n  }\n\n  // create positions from levels\n\n  var minDist = maxNodeSize + options.minNodeSpacing; // min dist between nodes\n\n  if (!options.avoidOverlap) {\n    // then strictly constrain to bb\n    var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1;\n    var maxR = Math.min(bb.w, bb.h) / 2 - minDist;\n    var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0);\n    minDist = Math.min(minDist, rStep);\n  }\n\n  // find the metrics for each level\n  var r = 0;\n  for (var _i3 = 0; _i3 < levels.length; _i3++) {\n    var level = levels[_i3];\n    var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / level.length : options.sweep;\n    var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1);\n\n    // calculate the radius\n    if (level.length > 1 && options.avoidOverlap) {\n      // but only if more than one node (can't overlap)\n      var dcos = Math.cos(dTheta) - Math.cos(0);\n      var dsin = Math.sin(dTheta) - Math.sin(0);\n      var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n\n      r = Math.max(rMin, r);\n    }\n    level.r = r;\n    r += minDist;\n  }\n  if (options.equidistant) {\n    var rDeltaMax = 0;\n    var _r = 0;\n    for (var _i4 = 0; _i4 < levels.length; _i4++) {\n      var _level = levels[_i4];\n      var rDelta = _level.r - _r;\n      rDeltaMax = Math.max(rDeltaMax, rDelta);\n    }\n    _r = 0;\n    for (var _i5 = 0; _i5 < levels.length; _i5++) {\n      var _level2 = levels[_i5];\n      if (_i5 === 0) {\n        _r = _level2.r;\n      }\n      _level2.r = _r;\n      _r += rDeltaMax;\n    }\n  }\n\n  // calculate the node positions\n  var pos = {}; // id => position\n  for (var _i6 = 0; _i6 < levels.length; _i6++) {\n    var _level3 = levels[_i6];\n    var _dTheta = _level3.dTheta;\n    var _r2 = _level3.r;\n    for (var j = 0; j < _level3.length; j++) {\n      var _val = _level3[j];\n      var theta = options.startAngle + (clockwise ? 1 : -1) * _dTheta * j;\n      var p = {\n        x: center.x + _r2 * Math.cos(theta),\n        y: center.y + _r2 * Math.sin(theta)\n      };\n      pos[_val.node.id()] = p;\n    }\n  }\n\n  // position the nodes\n  eles.nodes().layoutPositions(this, options, function (ele) {\n    var id = ele.id();\n    return pos[id];\n  });\n  return this; // chaining\n};\n\n/*\nThe CoSE layout was written by Gerardo Huck.\nhttps://www.linkedin.com/in/gerardohuck/\n\nBased on the following article:\nhttp://dl.acm.org/citation.cfm?id=1498047\n\nModifications tracked on Github.\n*/\n\nvar DEBUG;\n\n/**\n * @brief :  default layout options\n */\nvar defaults$4 = {\n  // Called on `layoutready`\n  ready: function ready() {},\n  // Called on `layoutstop`\n  stop: function stop() {},\n  // Whether to animate while running the layout\n  // true : Animate continuously as the layout is running\n  // false : Just show the end result\n  // 'end' : Animate with the end result, from the initial positions to the end positions\n  animate: true,\n  // Easing of the animation for animate:'end'\n  animationEasing: undefined,\n  // The duration of the animation for animate:'end'\n  animationDuration: undefined,\n  // A function that determines whether the node should be animated\n  // All nodes animated by default on animate enabled\n  // Non-animated nodes are positioned immediately when the layout starts\n  animateFilter: function animateFilter(node, i) {\n    return true;\n  },\n  // The layout animates only after this many milliseconds for animate:true\n  // (prevents flashing on fast runs)\n  animationThreshold: 250,\n  // Number of iterations between consecutive screen positions update\n  refresh: 20,\n  // Whether to fit the network view after when done\n  fit: true,\n  // Padding on fit\n  padding: 30,\n  // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n  boundingBox: undefined,\n  // Excludes the label when calculating node bounding boxes for the layout algorithm\n  nodeDimensionsIncludeLabels: false,\n  // Randomize the initial positions of the nodes (true) or use existing positions (false)\n  randomize: false,\n  // Extra spacing between components in non-compound graphs\n  componentSpacing: 40,\n  // Node repulsion (non overlapping) multiplier\n  nodeRepulsion: function nodeRepulsion(node) {\n    return 2048;\n  },\n  // Node repulsion (overlapping) multiplier\n  nodeOverlap: 4,\n  // Ideal edge (non nested) length\n  idealEdgeLength: function idealEdgeLength(edge) {\n    return 32;\n  },\n  // Divisor to compute edge forces\n  edgeElasticity: function edgeElasticity(edge) {\n    return 32;\n  },\n  // Nesting factor (multiplier) to compute ideal edge length for nested edges\n  nestingFactor: 1.2,\n  // Gravity force (constant)\n  gravity: 1,\n  // Maximum number of iterations to perform\n  numIter: 1000,\n  // Initial temperature (maximum node displacement)\n  initialTemp: 1000,\n  // Cooling factor (how the temperature is reduced between consecutive iterations\n  coolingFactor: 0.99,\n  // Lower temperature threshold (below this point the layout will end)\n  minTemp: 1.0\n};\n\n/**\n * @brief       : constructor\n * @arg options : object containing layout options\n */\nfunction CoseLayout(options) {\n  this.options = extend({}, defaults$4, options);\n  this.options.layout = this;\n\n  // Exclude any edge that has a source or target node that is not in the set of passed-in nodes\n  var nodes = this.options.eles.nodes();\n  var edges = this.options.eles.edges();\n  var notEdges = edges.filter(function (e) {\n    var sourceId = e.source().data('id');\n    var targetId = e.target().data('id');\n    var hasSource = nodes.some(function (n) {\n      return n.data('id') === sourceId;\n    });\n    var hasTarget = nodes.some(function (n) {\n      return n.data('id') === targetId;\n    });\n    return !hasSource || !hasTarget;\n  });\n  this.options.eles = this.options.eles.not(notEdges);\n}\n\n/**\n * @brief : runs the layout\n */\nCoseLayout.prototype.run = function () {\n  var options = this.options;\n  var cy = options.cy;\n  var layout = this;\n  layout.stopped = false;\n  if (options.animate === true || options.animate === false) {\n    layout.emit({\n      type: 'layoutstart',\n      layout: layout\n    });\n  }\n\n  // Set DEBUG - Global variable\n  if (true === options.debug) {\n    DEBUG = true;\n  } else {\n    DEBUG = false;\n  }\n\n  // Initialize layout info\n  var layoutInfo = createLayoutInfo(cy, layout, options);\n\n  // Show LayoutInfo contents if debugging\n  if (DEBUG) {\n    printLayoutInfo(layoutInfo);\n  }\n\n  // If required, randomize node positions\n  if (options.randomize) {\n    randomizePositions(layoutInfo);\n  }\n  var startTime = performanceNow();\n  var refresh = function refresh() {\n    refreshPositions(layoutInfo, cy, options);\n\n    // Fit the graph if necessary\n    if (true === options.fit) {\n      cy.fit(options.padding);\n    }\n  };\n  var mainLoop = function mainLoop(i) {\n    if (layout.stopped || i >= options.numIter) {\n      // logDebug(\"Layout manually stopped. Stopping computation in step \" + i);\n      return false;\n    }\n\n    // Do one step in the phisical simulation\n    step(layoutInfo, options);\n\n    // Update temperature\n    layoutInfo.temperature = layoutInfo.temperature * options.coolingFactor;\n    // logDebug(\"New temperature: \" + layoutInfo.temperature);\n\n    if (layoutInfo.temperature < options.minTemp) {\n      // logDebug(\"Temperature drop below minimum threshold. Stopping computation in step \" + i);\n      return false;\n    }\n    return true;\n  };\n  var done = function done() {\n    if (options.animate === true || options.animate === false) {\n      refresh();\n\n      // Layout has finished\n      layout.one('layoutstop', options.stop);\n      layout.emit({\n        type: 'layoutstop',\n        layout: layout\n      });\n    } else {\n      var nodes = options.eles.nodes();\n      var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);\n      nodes.layoutPositions(layout, options, getScaledPos);\n    }\n  };\n  var i = 0;\n  var loopRet = true;\n  if (options.animate === true) {\n    var _frame = function frame() {\n      var f = 0;\n      while (loopRet && f < options.refresh) {\n        loopRet = mainLoop(i);\n        i++;\n        f++;\n      }\n      if (!loopRet) {\n        // it's done\n        separateComponents(layoutInfo, options);\n        done();\n      } else {\n        var now = performanceNow();\n        if (now - startTime >= options.animationThreshold) {\n          refresh();\n        }\n        requestAnimationFrame(_frame);\n      }\n    };\n    _frame();\n  } else {\n    while (loopRet) {\n      loopRet = mainLoop(i);\n      i++;\n    }\n    separateComponents(layoutInfo, options);\n    done();\n  }\n  return this; // chaining\n};\n\n/**\n * @brief : called on continuous layouts to stop them before they finish\n */\nCoseLayout.prototype.stop = function () {\n  this.stopped = true;\n  if (this.thread) {\n    this.thread.stop();\n  }\n  this.emit('layoutstop');\n  return this; // chaining\n};\nCoseLayout.prototype.destroy = function () {\n  if (this.thread) {\n    this.thread.stop();\n  }\n  return this; // chaining\n};\n\n/**\n * @brief     : Creates an object which is contains all the data\n *              used in the layout process\n * @arg cy    : cytoscape.js object\n * @return    : layoutInfo object initialized\n */\nvar createLayoutInfo = function createLayoutInfo(cy, layout, options) {\n  // Shortcut\n  var edges = options.eles.edges();\n  var nodes = options.eles.nodes();\n  var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n    x1: 0,\n    y1: 0,\n    w: cy.width(),\n    h: cy.height()\n  });\n  var layoutInfo = {\n    isCompound: cy.hasCompoundNodes(),\n    layoutNodes: [],\n    idToIndex: {},\n    nodeSize: nodes.size(),\n    graphSet: [],\n    indexToGraph: [],\n    layoutEdges: [],\n    edgeSize: edges.size(),\n    temperature: options.initialTemp,\n    clientWidth: bb.w,\n    clientHeight: bb.h,\n    boundingBox: bb\n  };\n  var components = options.eles.components();\n  var id2cmptId = {};\n  for (var i = 0; i < components.length; i++) {\n    var component = components[i];\n    for (var j = 0; j < component.length; j++) {\n      var node = component[j];\n      id2cmptId[node.id()] = i;\n    }\n  }\n\n  // Iterate over all nodes, creating layout nodes\n  for (var i = 0; i < layoutInfo.nodeSize; i++) {\n    var n = nodes[i];\n    var nbb = n.layoutDimensions(options);\n    var tempNode = {};\n    tempNode.isLocked = n.locked();\n    tempNode.id = n.data('id');\n    tempNode.parentId = n.data('parent');\n    tempNode.cmptId = id2cmptId[n.id()];\n    tempNode.children = [];\n    tempNode.positionX = n.position('x');\n    tempNode.positionY = n.position('y');\n    tempNode.offsetX = 0;\n    tempNode.offsetY = 0;\n    tempNode.height = nbb.w;\n    tempNode.width = nbb.h;\n    tempNode.maxX = tempNode.positionX + tempNode.width / 2;\n    tempNode.minX = tempNode.positionX - tempNode.width / 2;\n    tempNode.maxY = tempNode.positionY + tempNode.height / 2;\n    tempNode.minY = tempNode.positionY - tempNode.height / 2;\n    tempNode.padLeft = parseFloat(n.style('padding'));\n    tempNode.padRight = parseFloat(n.style('padding'));\n    tempNode.padTop = parseFloat(n.style('padding'));\n    tempNode.padBottom = parseFloat(n.style('padding'));\n\n    // forces\n    tempNode.nodeRepulsion = fn$6(options.nodeRepulsion) ? options.nodeRepulsion(n) : options.nodeRepulsion;\n\n    // Add new node\n    layoutInfo.layoutNodes.push(tempNode);\n    // Add entry to id-index map\n    layoutInfo.idToIndex[tempNode.id] = i;\n  }\n\n  // Inline implementation of a queue, used for traversing the graph in BFS order\n  var queue = [];\n  var start = 0; // Points to the start the queue\n  var end = -1; // Points to the end of the queue\n\n  var tempGraph = [];\n\n  // Second pass to add child information and\n  // initialize queue for hierarchical traversal\n  for (var i = 0; i < layoutInfo.nodeSize; i++) {\n    var n = layoutInfo.layoutNodes[i];\n    var p_id = n.parentId;\n    // Check if node n has a parent node\n    if (null != p_id) {\n      // Add node Id to parent's list of children\n      layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n.id);\n    } else {\n      // If a node doesn't have a parent, then it's in the root graph\n      queue[++end] = n.id;\n      tempGraph.push(n.id);\n    }\n  }\n\n  // Add root graph to graphSet\n  layoutInfo.graphSet.push(tempGraph);\n\n  // Traverse the graph, level by level,\n  while (start <= end) {\n    // Get the node to visit and remove it from queue\n    var node_id = queue[start++];\n    var node_ix = layoutInfo.idToIndex[node_id];\n    var node = layoutInfo.layoutNodes[node_ix];\n    var children = node.children;\n    if (children.length > 0) {\n      // Add children nodes as a new graph to graph set\n      layoutInfo.graphSet.push(children);\n      // Add children to que queue to be visited\n      for (var i = 0; i < children.length; i++) {\n        queue[++end] = children[i];\n      }\n    }\n  }\n\n  // Create indexToGraph map\n  for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n    var graph = layoutInfo.graphSet[i];\n    for (var j = 0; j < graph.length; j++) {\n      var index = layoutInfo.idToIndex[graph[j]];\n      layoutInfo.indexToGraph[index] = i;\n    }\n  }\n\n  // Iterate over all edges, creating Layout Edges\n  for (var i = 0; i < layoutInfo.edgeSize; i++) {\n    var e = edges[i];\n    var tempEdge = {};\n    tempEdge.id = e.data('id');\n    tempEdge.sourceId = e.data('source');\n    tempEdge.targetId = e.data('target');\n\n    // Compute ideal length\n    var idealLength = fn$6(options.idealEdgeLength) ? options.idealEdgeLength(e) : options.idealEdgeLength;\n    var elasticity = fn$6(options.edgeElasticity) ? options.edgeElasticity(e) : options.edgeElasticity;\n\n    // Check if it's an inter graph edge\n    var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId];\n    var targetIx = layoutInfo.idToIndex[tempEdge.targetId];\n    var sourceGraph = layoutInfo.indexToGraph[sourceIx];\n    var targetGraph = layoutInfo.indexToGraph[targetIx];\n    if (sourceGraph != targetGraph) {\n      // Find lowest common graph ancestor\n      var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo);\n\n      // Compute sum of node depths, relative to lca graph\n      var lcaGraph = layoutInfo.graphSet[lca];\n      var depth = 0;\n\n      // Source depth\n      var tempNode = layoutInfo.layoutNodes[sourceIx];\n      while (-1 === lcaGraph.indexOf(tempNode.id)) {\n        tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];\n        depth++;\n      }\n\n      // Target depth\n      tempNode = layoutInfo.layoutNodes[targetIx];\n      while (-1 === lcaGraph.indexOf(tempNode.id)) {\n        tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];\n        depth++;\n      }\n\n      // logDebug('LCA of nodes ' + tempEdge.sourceId + ' and ' + tempEdge.targetId +\n      //  \". Index: \" + lca + \" Contents: \" + lcaGraph.toString() +\n      //  \". Depth: \" + depth);\n\n      // Update idealLength\n      idealLength *= depth * options.nestingFactor;\n    }\n    tempEdge.idealLength = idealLength;\n    tempEdge.elasticity = elasticity;\n    layoutInfo.layoutEdges.push(tempEdge);\n  }\n\n  // Finally, return layoutInfo object\n  return layoutInfo;\n};\n\n/**\n * @brief : This function finds the index of the lowest common\n *          graph ancestor between 2 nodes in the subtree\n *          (from the graph hierarchy induced tree) whose\n *          root is graphIx\n *\n * @arg node1: node1's ID\n * @arg node2: node2's ID\n * @arg layoutInfo: layoutInfo object\n *\n */\nvar findLCA = function findLCA(node1, node2, layoutInfo) {\n  // Find their common ancester, starting from the root graph\n  var res = _findLCA_aux(node1, node2, 0, layoutInfo);\n  if (2 > res.count) {\n    // If aux function couldn't find the common ancester,\n    // then it is the root graph\n    return 0;\n  } else {\n    return res.graph;\n  }\n};\n\n/**\n * @brief          : Auxiliary function used for LCA computation\n *\n * @arg node1      : node1's ID\n * @arg node2      : node2's ID\n * @arg graphIx    : subgraph index\n * @arg layoutInfo : layoutInfo object\n *\n * @return         : object of the form {count: X, graph: Y}, where:\n *                   X is the number of ancestors (max: 2) found in\n *                   graphIx (and it's subgraphs),\n *                   Y is the graph index of the lowest graph containing\n *                   all X nodes\n */\nvar _findLCA_aux = function findLCA_aux(node1, node2, graphIx, layoutInfo) {\n  var graph = layoutInfo.graphSet[graphIx];\n  // If both nodes belongs to graphIx\n  if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) {\n    return {\n      count: 2,\n      graph: graphIx\n    };\n  }\n\n  // Make recursive calls for all subgraphs\n  var c = 0;\n  for (var i = 0; i < graph.length; i++) {\n    var nodeId = graph[i];\n    var nodeIx = layoutInfo.idToIndex[nodeId];\n    var children = layoutInfo.layoutNodes[nodeIx].children;\n\n    // If the node has no child, skip it\n    if (0 === children.length) {\n      continue;\n    }\n    var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children[0]]];\n    var result = _findLCA_aux(node1, node2, childGraphIx, layoutInfo);\n    if (0 === result.count) {\n      // Neither node1 nor node2 are present in this subgraph\n      continue;\n    } else if (1 === result.count) {\n      // One of (node1, node2) is present in this subgraph\n      c++;\n      if (2 === c) {\n        // We've already found both nodes, no need to keep searching\n        break;\n      }\n    } else {\n      // Both nodes are present in this subgraph\n      return result;\n    }\n  }\n  return {\n    count: c,\n    graph: graphIx\n  };\n};\n\n/**\n * @brief: printsLayoutInfo into js console\n *         Only used for debbuging\n */\nvar printLayoutInfo; \n\n/**\n * @brief : Randomizes the position of all nodes\n */\nvar randomizePositions = function randomizePositions(layoutInfo, cy) {\n  var width = layoutInfo.clientWidth;\n  var height = layoutInfo.clientHeight;\n  for (var i = 0; i < layoutInfo.nodeSize; i++) {\n    var n = layoutInfo.layoutNodes[i];\n\n    // No need to randomize compound nodes or locked nodes\n    if (0 === n.children.length && !n.isLocked) {\n      n.positionX = Math.random() * width;\n      n.positionY = Math.random() * height;\n    }\n  }\n};\nvar getScaleInBoundsFn = function getScaleInBoundsFn(layoutInfo, options, nodes) {\n  var bb = layoutInfo.boundingBox;\n  var coseBB = {\n    x1: Infinity,\n    x2: -Infinity,\n    y1: Infinity,\n    y2: -Infinity\n  };\n  if (options.boundingBox) {\n    nodes.forEach(function (node) {\n      var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node.data('id')]];\n      coseBB.x1 = Math.min(coseBB.x1, lnode.positionX);\n      coseBB.x2 = Math.max(coseBB.x2, lnode.positionX);\n      coseBB.y1 = Math.min(coseBB.y1, lnode.positionY);\n      coseBB.y2 = Math.max(coseBB.y2, lnode.positionY);\n    });\n    coseBB.w = coseBB.x2 - coseBB.x1;\n    coseBB.h = coseBB.y2 - coseBB.y1;\n  }\n  return function (ele, i) {\n    var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data('id')]];\n    if (options.boundingBox) {\n      // then add extra bounding box constraint\n      // Handle single node case where coseBB.w or coseBB.h is 0\n      var pctX = coseBB.w === 0 ? 0.5 : (lnode.positionX - coseBB.x1) / coseBB.w;\n      var pctY = coseBB.h === 0 ? 0.5 : (lnode.positionY - coseBB.y1) / coseBB.h;\n      return {\n        x: bb.x1 + pctX * bb.w,\n        y: bb.y1 + pctY * bb.h\n      };\n    } else {\n      return {\n        x: lnode.positionX,\n        y: lnode.positionY\n      };\n    }\n  };\n};\n\n/**\n * @brief          : Updates the positions of nodes in the network\n * @arg layoutInfo : LayoutInfo object\n * @arg cy         : Cytoscape object\n * @arg options    : Layout options\n */\nvar refreshPositions = function refreshPositions(layoutInfo, cy, options) {\n  // var s = 'Refreshing positions';\n  // logDebug(s);\n\n  var layout = options.layout;\n  var nodes = options.eles.nodes();\n  var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);\n  nodes.positions(getScaledPos);\n\n  // Trigger layoutReady only on first call\n  if (true !== layoutInfo.ready) {\n    // s = 'Triggering layoutready';\n    // logDebug(s);\n    layoutInfo.ready = true;\n    layout.one('layoutready', options.ready);\n    layout.emit({\n      type: 'layoutready',\n      layout: this\n    });\n  }\n};\n\n/**\n * @brief : Logs a debug message in JS console, if DEBUG is ON\n */\n// var logDebug = function(text) {\n//   if (DEBUG) {\n//     console.debug(text);\n//   }\n// };\n\n/**\n * @brief          : Performs one iteration of the physical simulation\n * @arg layoutInfo : LayoutInfo object already initialized\n * @arg cy         : Cytoscape object\n * @arg options    : Layout options\n */\nvar step = function step(layoutInfo, options, _step) {\n  // var s = \"\\n\\n###############################\";\n  // s += \"\\nSTEP: \" + step;\n  // s += \"\\n###############################\\n\";\n  // logDebug(s);\n\n  // Calculate node repulsions\n  calculateNodeForces(layoutInfo, options);\n  // Calculate edge forces\n  calculateEdgeForces(layoutInfo);\n  // Calculate gravity forces\n  calculateGravityForces(layoutInfo, options);\n  // Propagate forces from parent to child\n  propagateForces(layoutInfo);\n  // Update positions based on calculated forces\n  updatePositions(layoutInfo);\n};\n\n/**\n * @brief : Computes the node repulsion forces\n */\nvar calculateNodeForces = function calculateNodeForces(layoutInfo, options) {\n  // Go through each of the graphs in graphSet\n  // Nodes only repel each other if they belong to the same graph\n  // var s = 'calculateNodeForces';\n  // logDebug(s);\n  for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n    var graph = layoutInfo.graphSet[i];\n    var numNodes = graph.length;\n\n    // s = \"Set: \" + graph.toString();\n    // logDebug(s);\n\n    // Now get all the pairs of nodes\n    // Only get each pair once, (A, B) = (B, A)\n    for (var j = 0; j < numNodes; j++) {\n      var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]];\n      for (var k = j + 1; k < numNodes; k++) {\n        var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k]]];\n        nodeRepulsion(node1, node2, layoutInfo, options);\n      }\n    }\n  }\n};\nvar randomDistance = function randomDistance(max) {\n  return -1 + 2 * max * Math.random();\n};\n\n/**\n * @brief : Compute the node repulsion forces between a pair of nodes\n */\nvar nodeRepulsion = function nodeRepulsion(node1, node2, layoutInfo, options) {\n  // var s = \"Node repulsion. Node1: \" + node1.id + \" Node2: \" + node2.id;\n\n  var cmptId1 = node1.cmptId;\n  var cmptId2 = node2.cmptId;\n  if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) {\n    return;\n  }\n\n  // Get direction of line connecting both node centers\n  var directionX = node2.positionX - node1.positionX;\n  var directionY = node2.positionY - node1.positionY;\n  var maxRandDist = 1;\n  // s += \"\\ndirectionX: \" + directionX + \", directionY: \" + directionY;\n\n  // If both centers are the same, apply a random force\n  if (0 === directionX && 0 === directionY) {\n    directionX = randomDistance(maxRandDist);\n    directionY = randomDistance(maxRandDist);\n  }\n  var overlap = nodesOverlap(node1, node2, directionX, directionY);\n  if (overlap > 0) {\n    // s += \"\\nNodes DO overlap.\";\n    // s += \"\\nOverlap: \" + overlap;\n    // If nodes overlap, repulsion force is proportional\n    // to the overlap\n    var force = options.nodeOverlap * overlap;\n\n    // Compute the module and components of the force vector\n    var distance = Math.sqrt(directionX * directionX + directionY * directionY);\n    // s += \"\\nDistance: \" + distance;\n    var forceX = force * directionX / distance;\n    var forceY = force * directionY / distance;\n  } else {\n    // s += \"\\nNodes do NOT overlap.\";\n    // If there's no overlap, force is inversely proportional\n    // to squared distance\n\n    // Get clipping points for both nodes\n    var point1 = findClippingPoint(node1, directionX, directionY);\n    var point2 = findClippingPoint(node2, -1 * directionX, -1 * directionY);\n\n    // Use clipping points to compute distance\n    var distanceX = point2.x - point1.x;\n    var distanceY = point2.y - point1.y;\n    var distanceSqr = distanceX * distanceX + distanceY * distanceY;\n    var distance = Math.sqrt(distanceSqr);\n    // s += \"\\nDistance: \" + distance;\n\n    // Compute the module and components of the force vector\n    var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr;\n    var forceX = force * distanceX / distance;\n    var forceY = force * distanceY / distance;\n  }\n\n  // Apply force\n  if (!node1.isLocked) {\n    node1.offsetX -= forceX;\n    node1.offsetY -= forceY;\n  }\n  if (!node2.isLocked) {\n    node2.offsetX += forceX;\n    node2.offsetY += forceY;\n  }\n\n  // s += \"\\nForceX: \" + forceX + \" ForceY: \" + forceY;\n  // logDebug(s);\n\n  return;\n};\n\n/**\n * @brief  : Determines whether two nodes overlap or not\n * @return : Amount of overlapping (0 => no overlap)\n */\nvar nodesOverlap = function nodesOverlap(node1, node2, dX, dY) {\n  if (dX > 0) {\n    var overlapX = node1.maxX - node2.minX;\n  } else {\n    var overlapX = node2.maxX - node1.minX;\n  }\n  if (dY > 0) {\n    var overlapY = node1.maxY - node2.minY;\n  } else {\n    var overlapY = node2.maxY - node1.minY;\n  }\n  if (overlapX >= 0 && overlapY >= 0) {\n    return Math.sqrt(overlapX * overlapX + overlapY * overlapY);\n  } else {\n    return 0;\n  }\n};\n\n/**\n * @brief : Finds the point in which an edge (direction dX, dY) intersects\n *          the rectangular bounding box of it's source/target node\n */\nvar findClippingPoint = function findClippingPoint(node, dX, dY) {\n  // Shorcuts\n  var X = node.positionX;\n  var Y = node.positionY;\n  var H = node.height || 1;\n  var W = node.width || 1;\n  var dirSlope = dY / dX;\n  var nodeSlope = H / W;\n\n  // var s = 'Computing clipping point of node ' + node.id +\n  //   \" . Height:  \" + H + \", Width: \" + W +\n  //   \"\\nDirection \" + dX + \", \" + dY;\n  //\n  // Compute intersection\n  var res = {};\n\n  // Case: Vertical direction (up)\n  if (0 === dX && 0 < dY) {\n    res.x = X;\n    // s += \"\\nUp direction\";\n    res.y = Y + H / 2;\n    return res;\n  }\n\n  // Case: Vertical direction (down)\n  if (0 === dX && 0 > dY) {\n    res.x = X;\n    res.y = Y + H / 2;\n    // s += \"\\nDown direction\";\n\n    return res;\n  }\n\n  // Case: Intersects the right border\n  if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {\n    res.x = X + W / 2;\n    res.y = Y + W * dY / 2 / dX;\n    // s += \"\\nRightborder\";\n\n    return res;\n  }\n\n  // Case: Intersects the left border\n  if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {\n    res.x = X - W / 2;\n    res.y = Y - W * dY / 2 / dX;\n    // s += \"\\nLeftborder\";\n\n    return res;\n  }\n\n  // Case: Intersects the top border\n  if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {\n    res.x = X + H * dX / 2 / dY;\n    res.y = Y + H / 2;\n    // s += \"\\nTop border\";\n\n    return res;\n  }\n\n  // Case: Intersects the bottom border\n  if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {\n    res.x = X - H * dX / 2 / dY;\n    res.y = Y - H / 2;\n    // s += \"\\nBottom border\";\n\n    return res;\n  }\n\n  // s += \"\\nClipping point found at \" + res.x + \", \" + res.y;\n  // logDebug(s);\n  return res;\n};\n\n/**\n * @brief : Calculates all edge forces\n */\nvar calculateEdgeForces = function calculateEdgeForces(layoutInfo, options) {\n  // Iterate over all edges\n  for (var i = 0; i < layoutInfo.edgeSize; i++) {\n    // Get edge, source & target nodes\n    var edge = layoutInfo.layoutEdges[i];\n    var sourceIx = layoutInfo.idToIndex[edge.sourceId];\n    var source = layoutInfo.layoutNodes[sourceIx];\n    var targetIx = layoutInfo.idToIndex[edge.targetId];\n    var target = layoutInfo.layoutNodes[targetIx];\n\n    // Get direction of line connecting both node centers\n    var directionX = target.positionX - source.positionX;\n    var directionY = target.positionY - source.positionY;\n\n    // If both centers are the same, do nothing.\n    // A random force has already been applied as node repulsion\n    if (0 === directionX && 0 === directionY) {\n      continue;\n    }\n\n    // Get clipping points for both nodes\n    var point1 = findClippingPoint(source, directionX, directionY);\n    var point2 = findClippingPoint(target, -1 * directionX, -1 * directionY);\n    var lx = point2.x - point1.x;\n    var ly = point2.y - point1.y;\n    var l = Math.sqrt(lx * lx + ly * ly);\n    var force = Math.pow(edge.idealLength - l, 2) / edge.elasticity;\n    if (0 !== l) {\n      var forceX = force * lx / l;\n      var forceY = force * ly / l;\n    } else {\n      var forceX = 0;\n      var forceY = 0;\n    }\n\n    // Add this force to target and source nodes\n    if (!source.isLocked) {\n      source.offsetX += forceX;\n      source.offsetY += forceY;\n    }\n    if (!target.isLocked) {\n      target.offsetX -= forceX;\n      target.offsetY -= forceY;\n    }\n\n    // var s = 'Edge force between nodes ' + source.id + ' and ' + target.id;\n    // s += \"\\nDistance: \" + l + \" Force: (\" + forceX + \", \" + forceY + \")\";\n    // logDebug(s);\n  }\n};\n\n/**\n * @brief : Computes gravity forces for all nodes\n */\nvar calculateGravityForces = function calculateGravityForces(layoutInfo, options) {\n  if (options.gravity === 0) {\n    return;\n  }\n  var distThreshold = 1;\n\n  // var s = 'calculateGravityForces';\n  // logDebug(s);\n  for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n    var graph = layoutInfo.graphSet[i];\n    var numNodes = graph.length;\n\n    // s = \"Set: \" + graph.toString();\n    // logDebug(s);\n\n    // Compute graph center\n    if (0 === i) {\n      var centerX = layoutInfo.clientHeight / 2;\n      var centerY = layoutInfo.clientWidth / 2;\n    } else {\n      // Get Parent node for this graph, and use its position as center\n      var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]];\n      var parent = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]];\n      var centerX = parent.positionX;\n      var centerY = parent.positionY;\n    }\n    // s = \"Center found at: \" + centerX + \", \" + centerY;\n    // logDebug(s);\n\n    // Apply force to all nodes in graph\n    for (var j = 0; j < numNodes; j++) {\n      var node = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]];\n      // s = \"Node: \" + node.id;\n\n      if (node.isLocked) {\n        continue;\n      }\n      var dx = centerX - node.positionX;\n      var dy = centerY - node.positionY;\n      var d = Math.sqrt(dx * dx + dy * dy);\n      if (d > distThreshold) {\n        var fx = options.gravity * dx / d;\n        var fy = options.gravity * dy / d;\n        node.offsetX += fx;\n        node.offsetY += fy;\n        // s += \": Applied force: \" + fx + \", \" + fy;\n      }\n      // logDebug(s);\n    }\n  }\n};\n\n/**\n * @brief          : This function propagates the existing offsets from\n *                   parent nodes to its descendents.\n * @arg layoutInfo : layoutInfo Object\n * @arg cy         : cytoscape Object\n * @arg options    : Layout options\n */\nvar propagateForces = function propagateForces(layoutInfo, options) {\n  // Inline implementation of a queue, used for traversing the graph in BFS order\n  var queue = [];\n  var start = 0; // Points to the start the queue\n  var end = -1; // Points to the end of the queue\n\n  // logDebug('propagateForces');\n\n  // Start by visiting the nodes in the root graph\n  queue.push.apply(queue, layoutInfo.graphSet[0]);\n  end += layoutInfo.graphSet[0].length;\n\n  // Traverse the graph, level by level,\n  while (start <= end) {\n    // Get the node to visit and remove it from queue\n    var nodeId = queue[start++];\n    var nodeIndex = layoutInfo.idToIndex[nodeId];\n    var node = layoutInfo.layoutNodes[nodeIndex];\n    var children = node.children;\n\n    // We only need to process the node if it's compound\n    if (0 < children.length && !node.isLocked) {\n      var offX = node.offsetX;\n      var offY = node.offsetY;\n\n      // var s = \"Propagating offset from parent node : \" + node.id +\n      //   \". OffsetX: \" + offX + \". OffsetY: \" + offY;\n      // s += \"\\n Children: \" + children.toString();\n      // logDebug(s);\n\n      for (var i = 0; i < children.length; i++) {\n        var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children[i]]];\n        // Propagate offset\n        childNode.offsetX += offX;\n        childNode.offsetY += offY;\n        // Add children to queue to be visited\n        queue[++end] = children[i];\n      }\n\n      // Reset parent offsets\n      node.offsetX = 0;\n      node.offsetY = 0;\n    }\n  }\n};\n\n/**\n * @brief : Updates the layout model positions, based on\n *          the accumulated forces\n */\nvar updatePositions = function updatePositions(layoutInfo, options) {\n  // var s = 'Updating positions';\n  // logDebug(s);\n\n  // Reset boundaries for compound nodes\n  for (var i = 0; i < layoutInfo.nodeSize; i++) {\n    var n = layoutInfo.layoutNodes[i];\n    if (0 < n.children.length) {\n      // logDebug(\"Resetting boundaries of compound node: \" + n.id);\n      n.maxX = undefined;\n      n.minX = undefined;\n      n.maxY = undefined;\n      n.minY = undefined;\n    }\n  }\n  for (var i = 0; i < layoutInfo.nodeSize; i++) {\n    var n = layoutInfo.layoutNodes[i];\n    if (0 < n.children.length || n.isLocked) {\n      // No need to set compound or locked node position\n      // logDebug(\"Skipping position update of node: \" + n.id);\n      continue;\n    }\n    // s = \"Node: \" + n.id + \" Previous position: (\" +\n    // n.positionX + \", \" + n.positionY + \").\";\n\n    // Limit displacement in order to improve stability\n    var tempForce = limitForce(n.offsetX, n.offsetY, layoutInfo.temperature);\n    n.positionX += tempForce.x;\n    n.positionY += tempForce.y;\n    n.offsetX = 0;\n    n.offsetY = 0;\n    n.minX = n.positionX - n.width;\n    n.maxX = n.positionX + n.width;\n    n.minY = n.positionY - n.height;\n    n.maxY = n.positionY + n.height;\n    // s += \" New Position: (\" + n.positionX + \", \" + n.positionY + \").\";\n    // logDebug(s);\n\n    // Update ancestry boudaries\n    _updateAncestryBoundaries(n, layoutInfo);\n  }\n\n  // Update size, position of compund nodes\n  for (var i = 0; i < layoutInfo.nodeSize; i++) {\n    var n = layoutInfo.layoutNodes[i];\n    if (0 < n.children.length && !n.isLocked) {\n      n.positionX = (n.maxX + n.minX) / 2;\n      n.positionY = (n.maxY + n.minY) / 2;\n      n.width = n.maxX - n.minX;\n      n.height = n.maxY - n.minY;\n      // s = \"Updating position, size of compound node \" + n.id;\n      // s += \"\\nPositionX: \" + n.positionX + \", PositionY: \" + n.positionY;\n      // s += \"\\nWidth: \" + n.width + \", Height: \" + n.height;\n      // logDebug(s);\n    }\n  }\n};\n\n/**\n * @brief : Limits a force (forceX, forceY) to be not\n *          greater (in modulo) than max.\n 8          Preserves force direction.\n  */\nvar limitForce = function limitForce(forceX, forceY, max) {\n  // var s = \"Limiting force: (\" + forceX + \", \" + forceY + \"). Max: \" + max;\n  var force = Math.sqrt(forceX * forceX + forceY * forceY);\n  if (force > max) {\n    var res = {\n      x: max * forceX / force,\n      y: max * forceY / force\n    };\n  } else {\n    var res = {\n      x: forceX,\n      y: forceY\n    };\n  }\n\n  // s += \".\\nResult: (\" + res.x + \", \" + res.y + \")\";\n  // logDebug(s);\n\n  return res;\n};\n\n/**\n * @brief : Function used for keeping track of compound node\n *          sizes, since they should bound all their subnodes.\n */\nvar _updateAncestryBoundaries = function updateAncestryBoundaries(node, layoutInfo) {\n  // var s = \"Propagating new position/size of node \" + node.id;\n  var parentId = node.parentId;\n  if (null == parentId) {\n    // If there's no parent, we are done\n    // s += \". No parent node.\";\n    // logDebug(s);\n    return;\n  }\n\n  // Get Parent Node\n  var p = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]];\n  var flag = false;\n\n  // MaxX\n  if (null == p.maxX || node.maxX + p.padRight > p.maxX) {\n    p.maxX = node.maxX + p.padRight;\n    flag = true;\n    // s += \"\\nNew maxX for parent node \" + p.id + \": \" + p.maxX;\n  }\n\n  // MinX\n  if (null == p.minX || node.minX - p.padLeft < p.minX) {\n    p.minX = node.minX - p.padLeft;\n    flag = true;\n    // s += \"\\nNew minX for parent node \" + p.id + \": \" + p.minX;\n  }\n\n  // MaxY\n  if (null == p.maxY || node.maxY + p.padBottom > p.maxY) {\n    p.maxY = node.maxY + p.padBottom;\n    flag = true;\n    // s += \"\\nNew maxY for parent node \" + p.id + \": \" + p.maxY;\n  }\n\n  // MinY\n  if (null == p.minY || node.minY - p.padTop < p.minY) {\n    p.minY = node.minY - p.padTop;\n    flag = true;\n    // s += \"\\nNew minY for parent node \" + p.id + \": \" + p.minY;\n  }\n\n  // If updated boundaries, propagate changes upward\n  if (flag) {\n    // logDebug(s);\n    return _updateAncestryBoundaries(p, layoutInfo);\n  }\n\n  // s += \". No changes in boundaries/position of parent node \" + p.id;\n  // logDebug(s);\n  return;\n};\nvar separateComponents = function separateComponents(layoutInfo, options) {\n  var nodes = layoutInfo.layoutNodes;\n  var components = [];\n  for (var i = 0; i < nodes.length; i++) {\n    var node = nodes[i];\n    var cid = node.cmptId;\n    var component = components[cid] = components[cid] || [];\n    component.push(node);\n  }\n  var totalA = 0;\n  for (var i = 0; i < components.length; i++) {\n    var c = components[i];\n    if (!c) {\n      continue;\n    }\n    c.x1 = Infinity;\n    c.x2 = -Infinity;\n    c.y1 = Infinity;\n    c.y2 = -Infinity;\n    for (var j = 0; j < c.length; j++) {\n      var n = c[j];\n      c.x1 = Math.min(c.x1, n.positionX - n.width / 2);\n      c.x2 = Math.max(c.x2, n.positionX + n.width / 2);\n      c.y1 = Math.min(c.y1, n.positionY - n.height / 2);\n      c.y2 = Math.max(c.y2, n.positionY + n.height / 2);\n    }\n    c.w = c.x2 - c.x1;\n    c.h = c.y2 - c.y1;\n    totalA += c.w * c.h;\n  }\n  components.sort(function (c1, c2) {\n    return c2.w * c2.h - c1.w * c1.h;\n  });\n  var x = 0;\n  var y = 0;\n  var usedW = 0;\n  var rowH = 0;\n  var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight;\n  for (var i = 0; i < components.length; i++) {\n    var c = components[i];\n    if (!c) {\n      continue;\n    }\n    for (var j = 0; j < c.length; j++) {\n      var n = c[j];\n      if (!n.isLocked) {\n        n.positionX += x - c.x1;\n        n.positionY += y - c.y1;\n      }\n    }\n    x += c.w + options.componentSpacing;\n    usedW += c.w + options.componentSpacing;\n    rowH = Math.max(rowH, c.h);\n    if (usedW > maxRowW) {\n      y += rowH + options.componentSpacing;\n      x = 0;\n      usedW = 0;\n      rowH = 0;\n    }\n  }\n};\n\nvar defaults$3 = {\n  fit: true,\n  // whether to fit the viewport to the graph\n  padding: 30,\n  // padding used on fit\n  boundingBox: undefined,\n  // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n  avoidOverlap: true,\n  // prevents node overlap, may overflow boundingBox if not enough space\n  avoidOverlapPadding: 10,\n  // extra spacing around nodes when avoidOverlap: true\n  nodeDimensionsIncludeLabels: false,\n  // Excludes the label when calculating node bounding boxes for the layout algorithm\n  spacingFactor: undefined,\n  // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n  condense: false,\n  // uses all available space on false, uses minimal space on true\n  rows: undefined,\n  // force num of rows in the grid\n  cols: undefined,\n  // force num of columns in the grid\n  position: function position(node) {},\n  // returns { row, col } for element\n  sort: undefined,\n  // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n  animate: false,\n  // whether to transition the node positions\n  animationDuration: 500,\n  // duration of animation in ms if enabled\n  animationEasing: undefined,\n  // easing of animation if enabled\n  animateFilter: function animateFilter(node, i) {\n    return true;\n  },\n  // a function that determines whether the node should be animated.  All nodes animated by default on animate enabled.  Non-animated nodes are positioned immediately when the layout starts\n  ready: undefined,\n  // callback on layoutready\n  stop: undefined,\n  // callback on layoutstop\n  transform: function transform(node, position) {\n    return position;\n  } // transform a given node position. Useful for changing flow direction in discrete layouts \n};\nfunction GridLayout(options) {\n  this.options = extend({}, defaults$3, options);\n}\nGridLayout.prototype.run = function () {\n  var params = this.options;\n  var options = params;\n  var cy = params.cy;\n  var eles = options.eles;\n  var nodes = eles.nodes().not(':parent');\n  if (options.sort) {\n    nodes = nodes.sort(options.sort);\n  }\n  var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n    x1: 0,\n    y1: 0,\n    w: cy.width(),\n    h: cy.height()\n  });\n  if (bb.h === 0 || bb.w === 0) {\n    eles.nodes().layoutPositions(this, options, function (ele) {\n      return {\n        x: bb.x1,\n        y: bb.y1\n      };\n    });\n  } else {\n    // width/height * splits^2 = cells where splits is number of times to split width\n    var cells = nodes.size();\n    var splits = Math.sqrt(cells * bb.h / bb.w);\n    var rows = Math.round(splits);\n    var cols = Math.round(bb.w / bb.h * splits);\n    var small = function small(val) {\n      if (val == null) {\n        return Math.min(rows, cols);\n      } else {\n        var min = Math.min(rows, cols);\n        if (min == rows) {\n          rows = val;\n        } else {\n          cols = val;\n        }\n      }\n    };\n    var large = function large(val) {\n      if (val == null) {\n        return Math.max(rows, cols);\n      } else {\n        var max = Math.max(rows, cols);\n        if (max == rows) {\n          rows = val;\n        } else {\n          cols = val;\n        }\n      }\n    };\n    var oRows = options.rows;\n    var oCols = options.cols != null ? options.cols : options.columns;\n\n    // if rows or columns were set in options, use those values\n    if (oRows != null && oCols != null) {\n      rows = oRows;\n      cols = oCols;\n    } else if (oRows != null && oCols == null) {\n      rows = oRows;\n      cols = Math.ceil(cells / rows);\n    } else if (oRows == null && oCols != null) {\n      cols = oCols;\n      rows = Math.ceil(cells / cols);\n    }\n\n    // otherwise use the automatic values and adjust accordingly\n\n    // if rounding was up, see if we can reduce rows or columns\n    else if (cols * rows > cells) {\n      var sm = small();\n      var lg = large();\n\n      // reducing the small side takes away the most cells, so try it first\n      if ((sm - 1) * lg >= cells) {\n        small(sm - 1);\n      } else if ((lg - 1) * sm >= cells) {\n        large(lg - 1);\n      }\n    } else {\n      // if rounding was too low, add rows or columns\n      while (cols * rows < cells) {\n        var _sm = small();\n        var _lg = large();\n\n        // try to add to larger side first (adds less in multiplication)\n        if ((_lg + 1) * _sm >= cells) {\n          large(_lg + 1);\n        } else {\n          small(_sm + 1);\n        }\n      }\n    }\n    var cellWidth = bb.w / cols;\n    var cellHeight = bb.h / rows;\n    if (options.condense) {\n      cellWidth = 0;\n      cellHeight = 0;\n    }\n    if (options.avoidOverlap) {\n      for (var i = 0; i < nodes.length; i++) {\n        var node = nodes[i];\n        var pos = node._private.position;\n        if (pos.x == null || pos.y == null) {\n          // for bb\n          pos.x = 0;\n          pos.y = 0;\n        }\n        var nbb = node.layoutDimensions(options);\n        var p = options.avoidOverlapPadding;\n        var w = nbb.w + p;\n        var h = nbb.h + p;\n        cellWidth = Math.max(cellWidth, w);\n        cellHeight = Math.max(cellHeight, h);\n      }\n    }\n    var cellUsed = {}; // e.g. 'c-0-2' => true\n\n    var used = function used(row, col) {\n      return cellUsed['c-' + row + '-' + col] ? true : false;\n    };\n    var use = function use(row, col) {\n      cellUsed['c-' + row + '-' + col] = true;\n    };\n\n    // to keep track of current cell position\n    var row = 0;\n    var col = 0;\n    var moveToNextCell = function moveToNextCell() {\n      col++;\n      if (col >= cols) {\n        col = 0;\n        row++;\n      }\n    };\n\n    // get a cache of all the manual positions\n    var id2manPos = {};\n    for (var _i = 0; _i < nodes.length; _i++) {\n      var _node = nodes[_i];\n      var rcPos = options.position(_node);\n      if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) {\n        // must have at least row or col def'd\n        var _pos = {\n          row: rcPos.row,\n          col: rcPos.col\n        };\n        if (_pos.col === undefined) {\n          // find unused col\n          _pos.col = 0;\n          while (used(_pos.row, _pos.col)) {\n            _pos.col++;\n          }\n        } else if (_pos.row === undefined) {\n          // find unused row\n          _pos.row = 0;\n          while (used(_pos.row, _pos.col)) {\n            _pos.row++;\n          }\n        }\n        id2manPos[_node.id()] = _pos;\n        use(_pos.row, _pos.col);\n      }\n    }\n    var getPos = function getPos(element, i) {\n      var x, y;\n      if (element.locked() || element.isParent()) {\n        return false;\n      }\n\n      // see if we have a manual position set\n      var rcPos = id2manPos[element.id()];\n      if (rcPos) {\n        x = rcPos.col * cellWidth + cellWidth / 2 + bb.x1;\n        y = rcPos.row * cellHeight + cellHeight / 2 + bb.y1;\n      } else {\n        // otherwise set automatically\n\n        while (used(row, col)) {\n          moveToNextCell();\n        }\n        x = col * cellWidth + cellWidth / 2 + bb.x1;\n        y = row * cellHeight + cellHeight / 2 + bb.y1;\n        use(row, col);\n        moveToNextCell();\n      }\n      return {\n        x: x,\n        y: y\n      };\n    };\n    nodes.layoutPositions(this, options, getPos);\n  }\n  return this; // chaining\n};\n\n// default layout options\nvar defaults$2 = {\n  ready: function ready() {},\n  // on layoutready\n  stop: function stop() {} // on layoutstop\n};\n\n// constructor\n// options : object containing layout options\nfunction NullLayout(options) {\n  this.options = extend({}, defaults$2, options);\n}\n\n// runs the layout\nNullLayout.prototype.run = function () {\n  var options = this.options;\n  var eles = options.eles; // elements to consider in the layout\n  var layout = this;\n\n  // cy is automatically populated for us in the constructor\n  // (disable eslint for next line as this serves as example layout code to external developers)\n  // eslint-disable-next-line no-unused-vars\n  options.cy;\n  layout.emit('layoutstart');\n\n  // puts all nodes at (0, 0)\n  // n.b. most layouts would use layoutPositions(), instead of positions() and manual events\n  eles.nodes().positions(function () {\n    return {\n      x: 0,\n      y: 0\n    };\n  });\n\n  // trigger layoutready when each node has had its position set at least once\n  layout.one('layoutready', options.ready);\n  layout.emit('layoutready');\n\n  // trigger layoutstop when the layout stops (e.g. finishes)\n  layout.one('layoutstop', options.stop);\n  layout.emit('layoutstop');\n  return this; // chaining\n};\n\n// called on continuous layouts to stop them before they finish\nNullLayout.prototype.stop = function () {\n  return this; // chaining\n};\n\nvar defaults$1 = {\n  positions: undefined,\n  // map of (node id) => (position obj); or function(node){ return somPos; }\n  zoom: undefined,\n  // the zoom level to set (prob want fit = false if set)\n  pan: undefined,\n  // the pan level to set (prob want fit = false if set)\n  fit: true,\n  // whether to fit to viewport\n  padding: 30,\n  // padding on fit\n  spacingFactor: undefined,\n  // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n  animate: false,\n  // whether to transition the node positions\n  animationDuration: 500,\n  // duration of animation in ms if enabled\n  animationEasing: undefined,\n  // easing of animation if enabled\n  animateFilter: function animateFilter(node, i) {\n    return true;\n  },\n  // a function that determines whether the node should be animated.  All nodes animated by default on animate enabled.  Non-animated nodes are positioned immediately when the layout starts\n  ready: undefined,\n  // callback on layoutready\n  stop: undefined,\n  // callback on layoutstop\n  transform: function transform(node, position) {\n    return position;\n  } // transform a given node position. Useful for changing flow direction in discrete layouts\n};\nfunction PresetLayout(options) {\n  this.options = extend({}, defaults$1, options);\n}\nPresetLayout.prototype.run = function () {\n  var options = this.options;\n  var eles = options.eles;\n  var nodes = eles.nodes();\n  var posIsFn = fn$6(options.positions);\n  function getPosition(node) {\n    if (options.positions == null) {\n      return copyPosition(node.position());\n    }\n    if (posIsFn) {\n      return options.positions(node);\n    }\n    var pos = options.positions[node._private.data.id];\n    if (pos == null) {\n      return null;\n    }\n    return pos;\n  }\n  nodes.layoutPositions(this, options, function (node, i) {\n    var position = getPosition(node);\n    if (node.locked() || position == null) {\n      return false;\n    }\n    return position;\n  });\n  return this; // chaining\n};\n\nvar defaults = {\n  fit: true,\n  // whether to fit to viewport\n  padding: 30,\n  // fit padding\n  boundingBox: undefined,\n  // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n  animate: false,\n  // whether to transition the node positions\n  animationDuration: 500,\n  // duration of animation in ms if enabled\n  animationEasing: undefined,\n  // easing of animation if enabled\n  animateFilter: function animateFilter(node, i) {\n    return true;\n  },\n  // a function that determines whether the node should be animated.  All nodes animated by default on animate enabled.  Non-animated nodes are positioned immediately when the layout starts\n  ready: undefined,\n  // callback on layoutready\n  stop: undefined,\n  // callback on layoutstop\n  transform: function transform(node, position) {\n    return position;\n  } // transform a given node position. Useful for changing flow direction in discrete layouts \n};\nfunction RandomLayout(options) {\n  this.options = extend({}, defaults, options);\n}\nRandomLayout.prototype.run = function () {\n  var options = this.options;\n  var cy = options.cy;\n  var eles = options.eles;\n  var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n    x1: 0,\n    y1: 0,\n    w: cy.width(),\n    h: cy.height()\n  });\n  var getPos = function getPos(node, i) {\n    return {\n      x: bb.x1 + Math.round(Math.random() * bb.w),\n      y: bb.y1 + Math.round(Math.random() * bb.h)\n    };\n  };\n  eles.nodes().layoutPositions(this, options, getPos);\n  return this; // chaining\n};\n\nvar layout = [{\n  name: 'breadthfirst',\n  impl: BreadthFirstLayout\n}, {\n  name: 'circle',\n  impl: CircleLayout\n}, {\n  name: 'concentric',\n  impl: ConcentricLayout\n}, {\n  name: 'cose',\n  impl: CoseLayout\n}, {\n  name: 'grid',\n  impl: GridLayout\n}, {\n  name: 'null',\n  impl: NullLayout\n}, {\n  name: 'preset',\n  impl: PresetLayout\n}, {\n  name: 'random',\n  impl: RandomLayout\n}];\n\nfunction NullRenderer(options) {\n  this.options = options;\n  this.notifications = 0; // for testing\n}\nvar noop = function noop() {};\nvar throwImgErr = function throwImgErr() {\n  throw new Error('A headless instance can not render images');\n};\nNullRenderer.prototype = {\n  recalculateRenderedStyle: noop,\n  notify: function notify() {\n    this.notifications++;\n  },\n  init: noop,\n  isHeadless: function isHeadless() {\n    return true;\n  },\n  png: throwImgErr,\n  jpg: throwImgErr\n};\n\nvar BRp$f = {};\nBRp$f.arrowShapeWidth = 0.3;\nBRp$f.registerArrowShapes = function () {\n  var arrowShapes = this.arrowShapes = {};\n  var renderer = this;\n\n  // Contract for arrow shapes:\n  // 0, 0 is arrow tip\n  // (0, 1) is direction towards node\n  // (1, 0) is right\n  //\n  // functional api:\n  // collide: check x, y in shape\n  // roughCollide: called before collide, no false negatives\n  // draw: draw\n  // spacing: dist(arrowTip, nodeBoundary)\n  // gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip\n\n  var bbCollide = function bbCollide(x, y, size, angle, translation, edgeWidth, padding) {\n    var x1 = translation.x - size / 2 - padding;\n    var x2 = translation.x + size / 2 + padding;\n    var y1 = translation.y - size / 2 - padding;\n    var y2 = translation.y + size / 2 + padding;\n    var inside = x1 <= x && x <= x2 && y1 <= y && y <= y2;\n    return inside;\n  };\n  var transform = function transform(x, y, size, angle, translation) {\n    var xRotated = x * Math.cos(angle) - y * Math.sin(angle);\n    var yRotated = x * Math.sin(angle) + y * Math.cos(angle);\n    var xScaled = xRotated * size;\n    var yScaled = yRotated * size;\n    var xTranslated = xScaled + translation.x;\n    var yTranslated = yScaled + translation.y;\n    return {\n      x: xTranslated,\n      y: yTranslated\n    };\n  };\n  var transformPoints = function transformPoints(pts, size, angle, translation) {\n    var retPts = [];\n    for (var i = 0; i < pts.length; i += 2) {\n      var x = pts[i];\n      var y = pts[i + 1];\n      retPts.push(transform(x, y, size, angle, translation));\n    }\n    return retPts;\n  };\n  var pointsToArr = function pointsToArr(pts) {\n    var ret = [];\n    for (var i = 0; i < pts.length; i++) {\n      var p = pts[i];\n      ret.push(p.x, p.y);\n    }\n    return ret;\n  };\n  var standardGap = function standardGap(edge) {\n    return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').pfValue * 2;\n  };\n  var defineArrowShape = function defineArrowShape(name, defn) {\n    if (string(defn)) {\n      defn = arrowShapes[defn];\n    }\n    arrowShapes[name] = extend({\n      name: name,\n      points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3],\n      collide: function collide(x, y, size, angle, translation, padding) {\n        var points = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n        var inside = pointInsidePolygonPoints(x, y, points);\n        return inside;\n      },\n      roughCollide: bbCollide,\n      draw: function draw(context, size, angle, translation) {\n        var points = transformPoints(this.points, size, angle, translation);\n        renderer.arrowShapeImpl('polygon')(context, points);\n      },\n      spacing: function spacing(edge) {\n        return 0;\n      },\n      gap: standardGap\n    }, defn);\n  };\n  defineArrowShape('none', {\n    collide: falsify,\n    roughCollide: falsify,\n    draw: noop$1,\n    spacing: zeroify,\n    gap: zeroify\n  });\n  defineArrowShape('triangle', {\n    points: [-0.15, -0.3, 0, 0, 0.15, -0.3]\n  });\n  defineArrowShape('arrow', 'triangle');\n  defineArrowShape('triangle-backcurve', {\n    points: arrowShapes['triangle'].points,\n    controlPoint: [0, -0.15],\n    roughCollide: bbCollide,\n    draw: function draw(context, size, angle, translation, edgeWidth) {\n      var ptsTrans = transformPoints(this.points, size, angle, translation);\n      var ctrlPt = this.controlPoint;\n      var ctrlPtTrans = transform(ctrlPt[0], ctrlPt[1], size, angle, translation);\n      renderer.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans);\n    },\n    gap: function gap(edge) {\n      return standardGap(edge) * 0.8;\n    }\n  });\n  defineArrowShape('triangle-tee', {\n    points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],\n    pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4],\n    collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n      var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n      var teePts = pointsToArr(transformPoints(this.pointsTee, size + 2 * padding, angle, translation));\n      var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);\n      return inside;\n    },\n    draw: function draw(context, size, angle, translation, edgeWidth) {\n      var triPts = transformPoints(this.points, size, angle, translation);\n      var teePts = transformPoints(this.pointsTee, size, angle, translation);\n      renderer.arrowShapeImpl(this.name)(context, triPts, teePts);\n    }\n  });\n  defineArrowShape('circle-triangle', {\n    radius: 0.15,\n    pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15],\n    collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n      var t = translation;\n      var circleInside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2);\n      var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n      return pointInsidePolygonPoints(x, y, triPts) || circleInside;\n    },\n    draw: function draw(context, size, angle, translation, edgeWidth) {\n      var triPts = transformPoints(this.pointsTr, size, angle, translation);\n      renderer.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size);\n    },\n    spacing: function spacing(edge) {\n      return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius;\n    }\n  });\n  defineArrowShape('triangle-cross', {\n    points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],\n    baseCrossLinePts: [-0.15, -0.4,\n    // first half of the rectangle\n    -0.15, -0.4, 0.15, -0.4,\n    // second half of the rectangle\n    0.15, -0.4],\n    crossLinePts: function crossLinePts(size, edgeWidth) {\n      // shift points so that the distance between the cross points matches edge width\n      var p = this.baseCrossLinePts.slice();\n      var shiftFactor = edgeWidth / size;\n      var y0 = 3;\n      var y1 = 5;\n      p[y0] = p[y0] - shiftFactor;\n      p[y1] = p[y1] - shiftFactor;\n      return p;\n    },\n    collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n      var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n      var teePts = pointsToArr(transformPoints(this.crossLinePts(size, edgeWidth), size + 2 * padding, angle, translation));\n      var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);\n      return inside;\n    },\n    draw: function draw(context, size, angle, translation, edgeWidth) {\n      var triPts = transformPoints(this.points, size, angle, translation);\n      var crossLinePts = transformPoints(this.crossLinePts(size, edgeWidth), size, angle, translation);\n      renderer.arrowShapeImpl(this.name)(context, triPts, crossLinePts);\n    }\n  });\n  defineArrowShape('vee', {\n    points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15],\n    gap: function gap(edge) {\n      return standardGap(edge) * 0.525;\n    }\n  });\n  defineArrowShape('circle', {\n    radius: 0.15,\n    collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n      var t = translation;\n      var inside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2);\n      return inside;\n    },\n    draw: function draw(context, size, angle, translation, edgeWidth) {\n      renderer.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size);\n    },\n    spacing: function spacing(edge) {\n      return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius;\n    }\n  });\n  defineArrowShape('tee', {\n    points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0],\n    spacing: function spacing(edge) {\n      return 1;\n    },\n    gap: function gap(edge) {\n      return 1;\n    }\n  });\n  defineArrowShape('square', {\n    points: [-0.15, 0.00, 0.15, 0.00, 0.15, -0.3, -0.15, -0.3]\n  });\n  defineArrowShape('diamond', {\n    points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0],\n    gap: function gap(edge) {\n      return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;\n    }\n  });\n  defineArrowShape('chevron', {\n    points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15],\n    gap: function gap(edge) {\n      return 0.95 * edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;\n    }\n  });\n};\n\nvar BRp$e = {};\n\n// Project mouse\nBRp$e.projectIntoViewport = function (clientX, clientY) {\n  var cy = this.cy;\n  var offsets = this.findContainerClientCoords();\n  var offsetLeft = offsets[0];\n  var offsetTop = offsets[1];\n  var scale = offsets[4];\n  var pan = cy.pan();\n  var zoom = cy.zoom();\n  var x = ((clientX - offsetLeft) / scale - pan.x) / zoom;\n  var y = ((clientY - offsetTop) / scale - pan.y) / zoom;\n  return [x, y];\n};\nBRp$e.findContainerClientCoords = function () {\n  if (this.containerBB) {\n    return this.containerBB;\n  }\n  var container = this.container;\n  var rect = container.getBoundingClientRect();\n  var style = this.cy.window().getComputedStyle(container);\n  var styleValue = function styleValue(name) {\n    return parseFloat(style.getPropertyValue(name));\n  };\n  var padding = {\n    left: styleValue('padding-left'),\n    right: styleValue('padding-right'),\n    top: styleValue('padding-top'),\n    bottom: styleValue('padding-bottom')\n  };\n  var border = {\n    left: styleValue('border-left-width'),\n    right: styleValue('border-right-width'),\n    top: styleValue('border-top-width'),\n    bottom: styleValue('border-bottom-width')\n  };\n  var clientWidth = container.clientWidth;\n  var clientHeight = container.clientHeight;\n  var paddingHor = padding.left + padding.right;\n  var paddingVer = padding.top + padding.bottom;\n  var borderHor = border.left + border.right;\n  var scale = rect.width / (clientWidth + borderHor);\n  var unscaledW = clientWidth - paddingHor;\n  var unscaledH = clientHeight - paddingVer;\n  var left = rect.left + padding.left + border.left;\n  var top = rect.top + padding.top + border.top;\n  return this.containerBB = [left, top, unscaledW, unscaledH, scale];\n};\nBRp$e.invalidateContainerClientCoordsCache = function () {\n  this.containerBB = null;\n};\nBRp$e.findNearestElement = function (x, y, interactiveElementsOnly, isTouch) {\n  return this.findNearestElements(x, y, interactiveElementsOnly, isTouch)[0];\n};\nBRp$e.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) {\n  var self = this;\n  var r = this;\n  var eles = r.getCachedZSortedEles();\n  var near = []; // 1 node max, 1 edge max\n  var zoom = r.cy.zoom();\n  var hasCompounds = r.cy.hasCompoundNodes();\n  var edgeThreshold = (isTouch ? 24 : 8) / zoom;\n  var nodeThreshold = (isTouch ? 8 : 2) / zoom;\n  var labelThreshold = (isTouch ? 8 : 2) / zoom;\n  var minSqDist = Infinity;\n  var nearEdge;\n  var nearNode;\n  if (interactiveElementsOnly) {\n    eles = eles.interactive;\n  }\n  function addEle(ele, sqDist) {\n    if (ele.isNode()) {\n      if (nearNode) {\n        return; // can't replace node\n      } else {\n        nearNode = ele;\n        near.push(ele);\n      }\n    }\n    if (ele.isEdge() && (sqDist == null || sqDist < minSqDist)) {\n      if (nearEdge) {\n        // then replace existing edge\n        // can replace only if same z-index\n        if (nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value && nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value) {\n          for (var i = 0; i < near.length; i++) {\n            if (near[i].isEdge()) {\n              near[i] = ele;\n              nearEdge = ele;\n              minSqDist = sqDist != null ? sqDist : minSqDist;\n              break;\n            }\n          }\n        }\n      } else {\n        near.push(ele);\n        nearEdge = ele;\n        minSqDist = sqDist != null ? sqDist : minSqDist;\n      }\n    }\n  }\n  function checkNode(node) {\n    var width = node.outerWidth() + 2 * nodeThreshold;\n    var height = node.outerHeight() + 2 * nodeThreshold;\n    var hw = width / 2;\n    var hh = height / 2;\n    var pos = node.position();\n    var cornerRadius = node.pstyle('corner-radius').value === 'auto' ? 'auto' : node.pstyle('corner-radius').pfValue;\n    var rs = node._private.rscratch;\n    if (pos.x - hw <= x && x <= pos.x + hw // bb check x\n    && pos.y - hh <= y && y <= pos.y + hh // bb check y\n    ) {\n      var shape = r.nodeShapes[self.getNodeShape(node)];\n      if (shape.checkPoint(x, y, 0, width, height, pos.x, pos.y, cornerRadius, rs)) {\n        addEle(node, 0);\n        return true;\n      }\n    }\n  }\n  function checkEdge(edge) {\n    var _p = edge._private;\n    var rs = _p.rscratch;\n    var styleWidth = edge.pstyle('width').pfValue;\n    var scale = edge.pstyle('arrow-scale').value;\n    var width = styleWidth / 2 + edgeThreshold; // more like a distance radius from centre\n    var widthSq = width * width;\n    var width2 = width * 2;\n    var src = _p.source;\n    var tgt = _p.target;\n    var sqDist;\n    if (rs.edgeType === 'segments' || rs.edgeType === 'straight' || rs.edgeType === 'haystack') {\n      var pts = rs.allpts;\n      for (var i = 0; i + 3 < pts.length; i += 2) {\n        if (inLineVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], width2) && widthSq > (sqDist = sqdistToFiniteLine(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3]))) {\n          addEle(edge, sqDist);\n          return true;\n        }\n      }\n    } else if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {\n      var pts = rs.allpts;\n      for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n        if (inBezierVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], width2) && widthSq > (sqDist = sqdistToQuadraticBezier(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5]))) {\n          addEle(edge, sqDist);\n          return true;\n        }\n      }\n    }\n\n    // if we're close to the edge but didn't hit it, maybe we hit its arrows\n\n    var src = src || _p.source;\n    var tgt = tgt || _p.target;\n    var arSize = self.getArrowWidth(styleWidth, scale);\n    var arrows = [{\n      name: 'source',\n      x: rs.arrowStartX,\n      y: rs.arrowStartY,\n      angle: rs.srcArrowAngle\n    }, {\n      name: 'target',\n      x: rs.arrowEndX,\n      y: rs.arrowEndY,\n      angle: rs.tgtArrowAngle\n    }, {\n      name: 'mid-source',\n      x: rs.midX,\n      y: rs.midY,\n      angle: rs.midsrcArrowAngle\n    }, {\n      name: 'mid-target',\n      x: rs.midX,\n      y: rs.midY,\n      angle: rs.midtgtArrowAngle\n    }];\n    for (var i = 0; i < arrows.length; i++) {\n      var ar = arrows[i];\n      var shape = r.arrowShapes[edge.pstyle(ar.name + '-arrow-shape').value];\n      var edgeWidth = edge.pstyle('width').pfValue;\n      if (shape.roughCollide(x, y, arSize, ar.angle, {\n        x: ar.x,\n        y: ar.y\n      }, edgeWidth, edgeThreshold) && shape.collide(x, y, arSize, ar.angle, {\n        x: ar.x,\n        y: ar.y\n      }, edgeWidth, edgeThreshold)) {\n        addEle(edge);\n        return true;\n      }\n    }\n\n    // for compound graphs, hitting edge may actually want a connected node instead (b/c edge may have greater z-index precedence)\n    if (hasCompounds && near.length > 0) {\n      checkNode(src);\n      checkNode(tgt);\n    }\n  }\n  function preprop(obj, name, pre) {\n    return getPrefixedProperty(obj, name, pre);\n  }\n  function checkLabel(ele, prefix) {\n    var _p = ele._private;\n    var th = labelThreshold;\n    var prefixDash;\n    if (prefix) {\n      prefixDash = prefix + '-';\n    } else {\n      prefixDash = '';\n    }\n    ele.boundingBox();\n    var bb = _p.labelBounds[prefix || 'main'];\n    var text = ele.pstyle(prefixDash + 'label').value;\n    var eventsEnabled = ele.pstyle('text-events').strValue === 'yes';\n    if (!eventsEnabled || !text) {\n      return;\n    }\n    var lx = preprop(_p.rscratch, 'labelX', prefix);\n    var ly = preprop(_p.rscratch, 'labelY', prefix);\n    var theta = preprop(_p.rscratch, 'labelAngle', prefix);\n    var ox = ele.pstyle(prefixDash + 'text-margin-x').pfValue;\n    var oy = ele.pstyle(prefixDash + 'text-margin-y').pfValue;\n    var lx1 = bb.x1 - th - ox; // (-ox, -oy) as bb already includes margin\n    var lx2 = bb.x2 + th - ox; // and rotation is about (lx, ly)\n    var ly1 = bb.y1 - th - oy;\n    var ly2 = bb.y2 + th - oy;\n    if (theta) {\n      var cos = Math.cos(theta);\n      var sin = Math.sin(theta);\n      var rotate = function rotate(x, y) {\n        x = x - lx;\n        y = y - ly;\n        return {\n          x: x * cos - y * sin + lx,\n          y: x * sin + y * cos + ly\n        };\n      };\n      var px1y1 = rotate(lx1, ly1);\n      var px1y2 = rotate(lx1, ly2);\n      var px2y1 = rotate(lx2, ly1);\n      var px2y2 = rotate(lx2, ly2);\n      var points = [\n      // with the margin added after the rotation is applied\n      px1y1.x + ox, px1y1.y + oy, px2y1.x + ox, px2y1.y + oy, px2y2.x + ox, px2y2.y + oy, px1y2.x + ox, px1y2.y + oy];\n      if (pointInsidePolygonPoints(x, y, points)) {\n        addEle(ele);\n        return true;\n      }\n    } else {\n      // do a cheaper bb check\n      if (inBoundingBox(bb, x, y)) {\n        addEle(ele);\n        return true;\n      }\n    }\n  }\n  for (var i = eles.length - 1; i >= 0; i--) {\n    // reverse order for precedence\n    var ele = eles[i];\n    if (ele.isNode()) {\n      checkNode(ele) || checkLabel(ele);\n    } else {\n      // then edge\n      checkEdge(ele) || checkLabel(ele) || checkLabel(ele, 'source') || checkLabel(ele, 'target');\n    }\n  }\n  return near;\n};\n\n// 'Give me everything from this box'\nBRp$e.getAllInBox = function (x1, y1, x2, y2) {\n  var eles = this.getCachedZSortedEles().interactive;\n  var zoom = this.cy.zoom();\n  var labelThreshold = 2 / zoom;\n  var box = [];\n  var x1c = Math.min(x1, x2);\n  var x2c = Math.max(x1, x2);\n  var y1c = Math.min(y1, y2);\n  var y2c = Math.max(y1, y2);\n  x1 = x1c;\n  x2 = x2c;\n  y1 = y1c;\n  y2 = y2c;\n  var boxBb = makeBoundingBox({\n    x1: x1,\n    y1: y1,\n    x2: x2,\n    y2: y2\n  });\n  var selectionBox = [{\n    x: boxBb.x1,\n    y: boxBb.y1\n  }, {\n    x: boxBb.x2,\n    y: boxBb.y1\n  }, {\n    x: boxBb.x2,\n    y: boxBb.y2\n  }, {\n    x: boxBb.x1,\n    y: boxBb.y2\n  }];\n  var boxEdges = [[selectionBox[0], selectionBox[1]], [selectionBox[1], selectionBox[2]], [selectionBox[2], selectionBox[3]], [selectionBox[3], selectionBox[0]]];\n  function preprop(obj, name, pre) {\n    return getPrefixedProperty(obj, name, pre);\n  }\n  function getRotatedLabelBox(ele, prefix) {\n    var _p = ele._private;\n    var th = labelThreshold;\n    var prefixDash = '';\n    ele.boundingBox();\n    var bb = _p.labelBounds['main'];\n\n    // If the bounding box is not available, return null.\n    // This indicates that the label box cannot be calculated, which is consistent\n    // with the expected behavior of this function. Returning null allows the caller\n    // to handle the absence of a bounding box explicitly.\n    if (!bb) {\n      return null;\n    }\n    var lx = preprop(_p.rscratch, 'labelX', prefix);\n    var ly = preprop(_p.rscratch, 'labelY', prefix);\n    var theta = preprop(_p.rscratch, 'labelAngle', prefix);\n    var ox = ele.pstyle(prefixDash + 'text-margin-x').pfValue;\n    var oy = ele.pstyle(prefixDash + 'text-margin-y').pfValue;\n    var lx1 = bb.x1 - th - ox;\n    var lx2 = bb.x2 + th - ox;\n    var ly1 = bb.y1 - th - oy;\n    var ly2 = bb.y2 + th - oy;\n    if (theta) {\n      var cos = Math.cos(theta);\n      var sin = Math.sin(theta);\n      var rotate = function rotate(x, y) {\n        x = x - lx;\n        y = y - ly;\n        return {\n          x: x * cos - y * sin + lx,\n          y: x * sin + y * cos + ly\n        };\n      };\n      return [rotate(lx1, ly1), rotate(lx2, ly1), rotate(lx2, ly2), rotate(lx1, ly2)];\n    } else {\n      return [{\n        x: lx1,\n        y: ly1\n      }, {\n        x: lx2,\n        y: ly1\n      }, {\n        x: lx2,\n        y: ly2\n      }, {\n        x: lx1,\n        y: ly2\n      }];\n    }\n  }\n  function doLinesIntersect(p1, p2, q1, q2) {\n    function ccw(a, b, c) {\n      return (c.y - a.y) * (b.x - a.x) > (b.y - a.y) * (c.x - a.x);\n    }\n    return ccw(p1, q1, q2) !== ccw(p2, q1, q2) && ccw(p1, p2, q1) !== ccw(p1, p2, q2);\n  }\n  for (var e = 0; e < eles.length; e++) {\n    var ele = eles[e];\n    if (ele.isNode()) {\n      var node = ele;\n      var textEvents = node.pstyle('text-events').strValue === 'yes';\n      var nodeBoxSelectMode = node.pstyle('box-selection').strValue;\n      var labelBoxSelectEnabled = node.pstyle('box-select-labels').strValue === 'yes';\n      if (nodeBoxSelectMode === 'none') {\n        continue;\n      }\n      var includeLabels = (nodeBoxSelectMode === 'overlap' || labelBoxSelectEnabled) && textEvents;\n      var nodeBb = node.boundingBox({\n        includeNodes: true,\n        includeEdges: false,\n        includeLabels: includeLabels\n      });\n      if (nodeBoxSelectMode === 'contain') {\n        var selected = false;\n        if (labelBoxSelectEnabled && textEvents) {\n          var rotatedLabelBox = getRotatedLabelBox(node);\n          if (rotatedLabelBox && satPolygonIntersection(rotatedLabelBox, selectionBox)) {\n            box.push(node);\n            selected = true;\n          }\n        }\n        if (!selected && boundingBoxInBoundingBox(boxBb, nodeBb)) {\n          box.push(node);\n        }\n      } else if (nodeBoxSelectMode === 'overlap') {\n        if (boundingBoxesIntersect(boxBb, nodeBb)) {\n          var nodeBodyBb = node.boundingBox({\n            includeNodes: true,\n            includeEdges: true,\n            includeLabels: false,\n            includeMainLabels: false,\n            includeSourceLabels: false,\n            includeTargetLabels: false\n          });\n          var nodeBodyCorners = [{\n            x: nodeBodyBb.x1,\n            y: nodeBodyBb.y1\n          }, {\n            x: nodeBodyBb.x2,\n            y: nodeBodyBb.y1\n          }, {\n            x: nodeBodyBb.x2,\n            y: nodeBodyBb.y2\n          }, {\n            x: nodeBodyBb.x1,\n            y: nodeBodyBb.y2\n          }];\n\n          // if node body intersects, no need to check label\n          if (satPolygonIntersection(nodeBodyCorners, selectionBox)) {\n            box.push(node);\n          } else {\n            // only check label if node body didn't intersect\n            var _rotatedLabelBox = getRotatedLabelBox(node);\n            if (_rotatedLabelBox && satPolygonIntersection(_rotatedLabelBox, selectionBox)) {\n              box.push(node);\n            }\n          }\n        }\n      }\n    } else {\n      var edge = ele;\n      var _p = edge._private;\n      var rs = _p.rscratch;\n      var edgeBoxSelectMode = edge.pstyle('box-selection').strValue;\n      if (edgeBoxSelectMode === 'none') {\n        continue;\n      }\n      if (edgeBoxSelectMode === 'contain') {\n        if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) {\n          continue;\n        }\n        if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) {\n          continue;\n        }\n        if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound' || rs.edgeType === 'segments' || rs.edgeType === 'haystack') {\n          var pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts;\n          var allInside = true;\n          for (var i = 0; i < pts.length; i++) {\n            if (!pointInBoundingBox(boxBb, pts[i])) {\n              allInside = false;\n              break;\n            }\n          }\n          if (allInside) {\n            box.push(edge);\n          }\n        } else if (rs.edgeType === 'straight') {\n          box.push(edge);\n        }\n      } else if (edgeBoxSelectMode === 'overlap') {\n        var _selected = false;\n\n        // Check: either endpoint inside box\n        if (rs.startX != null && rs.startY != null && rs.endX != null && rs.endY != null && (inBoundingBox(boxBb, rs.startX, rs.startY) || inBoundingBox(boxBb, rs.endX, rs.endY))) {\n          box.push(edge);\n          _selected = true;\n        }\n\n        // Haystack fallback (only check if not already selected)\n        else if (!_selected && rs.edgeType === 'haystack') {\n          var haystackPts = _p.rstyle.haystackPts;\n          for (var _i = 0; _i < haystackPts.length; _i++) {\n            if (pointInBoundingBox(boxBb, haystackPts[_i])) {\n              box.push(edge);\n              _selected = true;\n              break;\n            }\n          }\n        }\n\n        // Segment intersection check (only if not already selected)\n        if (!_selected) {\n          var _pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts;\n\n          // straight edges\n          if ((!_pts || _pts.length < 2) && rs.edgeType === 'straight') {\n            if (rs.startX != null && rs.startY != null && rs.endX != null && rs.endY != null) {\n              _pts = [{\n                x: rs.startX,\n                y: rs.startY\n              }, {\n                x: rs.endX,\n                y: rs.endY\n              }];\n            }\n          }\n          if (!_pts || _pts.length < 2) continue;\n          for (var _i2 = 0; _i2 < _pts.length - 1; _i2++) {\n            var segStart = _pts[_i2];\n            var segEnd = _pts[_i2 + 1];\n            for (var b = 0; b < boxEdges.length; b++) {\n              var _boxEdges$b = _slicedToArray(boxEdges[b], 2),\n                boxStart = _boxEdges$b[0],\n                boxEnd = _boxEdges$b[1];\n              if (doLinesIntersect(segStart, segEnd, boxStart, boxEnd)) {\n                box.push(edge);\n                _selected = true;\n                break;\n              }\n            }\n            if (_selected) break;\n          }\n        }\n      }\n    }\n  }\n  return box;\n};\n\nvar BRp$d = {};\nBRp$d.calculateArrowAngles = function (edge) {\n  var rs = edge._private.rscratch;\n  var isHaystack = rs.edgeType === 'haystack';\n  var isBezier = rs.edgeType === 'bezier';\n  var isMultibezier = rs.edgeType === 'multibezier';\n  var isSegments = rs.edgeType === 'segments';\n  var isCompound = rs.edgeType === 'compound';\n  var isSelf = rs.edgeType === 'self';\n\n  // Displacement gives direction for arrowhead orientation\n  var dispX, dispY;\n  var startX, startY, endX, endY, midX, midY;\n  if (isHaystack) {\n    startX = rs.haystackPts[0];\n    startY = rs.haystackPts[1];\n    endX = rs.haystackPts[2];\n    endY = rs.haystackPts[3];\n  } else {\n    startX = rs.arrowStartX;\n    startY = rs.arrowStartY;\n    endX = rs.arrowEndX;\n    endY = rs.arrowEndY;\n  }\n  midX = rs.midX;\n  midY = rs.midY;\n\n  // source\n  //\n\n  if (isSegments) {\n    dispX = startX - rs.segpts[0];\n    dispY = startY - rs.segpts[1];\n  } else if (isMultibezier || isCompound || isSelf || isBezier) {\n    var pts = rs.allpts;\n    var bX = qbezierAt(pts[0], pts[2], pts[4], 0.1);\n    var bY = qbezierAt(pts[1], pts[3], pts[5], 0.1);\n    dispX = startX - bX;\n    dispY = startY - bY;\n  } else {\n    dispX = startX - midX;\n    dispY = startY - midY;\n  }\n  rs.srcArrowAngle = getAngleFromDisp(dispX, dispY);\n\n  // mid target\n  //\n\n  var midX = rs.midX;\n  var midY = rs.midY;\n  if (isHaystack) {\n    midX = (startX + endX) / 2;\n    midY = (startY + endY) / 2;\n  }\n  dispX = endX - startX;\n  dispY = endY - startY;\n  if (isSegments) {\n    var pts = rs.allpts;\n    if (pts.length / 2 % 2 === 0) {\n      var i2 = pts.length / 2;\n      var i1 = i2 - 2;\n      dispX = pts[i2] - pts[i1];\n      dispY = pts[i2 + 1] - pts[i1 + 1];\n    } else if (rs.isRound) {\n      dispX = rs.midVector[1];\n      dispY = -rs.midVector[0];\n    } else {\n      var i2 = pts.length / 2 - 1;\n      var i1 = i2 - 2;\n      dispX = pts[i2] - pts[i1];\n      dispY = pts[i2 + 1] - pts[i1 + 1];\n    }\n  } else if (isMultibezier || isCompound || isSelf) {\n    var pts = rs.allpts;\n    var cpts = rs.ctrlpts;\n    var bp0x, bp0y;\n    var bp1x, bp1y;\n    if (cpts.length / 2 % 2 === 0) {\n      var p0 = pts.length / 2 - 1; // startpt\n      var ic = p0 + 2;\n      var p1 = ic + 2;\n      bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0);\n      bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0);\n      bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0001);\n      bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0001);\n    } else {\n      var ic = pts.length / 2 - 1; // ctrpt\n      var p0 = ic - 2; // startpt\n      var p1 = ic + 2; // endpt\n\n      bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.4999);\n      bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.4999);\n      bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.5);\n      bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.5);\n    }\n    dispX = bp1x - bp0x;\n    dispY = bp1y - bp0y;\n  }\n  rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY);\n  rs.midDispX = dispX;\n  rs.midDispY = dispY;\n\n  // mid source\n  //\n\n  dispX *= -1;\n  dispY *= -1;\n  if (isSegments) {\n    var pts = rs.allpts;\n    if (pts.length / 2 % 2 === 0) ; else if (!rs.isRound) {\n      var i2 = pts.length / 2 - 1;\n      var i3 = i2 + 2;\n      dispX = -(pts[i3] - pts[i2]);\n      dispY = -(pts[i3 + 1] - pts[i2 + 1]);\n    }\n  }\n  rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY);\n\n  // target\n  //\n\n  if (isSegments) {\n    dispX = endX - rs.segpts[rs.segpts.length - 2];\n    dispY = endY - rs.segpts[rs.segpts.length - 1];\n  } else if (isMultibezier || isCompound || isSelf || isBezier) {\n    var pts = rs.allpts;\n    var l = pts.length;\n    var bX = qbezierAt(pts[l - 6], pts[l - 4], pts[l - 2], 0.9);\n    var bY = qbezierAt(pts[l - 5], pts[l - 3], pts[l - 1], 0.9);\n    dispX = endX - bX;\n    dispY = endY - bY;\n  } else {\n    dispX = endX - midX;\n    dispY = endY - midY;\n  }\n  rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY);\n};\nBRp$d.getArrowWidth = BRp$d.getArrowHeight = function (edgeWidth, scale) {\n  var cache = this.arrowWidthCache = this.arrowWidthCache || {};\n  var cachedVal = cache[edgeWidth + ', ' + scale];\n  if (cachedVal) {\n    return cachedVal;\n  }\n  cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale;\n  cache[edgeWidth + ', ' + scale] = cachedVal;\n  return cachedVal;\n};\n\n/**\n * Explained by Blindman67 at https://stackoverflow.com/a/44856925/11028828\n */\n\n// Declare reused variable to avoid reallocating variables every time the function is called\nvar x,\n  y,\n  v1 = {},\n  v2 = {},\n  sinA,\n  sinA90,\n  radDirection,\n  drawDirection,\n  angle,\n  halfAngle,\n  cRadius,\n  lenOut,\n  radius,\n  limit;\nvar startX, startY, stopX, stopY;\nvar lastPoint;\n\n// convert 2 points into vector form, polar form, and normalised\nvar asVec = function asVec(p, pp, v) {\n  v.x = pp.x - p.x;\n  v.y = pp.y - p.y;\n  v.len = Math.sqrt(v.x * v.x + v.y * v.y);\n  v.nx = v.x / v.len;\n  v.ny = v.y / v.len;\n  v.ang = Math.atan2(v.ny, v.nx);\n};\nvar invertVec = function invertVec(originalV, invertedV) {\n  invertedV.x = originalV.x * -1;\n  invertedV.y = originalV.y * -1;\n  invertedV.nx = originalV.nx * -1;\n  invertedV.ny = originalV.ny * -1;\n  invertedV.ang = originalV.ang > 0 ? -(Math.PI - originalV.ang) : Math.PI + originalV.ang;\n};\nvar calcCornerArc = function calcCornerArc(previousPoint, currentPoint, nextPoint, radiusMax, isArcRadius) {\n  //-----------------------------------------\n  // Part 1\n  previousPoint !== lastPoint ? asVec(currentPoint, previousPoint, v1) : invertVec(v2, v1); // Avoid recalculating vec if it is the invert of the last one calculated\n  asVec(currentPoint, nextPoint, v2);\n  sinA = v1.nx * v2.ny - v1.ny * v2.nx;\n  sinA90 = v1.nx * v2.nx - v1.ny * -v2.ny;\n  angle = Math.asin(Math.max(-1, Math.min(1, sinA)));\n  if (Math.abs(angle) < 1e-6) {\n    x = currentPoint.x;\n    y = currentPoint.y;\n    cRadius = radius = 0;\n    return;\n  }\n  //-----------------------------------------\n  radDirection = 1;\n  drawDirection = false;\n  if (sinA90 < 0) {\n    if (angle < 0) {\n      angle = Math.PI + angle;\n    } else {\n      angle = Math.PI - angle;\n      radDirection = -1;\n      drawDirection = true;\n    }\n  } else {\n    if (angle > 0) {\n      radDirection = -1;\n      drawDirection = true;\n    }\n  }\n  if (currentPoint.radius !== undefined) {\n    radius = currentPoint.radius;\n  } else {\n    radius = radiusMax;\n  }\n  //-----------------------------------------\n  // Part 2\n  halfAngle = angle / 2;\n  //-----------------------------------------\n\n  limit = Math.min(v1.len / 2, v2.len / 2);\n  if (isArcRadius) {\n    //-----------------------------------------\n    // Part 3\n    lenOut = Math.abs(Math.cos(halfAngle) * radius / Math.sin(halfAngle));\n\n    //-----------------------------------------\n    // Special part A\n    if (lenOut > limit) {\n      lenOut = limit;\n      cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle));\n    } else {\n      cRadius = radius;\n    }\n  } else {\n    lenOut = Math.min(limit, radius);\n    cRadius = Math.abs(lenOut * Math.sin(halfAngle) / Math.cos(halfAngle));\n  }\n  //-----------------------------------------\n\n  //-----------------------------------------\n  // Part 4\n  stopX = currentPoint.x + v2.nx * lenOut;\n  stopY = currentPoint.y + v2.ny * lenOut;\n  //-----------------------------------------\n  // Part 5\n  x = stopX - v2.ny * cRadius * radDirection;\n  y = stopY + v2.nx * cRadius * radDirection;\n  //-----------------------------------------\n  // Additional Part : calculate start point E\n  startX = currentPoint.x + v1.nx * lenOut;\n  startY = currentPoint.y + v1.ny * lenOut;\n\n  // Save last point to avoid recalculating vector when not needed\n  lastPoint = currentPoint;\n};\n\n/**\n * Draw corner provided by {@link getRoundCorner}\n *\n * @param ctx :CanvasRenderingContext2D\n * @param roundCorner {{cx:number, cy:number, radius:number, endAngle: number, startAngle: number, counterClockwise: boolean}}\n */\nfunction drawPreparedRoundCorner(ctx, roundCorner) {\n  if (roundCorner.radius === 0) ctx.lineTo(roundCorner.cx, roundCorner.cy);else ctx.arc(roundCorner.cx, roundCorner.cy, roundCorner.radius, roundCorner.startAngle, roundCorner.endAngle, roundCorner.counterClockwise);\n}\n\n/**\n * Get round corner from a point and its previous and next neighbours in a path\n *\n * @param previousPoint {{x: number, y:number, radius: number?}}\n * @param currentPoint {{x: number, y:number, radius: number?}}\n * @param nextPoint {{x: number, y:number, radius: number?}}\n * @param radiusMax :number\n * @param isArcRadius :boolean\n * @return {{\n * cx:number, cy:number, radius:number,\n * startX:number, startY:number,\n * stopX:number, stopY: number,\n * endAngle: number, startAngle: number, counterClockwise: boolean\n * }}\n */\nfunction getRoundCorner(previousPoint, currentPoint, nextPoint, radiusMax) {\n  var isArcRadius = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  if (radiusMax === 0 || currentPoint.radius === 0) return {\n    cx: currentPoint.x,\n    cy: currentPoint.y,\n    radius: 0,\n    startX: currentPoint.x,\n    startY: currentPoint.y,\n    stopX: currentPoint.x,\n    stopY: currentPoint.y,\n    startAngle: undefined,\n    endAngle: undefined,\n    counterClockwise: undefined\n  };\n  calcCornerArc(previousPoint, currentPoint, nextPoint, radiusMax, isArcRadius);\n  return {\n    cx: x,\n    cy: y,\n    radius: cRadius,\n    startX: startX,\n    startY: startY,\n    stopX: stopX,\n    stopY: stopY,\n    startAngle: v1.ang + Math.PI / 2 * radDirection,\n    endAngle: v2.ang - Math.PI / 2 * radDirection,\n    counterClockwise: drawDirection\n  };\n}\n\nvar AVOID_IMPOSSIBLE_BEZIER_CONSTANT = 0.01;\nvar AVOID_IMPOSSIBLE_BEZIER_CONSTANT_L = Math.sqrt(2 * AVOID_IMPOSSIBLE_BEZIER_CONSTANT);\nvar BRp$c = {};\nBRp$c.findMidptPtsEtc = function (edge, pairInfo) {\n  var posPts = pairInfo.posPts,\n    intersectionPts = pairInfo.intersectionPts,\n    vectorNormInverse = pairInfo.vectorNormInverse;\n  var midptPts;\n\n  // n.b. assumes all edges in bezier bundle have same endpoints specified\n  var srcManEndpt = edge.pstyle('source-endpoint');\n  var tgtManEndpt = edge.pstyle('target-endpoint');\n  var haveManualEndPts = srcManEndpt.units != null && tgtManEndpt.units != null;\n  var recalcVectorNormInverse = function recalcVectorNormInverse(x1, y1, x2, y2) {\n    var dy = y2 - y1;\n    var dx = x2 - x1;\n    var l = Math.sqrt(dx * dx + dy * dy);\n    return {\n      x: -dy / l,\n      y: dx / l\n    };\n  };\n  var edgeDistances = edge.pstyle('edge-distances').value;\n  switch (edgeDistances) {\n    case 'node-position':\n      midptPts = posPts;\n      break;\n    case 'intersection':\n      midptPts = intersectionPts;\n      break;\n    case 'endpoints':\n      {\n        if (haveManualEndPts) {\n          var _this$manualEndptToPx = this.manualEndptToPx(edge.source()[0], srcManEndpt),\n            _this$manualEndptToPx2 = _slicedToArray(_this$manualEndptToPx, 2),\n            x1 = _this$manualEndptToPx2[0],\n            y1 = _this$manualEndptToPx2[1];\n          var _this$manualEndptToPx3 = this.manualEndptToPx(edge.target()[0], tgtManEndpt),\n            _this$manualEndptToPx4 = _slicedToArray(_this$manualEndptToPx3, 2),\n            x2 = _this$manualEndptToPx4[0],\n            y2 = _this$manualEndptToPx4[1];\n          var endPts = {\n            x1: x1,\n            y1: y1,\n            x2: x2,\n            y2: y2\n          };\n          vectorNormInverse = recalcVectorNormInverse(x1, y1, x2, y2);\n          midptPts = endPts;\n        } else {\n          warn(\"Edge \".concat(edge.id(), \" has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint.  Falling back on edge-distances:intersection (default).\"));\n          midptPts = intersectionPts; // back to default\n        }\n        break;\n      }\n  }\n  return {\n    midptPts: midptPts,\n    vectorNormInverse: vectorNormInverse\n  };\n};\nBRp$c.findHaystackPoints = function (edges) {\n  for (var i = 0; i < edges.length; i++) {\n    var edge = edges[i];\n    var _p = edge._private;\n    var rs = _p.rscratch;\n    if (!rs.haystack) {\n      var angle = Math.random() * 2 * Math.PI;\n      rs.source = {\n        x: Math.cos(angle),\n        y: Math.sin(angle)\n      };\n      angle = Math.random() * 2 * Math.PI;\n      rs.target = {\n        x: Math.cos(angle),\n        y: Math.sin(angle)\n      };\n    }\n    var src = _p.source;\n    var tgt = _p.target;\n    var srcPos = src.position();\n    var tgtPos = tgt.position();\n    var srcW = src.width();\n    var tgtW = tgt.width();\n    var srcH = src.height();\n    var tgtH = tgt.height();\n    var radius = edge.pstyle('haystack-radius').value;\n    var halfRadius = radius / 2; // b/c have to half width/height\n\n    rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y];\n    rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2;\n    rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2;\n\n    // always override as haystack in case set to different type previously\n    rs.edgeType = 'haystack';\n    rs.haystack = true;\n    this.storeEdgeProjections(edge);\n    this.calculateArrowAngles(edge);\n    this.recalculateEdgeLabelProjections(edge);\n    this.calculateLabelAngles(edge);\n  }\n};\nBRp$c.findSegmentsPoints = function (edge, pairInfo) {\n  // Segments (multiple straight lines)\n\n  var rs = edge._private.rscratch;\n  var segmentWs = edge.pstyle('segment-weights');\n  var segmentDs = edge.pstyle('segment-distances');\n  var segmentRs = edge.pstyle('segment-radii');\n  var segmentTs = edge.pstyle('radius-type');\n  var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length);\n  var lastRadius = segmentRs.pfValue[segmentRs.pfValue.length - 1];\n  var lastRadiusType = segmentTs.pfValue[segmentTs.pfValue.length - 1];\n  rs.edgeType = 'segments';\n  rs.segpts = [];\n  rs.radii = [];\n  rs.isArcRadius = [];\n  for (var s = 0; s < segmentsN; s++) {\n    var w = segmentWs.pfValue[s];\n    var d = segmentDs.pfValue[s];\n    var w1 = 1 - w;\n    var w2 = w;\n    var _this$findMidptPtsEtc = this.findMidptPtsEtc(edge, pairInfo),\n      midptPts = _this$findMidptPtsEtc.midptPts,\n      vectorNormInverse = _this$findMidptPtsEtc.vectorNormInverse;\n    var adjustedMidpt = {\n      x: midptPts.x1 * w1 + midptPts.x2 * w2,\n      y: midptPts.y1 * w1 + midptPts.y2 * w2\n    };\n    rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d, adjustedMidpt.y + vectorNormInverse.y * d);\n    rs.radii.push(segmentRs.pfValue[s] !== undefined ? segmentRs.pfValue[s] : lastRadius);\n    rs.isArcRadius.push((segmentTs.pfValue[s] !== undefined ? segmentTs.pfValue[s] : lastRadiusType) === 'arc-radius');\n  }\n};\nBRp$c.findLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {\n  // Self-edge\n\n  var rs = edge._private.rscratch;\n  var dirCounts = pairInfo.dirCounts,\n    srcPos = pairInfo.srcPos;\n  var ctrlptDists = edge.pstyle('control-point-distances');\n  var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n  var loopDir = edge.pstyle('loop-direction').pfValue;\n  var loopSwp = edge.pstyle('loop-sweep').pfValue;\n  var stepSize = edge.pstyle('control-point-step-size').pfValue;\n  rs.edgeType = 'self';\n  var j = i;\n  var loopDist = stepSize;\n  if (edgeIsUnbundled) {\n    j = 0;\n    loopDist = ctrlptDist;\n  }\n  var loopAngle = loopDir - Math.PI / 2;\n  var outAngle = loopAngle - loopSwp / 2;\n  var inAngle = loopAngle + loopSwp / 2;\n\n  // increase by step size for overlapping loops, keyed on direction and sweep values\n  var dc = String(loopDir + '_' + loopSwp);\n  j = dirCounts[dc] === undefined ? dirCounts[dc] = 0 : ++dirCounts[dc];\n  rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j / 3 + 1)];\n};\nBRp$c.findCompoundLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {\n  // Compound edge\n\n  var rs = edge._private.rscratch;\n  rs.edgeType = 'compound';\n  var srcPos = pairInfo.srcPos,\n    tgtPos = pairInfo.tgtPos,\n    srcW = pairInfo.srcW,\n    srcH = pairInfo.srcH,\n    tgtW = pairInfo.tgtW,\n    tgtH = pairInfo.tgtH;\n  var stepSize = edge.pstyle('control-point-step-size').pfValue;\n  var ctrlptDists = edge.pstyle('control-point-distances');\n  var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n  var j = i;\n  var loopDist = stepSize;\n  if (edgeIsUnbundled) {\n    j = 0;\n    loopDist = ctrlptDist;\n  }\n  var loopW = 50;\n  var loopaPos = {\n    x: srcPos.x - srcW / 2,\n    y: srcPos.y - srcH / 2\n  };\n  var loopbPos = {\n    x: tgtPos.x - tgtW / 2,\n    y: tgtPos.y - tgtH / 2\n  };\n  var loopPos = {\n    x: Math.min(loopaPos.x, loopbPos.x),\n    y: Math.min(loopaPos.y, loopbPos.y)\n  };\n\n  // avoids cases with impossible beziers\n  var minCompoundStretch = 0.5;\n  var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * AVOID_IMPOSSIBLE_BEZIER_CONSTANT));\n  var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * AVOID_IMPOSSIBLE_BEZIER_CONSTANT));\n  rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchB, loopPos.y];\n};\nBRp$c.findStraightEdgePoints = function (edge) {\n  // Straight edge within bundle\n\n  edge._private.rscratch.edgeType = 'straight';\n};\nBRp$c.findBezierPoints = function (edge, pairInfo, i, edgeIsUnbundled, edgeIsSwapped) {\n  var rs = edge._private.rscratch;\n  var stepSize = edge.pstyle('control-point-step-size').pfValue;\n  var ctrlptDists = edge.pstyle('control-point-distances');\n  var ctrlptWs = edge.pstyle('control-point-weights');\n  var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1;\n  var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n  var ctrlptWeight = ctrlptWs.value[0];\n\n  // (Multi)bezier\n\n  var multi = edgeIsUnbundled;\n  rs.edgeType = multi ? 'multibezier' : 'bezier';\n  rs.ctrlpts = [];\n  for (var b = 0; b < bezierN; b++) {\n    var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i) * stepSize * (edgeIsSwapped ? -1 : 1);\n    var manctrlptDist = undefined;\n    var sign = signum(normctrlptDist);\n    if (multi) {\n      ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b] : stepSize; // fall back on step size\n      ctrlptWeight = ctrlptWs.value[b];\n    }\n    if (edgeIsUnbundled) {\n      // multi or single unbundled\n      manctrlptDist = ctrlptDist;\n    } else {\n      manctrlptDist = ctrlptDist !== undefined ? sign * ctrlptDist : undefined;\n    }\n    var distanceFromMidpoint = manctrlptDist !== undefined ? manctrlptDist : normctrlptDist;\n    var w1 = 1 - ctrlptWeight;\n    var w2 = ctrlptWeight;\n    var _this$findMidptPtsEtc2 = this.findMidptPtsEtc(edge, pairInfo),\n      midptPts = _this$findMidptPtsEtc2.midptPts,\n      vectorNormInverse = _this$findMidptPtsEtc2.vectorNormInverse;\n    var adjustedMidpt = {\n      x: midptPts.x1 * w1 + midptPts.x2 * w2,\n      y: midptPts.y1 * w1 + midptPts.y2 * w2\n    };\n    rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint);\n  }\n};\nBRp$c.findTaxiPoints = function (edge, pairInfo) {\n  // Taxicab geometry with two turns maximum\n\n  var rs = edge._private.rscratch;\n  rs.edgeType = 'segments';\n  var VERTICAL = 'vertical';\n  var HORIZONTAL = 'horizontal';\n  var LEFTWARD = 'leftward';\n  var RIGHTWARD = 'rightward';\n  var DOWNWARD = 'downward';\n  var UPWARD = 'upward';\n  var AUTO = 'auto';\n  var posPts = pairInfo.posPts,\n    srcW = pairInfo.srcW,\n    srcH = pairInfo.srcH,\n    tgtW = pairInfo.tgtW,\n    tgtH = pairInfo.tgtH;\n  var edgeDistances = edge.pstyle('edge-distances').value;\n  var dIncludesNodeBody = edgeDistances !== 'node-position';\n  var taxiDir = edge.pstyle('taxi-direction').value;\n  var rawTaxiDir = taxiDir; // unprocessed value\n  var taxiTurn = edge.pstyle('taxi-turn');\n  var turnIsPercent = taxiTurn.units === '%';\n  var taxiTurnPfVal = taxiTurn.pfValue;\n  var turnIsNegative = taxiTurnPfVal < 0; // i.e. from target side\n  var minD = edge.pstyle('taxi-turn-min-distance').pfValue;\n  var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0;\n  var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0;\n  var pdx = posPts.x2 - posPts.x1;\n  var pdy = posPts.y2 - posPts.y1;\n\n  // take away the effective w/h from the magnitude of the delta value\n  var subDWH = function subDWH(dxy, dwh) {\n    if (dxy > 0) {\n      return Math.max(dxy - dwh, 0);\n    } else {\n      return Math.min(dxy + dwh, 0);\n    }\n  };\n  var dx = subDWH(pdx, dw);\n  var dy = subDWH(pdy, dh);\n  var isExplicitDir = false;\n  if (rawTaxiDir === AUTO) {\n    taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL;\n  } else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) {\n    taxiDir = VERTICAL;\n    isExplicitDir = true;\n  } else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) {\n    taxiDir = HORIZONTAL;\n    isExplicitDir = true;\n  }\n  var isVert = taxiDir === VERTICAL;\n  var l = isVert ? dy : dx;\n  var pl = isVert ? pdy : pdx;\n  var sgnL = signum(pl);\n  var forcedDir = false;\n  if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) // forcing in this case would cause weird growing in the opposite direction\n  && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) {\n    sgnL *= -1;\n    l = sgnL * Math.abs(l);\n    forcedDir = true;\n  }\n  var d;\n  if (turnIsPercent) {\n    var p = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal;\n    d = p * l;\n  } else {\n    var k = taxiTurnPfVal < 0 ? l : 0;\n    d = k + taxiTurnPfVal * sgnL;\n  }\n  var getIsTooClose = function getIsTooClose(d) {\n    return Math.abs(d) < minD || Math.abs(d) >= Math.abs(l);\n  };\n  var isTooCloseSrc = getIsTooClose(d);\n  var isTooCloseTgt = getIsTooClose(Math.abs(l) - Math.abs(d));\n  var isTooClose = isTooCloseSrc || isTooCloseTgt;\n  if (isTooClose && !forcedDir) {\n    // non-ideal routing\n    if (isVert) {\n      // vertical fallbacks\n      var lShapeInsideSrc = Math.abs(pl) <= srcH / 2;\n      var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2;\n      if (lShapeInsideSrc) {\n        // horizontal Z-shape (direction not respected)\n        var x = (posPts.x1 + posPts.x2) / 2;\n        var y1 = posPts.y1,\n          y2 = posPts.y2;\n        rs.segpts = [x, y1, x, y2];\n      } else if (lShapeInsideTgt) {\n        // vertical Z-shape (distance not respected)\n        var y = (posPts.y1 + posPts.y2) / 2;\n        var x1 = posPts.x1,\n          x2 = posPts.x2;\n        rs.segpts = [x1, y, x2, y];\n      } else {\n        // L-shape fallback (turn distance not respected, but works well with tree siblings)\n        rs.segpts = [posPts.x1, posPts.y2];\n      }\n    } else {\n      // horizontal fallbacks\n      var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2;\n      var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2;\n      if (_lShapeInsideSrc) {\n        // vertical Z-shape (direction not respected)\n        var _y = (posPts.y1 + posPts.y2) / 2;\n        var _x = posPts.x1,\n          _x2 = posPts.x2;\n        rs.segpts = [_x, _y, _x2, _y];\n      } else if (_lShapeInsideTgt) {\n        // horizontal Z-shape (turn distance not respected)\n        var _x3 = (posPts.x1 + posPts.x2) / 2;\n        var _y2 = posPts.y1,\n          _y3 = posPts.y2;\n        rs.segpts = [_x3, _y2, _x3, _y3];\n      } else {\n        // L-shape (turn distance not respected, but works well for tree siblings)\n        rs.segpts = [posPts.x2, posPts.y1];\n      }\n    }\n  } else {\n    // ideal routing\n    if (isVert) {\n      var _y4 = posPts.y1 + d + (dIncludesNodeBody ? srcH / 2 * sgnL : 0);\n      var _x4 = posPts.x1,\n        _x5 = posPts.x2;\n      rs.segpts = [_x4, _y4, _x5, _y4];\n    } else {\n      // horizontal\n      var _x6 = posPts.x1 + d + (dIncludesNodeBody ? srcW / 2 * sgnL : 0);\n      var _y5 = posPts.y1,\n        _y6 = posPts.y2;\n      rs.segpts = [_x6, _y5, _x6, _y6];\n    }\n  }\n  if (rs.isRound) {\n    var radius = edge.pstyle('taxi-radius').value;\n    var isArcRadius = edge.pstyle('radius-type').value[0] === 'arc-radius';\n    rs.radii = new Array(rs.segpts.length / 2).fill(radius);\n    rs.isArcRadius = new Array(rs.segpts.length / 2).fill(isArcRadius);\n  }\n};\nBRp$c.tryToCorrectInvalidPoints = function (edge, pairInfo) {\n  var rs = edge._private.rscratch;\n\n  // can only correct beziers for now...\n  if (rs.edgeType === 'bezier') {\n    var srcPos = pairInfo.srcPos,\n      tgtPos = pairInfo.tgtPos,\n      srcW = pairInfo.srcW,\n      srcH = pairInfo.srcH,\n      tgtW = pairInfo.tgtW,\n      tgtH = pairInfo.tgtH,\n      srcShape = pairInfo.srcShape,\n      tgtShape = pairInfo.tgtShape,\n      srcCornerRadius = pairInfo.srcCornerRadius,\n      tgtCornerRadius = pairInfo.tgtCornerRadius,\n      srcRs = pairInfo.srcRs,\n      tgtRs = pairInfo.tgtRs;\n    var badStart = !number$1(rs.startX) || !number$1(rs.startY);\n    var badAStart = !number$1(rs.arrowStartX) || !number$1(rs.arrowStartY);\n    var badEnd = !number$1(rs.endX) || !number$1(rs.endY);\n    var badAEnd = !number$1(rs.arrowEndX) || !number$1(rs.arrowEndY);\n    var minCpADistFactor = 3;\n    var arrowW = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;\n    var minCpADist = minCpADistFactor * arrowW;\n    var startACpDist = dist({\n      x: rs.ctrlpts[0],\n      y: rs.ctrlpts[1]\n    }, {\n      x: rs.startX,\n      y: rs.startY\n    });\n    var closeStartACp = startACpDist < minCpADist;\n    var endACpDist = dist({\n      x: rs.ctrlpts[0],\n      y: rs.ctrlpts[1]\n    }, {\n      x: rs.endX,\n      y: rs.endY\n    });\n    var closeEndACp = endACpDist < minCpADist;\n    var overlapping = false;\n    if (badStart || badAStart || closeStartACp) {\n      overlapping = true;\n\n      // project control point along line from src centre to outside the src shape\n      // (otherwise intersection will yield nothing)\n      var cpD = {\n        // delta\n        x: rs.ctrlpts[0] - srcPos.x,\n        y: rs.ctrlpts[1] - srcPos.y\n      };\n      var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); // length of line\n      var cpM = {\n        // normalised delta\n        x: cpD.x / cpL,\n        y: cpD.y / cpL\n      };\n      var radius = Math.max(srcW, srcH);\n      var cpProj = {\n        // *2 radius guarantees outside shape\n        x: rs.ctrlpts[0] + cpM.x * 2 * radius,\n        y: rs.ctrlpts[1] + cpM.y * 2 * radius\n      };\n      var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0, srcCornerRadius, srcRs);\n      if (closeStartACp) {\n        rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist);\n        rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist);\n      } else {\n        rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist;\n        rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist;\n      }\n    }\n    if (badEnd || badAEnd || closeEndACp) {\n      overlapping = true;\n\n      // project control point along line from tgt centre to outside the tgt shape\n      // (otherwise intersection will yield nothing)\n      var _cpD = {\n        // delta\n        x: rs.ctrlpts[0] - tgtPos.x,\n        y: rs.ctrlpts[1] - tgtPos.y\n      };\n      var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); // length of line\n      var _cpM = {\n        // normalised delta\n        x: _cpD.x / _cpL,\n        y: _cpD.y / _cpL\n      };\n      var _radius = Math.max(srcW, srcH);\n      var _cpProj = {\n        // *2 radius guarantees outside shape\n        x: rs.ctrlpts[0] + _cpM.x * 2 * _radius,\n        y: rs.ctrlpts[1] + _cpM.y * 2 * _radius\n      };\n      var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0, tgtCornerRadius, tgtRs);\n      if (closeEndACp) {\n        rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist);\n        rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist);\n      } else {\n        rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist;\n        rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist;\n      }\n    }\n    if (overlapping) {\n      // recalc endpts\n      this.findEndpoints(edge);\n    }\n  }\n};\nBRp$c.storeAllpts = function (edge) {\n  var rs = edge._private.rscratch;\n  if (rs.edgeType === 'multibezier' || rs.edgeType === 'bezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {\n    rs.allpts = [];\n    rs.allpts.push(rs.startX, rs.startY);\n    for (var b = 0; b + 1 < rs.ctrlpts.length; b += 2) {\n      // ctrl pt itself\n      rs.allpts.push(rs.ctrlpts[b], rs.ctrlpts[b + 1]);\n\n      // the midpt between ctrlpts as intermediate destination pts\n      if (b + 3 < rs.ctrlpts.length) {\n        rs.allpts.push((rs.ctrlpts[b] + rs.ctrlpts[b + 2]) / 2, (rs.ctrlpts[b + 1] + rs.ctrlpts[b + 3]) / 2);\n      }\n    }\n    rs.allpts.push(rs.endX, rs.endY);\n    var m, mt;\n    if (rs.ctrlpts.length / 2 % 2 === 0) {\n      m = rs.allpts.length / 2 - 1;\n      rs.midX = rs.allpts[m];\n      rs.midY = rs.allpts[m + 1];\n    } else {\n      m = rs.allpts.length / 2 - 3;\n      mt = 0.5;\n      rs.midX = qbezierAt(rs.allpts[m], rs.allpts[m + 2], rs.allpts[m + 4], mt);\n      rs.midY = qbezierAt(rs.allpts[m + 1], rs.allpts[m + 3], rs.allpts[m + 5], mt);\n    }\n  } else if (rs.edgeType === 'straight') {\n    // need to calc these after endpts\n    rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY];\n\n    // default midpt for labels etc\n    rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4;\n    rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4;\n  } else if (rs.edgeType === 'segments') {\n    rs.allpts = [];\n    rs.allpts.push(rs.startX, rs.startY);\n    rs.allpts.push.apply(rs.allpts, rs.segpts);\n    rs.allpts.push(rs.endX, rs.endY);\n    if (rs.isRound) {\n      rs.roundCorners = [];\n      for (var i = 2; i + 3 < rs.allpts.length; i += 2) {\n        var radius = rs.radii[i / 2 - 1];\n        var isArcRadius = rs.isArcRadius[i / 2 - 1];\n        rs.roundCorners.push(getRoundCorner({\n          x: rs.allpts[i - 2],\n          y: rs.allpts[i - 1]\n        }, {\n          x: rs.allpts[i],\n          y: rs.allpts[i + 1],\n          radius: radius\n        }, {\n          x: rs.allpts[i + 2],\n          y: rs.allpts[i + 3]\n        }, radius, isArcRadius));\n      }\n    }\n    if (rs.segpts.length % 4 === 0) {\n      var i2 = rs.segpts.length / 2;\n      var i1 = i2 - 2;\n      rs.midX = (rs.segpts[i1] + rs.segpts[i2]) / 2;\n      rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i2 + 1]) / 2;\n    } else {\n      var _i = rs.segpts.length / 2 - 1;\n      if (!rs.isRound) {\n        rs.midX = rs.segpts[_i];\n        rs.midY = rs.segpts[_i + 1];\n      } else {\n        var point = {\n          x: rs.segpts[_i],\n          y: rs.segpts[_i + 1]\n        };\n        var corner = rs.roundCorners[_i / 2];\n        if (corner.radius === 0) {\n          // On collinear points\n          var nextPoint = {\n            x: rs.segpts[_i + 2],\n            y: rs.segpts[_i + 3]\n          };\n          rs.midX = point.x;\n          rs.midY = point.y;\n          rs.midVector = [point.y - nextPoint.y, nextPoint.x - point.x];\n        } else {\n          // On rounded points\n          var v = [point.x - corner.cx, point.y - corner.cy];\n          var factor = corner.radius / Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n          v = v.map(function (c) {\n            return c * factor;\n          });\n          rs.midX = corner.cx + v[0];\n          rs.midY = corner.cy + v[1];\n          rs.midVector = v;\n        }\n      }\n    }\n  }\n};\nBRp$c.checkForInvalidEdgeWarning = function (edge) {\n  var rs = edge[0]._private.rscratch;\n  if (rs.nodesOverlap || number$1(rs.startX) && number$1(rs.startY) && number$1(rs.endX) && number$1(rs.endY)) {\n    rs.loggedErr = false;\n  } else {\n    if (!rs.loggedErr) {\n      rs.loggedErr = true;\n      warn('Edge `' + edge.id() + '` has invalid endpoints and so it is impossible to draw.  Adjust your edge style (e.g. control points) accordingly or use an alternative edge type.  This is expected behaviour when the source node and the target node overlap.');\n    }\n  }\n};\nBRp$c.findEdgeControlPoints = function (edges) {\n  var _this = this;\n  if (!edges || edges.length === 0) {\n    return;\n  }\n  var r = this;\n  var cy = r.cy;\n  var hasCompounds = cy.hasCompoundNodes();\n  var hashTable = new Map$1();\n  var getKey = function getKey(pairId, edgeIsUnbundled) {\n    return [].concat(_toConsumableArray(pairId), [edgeIsUnbundled ? 1 : 0]).join('-');\n  };\n  var pairIds = [];\n  var haystackEdges = [];\n\n  // create a table of edge (src, tgt) => list of edges between them\n  for (var i = 0; i < edges.length; i++) {\n    var edge = edges[i];\n    var _p = edge._private;\n    var curveStyle = edge.pstyle('curve-style').value;\n\n    // ignore edges who are not to be displayed\n    // they shouldn't take up space\n    if (edge.removed() || !edge.takesUpSpace()) {\n      continue;\n    }\n    if (curveStyle === 'haystack') {\n      haystackEdges.push(edge);\n      continue;\n    }\n    var edgeIsUnbundled = curveStyle === 'unbundled-bezier' || endsWith(curveStyle, 'segments') || curveStyle === 'straight' || curveStyle === 'straight-triangle' || endsWith(curveStyle, 'taxi');\n    var edgeIsBezier = curveStyle === 'unbundled-bezier' || curveStyle === 'bezier';\n    var src = _p.source;\n    var tgt = _p.target;\n    var srcIndex = src.poolIndex();\n    var tgtIndex = tgt.poolIndex();\n    var pairId = [srcIndex, tgtIndex].sort();\n    var key = getKey(pairId, edgeIsUnbundled);\n    var tableEntry = hashTable.get(key);\n    if (tableEntry == null) {\n      tableEntry = {\n        eles: []\n      };\n      pairIds.push({\n        pairId: pairId,\n        edgeIsUnbundled: edgeIsUnbundled\n      });\n      hashTable.set(key, tableEntry);\n    }\n    tableEntry.eles.push(edge);\n    if (edgeIsUnbundled) {\n      tableEntry.hasUnbundled = true;\n    }\n    if (edgeIsBezier) {\n      tableEntry.hasBezier = true;\n    }\n  }\n\n  // for each pair (src, tgt), create the ctrl pts\n  // Nested for loop is OK; total number of iterations for both loops = edgeCount\n  var _loop = function _loop() {\n    var _pairIds$p = pairIds[p],\n      pairId = _pairIds$p.pairId,\n      edgeIsUnbundled = _pairIds$p.edgeIsUnbundled;\n    var key = getKey(pairId, edgeIsUnbundled);\n    var pairInfo = hashTable.get(key);\n    var swappedpairInfo;\n    if (!pairInfo.hasUnbundled) {\n      var pllEdges = pairInfo.eles[0].parallelEdges().filter(function (e) {\n        return e.isBundledBezier();\n      });\n      clearArray(pairInfo.eles);\n      pllEdges.forEach(function (edge) {\n        return pairInfo.eles.push(edge);\n      });\n\n      // for each pair id, the edges should be sorted by index\n      pairInfo.eles.sort(function (edge1, edge2) {\n        return edge1.poolIndex() - edge2.poolIndex();\n      });\n    }\n    var firstEdge = pairInfo.eles[0];\n    var src = firstEdge.source();\n    var tgt = firstEdge.target();\n\n    // make sure src/tgt distinction is consistent w.r.t. pairId\n    if (src.poolIndex() > tgt.poolIndex()) {\n      var temp = src;\n      src = tgt;\n      tgt = temp;\n    }\n    var srcPos = pairInfo.srcPos = src.position();\n    var tgtPos = pairInfo.tgtPos = tgt.position();\n    var srcW = pairInfo.srcW = src.outerWidth();\n    var srcH = pairInfo.srcH = src.outerHeight();\n    var tgtW = pairInfo.tgtW = tgt.outerWidth();\n    var tgtH = pairInfo.tgtH = tgt.outerHeight();\n    var srcShape = pairInfo.srcShape = r.nodeShapes[_this.getNodeShape(src)];\n    var tgtShape = pairInfo.tgtShape = r.nodeShapes[_this.getNodeShape(tgt)];\n    var srcCornerRadius = pairInfo.srcCornerRadius = src.pstyle('corner-radius').value === 'auto' ? 'auto' : src.pstyle('corner-radius').pfValue;\n    var tgtCornerRadius = pairInfo.tgtCornerRadius = tgt.pstyle('corner-radius').value === 'auto' ? 'auto' : tgt.pstyle('corner-radius').pfValue;\n    var tgtRs = pairInfo.tgtRs = tgt._private.rscratch;\n    var srcRs = pairInfo.srcRs = src._private.rscratch;\n    pairInfo.dirCounts = {\n      'north': 0,\n      'west': 0,\n      'south': 0,\n      'east': 0,\n      'northwest': 0,\n      'southwest': 0,\n      'northeast': 0,\n      'southeast': 0\n    };\n    for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) {\n      var _edge = pairInfo.eles[_i2];\n      var rs = _edge[0]._private.rscratch;\n      var _curveStyle = _edge.pstyle('curve-style').value;\n      var _edgeIsUnbundled = _curveStyle === 'unbundled-bezier' || endsWith(_curveStyle, 'segments') || endsWith(_curveStyle, 'taxi');\n\n      // whether the normalised pair order is the reverse of the edge's src-tgt order\n      var edgeIsSwapped = !src.same(_edge.source());\n      if (!pairInfo.calculatedIntersection && src !== tgt && (pairInfo.hasBezier || pairInfo.hasUnbundled)) {\n        pairInfo.calculatedIntersection = true;\n\n        // pt outside src shape to calc distance/displacement from src to tgt\n        var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0, srcCornerRadius, srcRs);\n        var srcIntn = pairInfo.srcIntn = srcOutside;\n\n        // pt outside tgt shape to calc distance/displacement from src to tgt\n        var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0, tgtCornerRadius, tgtRs);\n        var tgtIntn = pairInfo.tgtIntn = tgtOutside;\n        var intersectionPts = pairInfo.intersectionPts = {\n          x1: srcOutside[0],\n          x2: tgtOutside[0],\n          y1: srcOutside[1],\n          y2: tgtOutside[1]\n        };\n        var posPts = pairInfo.posPts = {\n          x1: srcPos.x,\n          x2: tgtPos.x,\n          y1: srcPos.y,\n          y2: tgtPos.y\n        };\n        var dy = tgtOutside[1] - srcOutside[1];\n        var dx = tgtOutside[0] - srcOutside[0];\n        var l = Math.sqrt(dx * dx + dy * dy);\n        if (number$1(l) && l >= AVOID_IMPOSSIBLE_BEZIER_CONSTANT_L) ; else {\n          l = Math.sqrt(Math.max(dx * dx, AVOID_IMPOSSIBLE_BEZIER_CONSTANT) + Math.max(dy * dy, AVOID_IMPOSSIBLE_BEZIER_CONSTANT));\n        }\n        var vector = pairInfo.vector = {\n          x: dx,\n          y: dy\n        };\n        var vectorNorm = pairInfo.vectorNorm = {\n          x: vector.x / l,\n          y: vector.y / l\n        };\n        var vectorNormInverse = {\n          x: -vectorNorm.y,\n          y: vectorNorm.x\n        };\n\n        // if node shapes overlap, then no ctrl pts to draw\n        pairInfo.nodesOverlap = !number$1(l) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y, tgtCornerRadius, tgtRs) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y, srcCornerRadius, srcRs);\n        pairInfo.vectorNormInverse = vectorNormInverse;\n        swappedpairInfo = {\n          nodesOverlap: pairInfo.nodesOverlap,\n          dirCounts: pairInfo.dirCounts,\n          calculatedIntersection: true,\n          hasBezier: pairInfo.hasBezier,\n          hasUnbundled: pairInfo.hasUnbundled,\n          eles: pairInfo.eles,\n          srcPos: tgtPos,\n          srcRs: tgtRs,\n          tgtPos: srcPos,\n          tgtRs: srcRs,\n          srcW: tgtW,\n          srcH: tgtH,\n          tgtW: srcW,\n          tgtH: srcH,\n          srcIntn: tgtIntn,\n          tgtIntn: srcIntn,\n          srcShape: tgtShape,\n          tgtShape: srcShape,\n          posPts: {\n            x1: posPts.x2,\n            y1: posPts.y2,\n            x2: posPts.x1,\n            y2: posPts.y1\n          },\n          intersectionPts: {\n            x1: intersectionPts.x2,\n            y1: intersectionPts.y2,\n            x2: intersectionPts.x1,\n            y2: intersectionPts.y1\n          },\n          vector: {\n            x: -vector.x,\n            y: -vector.y\n          },\n          vectorNorm: {\n            x: -vectorNorm.x,\n            y: -vectorNorm.y\n          },\n          vectorNormInverse: {\n            x: -vectorNormInverse.x,\n            y: -vectorNormInverse.y\n          }\n        };\n      }\n      var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo;\n      rs.nodesOverlap = passedPairInfo.nodesOverlap;\n      rs.srcIntn = passedPairInfo.srcIntn;\n      rs.tgtIntn = passedPairInfo.tgtIntn;\n      rs.isRound = _curveStyle.startsWith('round');\n      if (hasCompounds && (src.isParent() || src.isChild() || tgt.isParent() || tgt.isChild()) && (src.parents().anySame(tgt) || tgt.parents().anySame(src) || src.same(tgt) && src.isParent())) {\n        _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);\n      } else if (src === tgt) {\n        _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);\n      } else if (_curveStyle.endsWith('segments')) {\n        _this.findSegmentsPoints(_edge, passedPairInfo);\n      } else if (_curveStyle.endsWith('taxi')) {\n        _this.findTaxiPoints(_edge, passedPairInfo);\n      } else if (_curveStyle === 'straight' || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) {\n        _this.findStraightEdgePoints(_edge);\n      } else {\n        _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped);\n      }\n      _this.findEndpoints(_edge);\n      _this.tryToCorrectInvalidPoints(_edge, passedPairInfo);\n      _this.checkForInvalidEdgeWarning(_edge);\n      _this.storeAllpts(_edge);\n      _this.storeEdgeProjections(_edge);\n      _this.calculateArrowAngles(_edge);\n      _this.recalculateEdgeLabelProjections(_edge);\n      _this.calculateLabelAngles(_edge);\n    } // for pair edges\n  };\n  for (var p = 0; p < pairIds.length; p++) {\n    _loop();\n  } // for pair ids\n\n  // haystacks avoid the expense of pairInfo stuff (intersections etc.)\n  this.findHaystackPoints(haystackEdges);\n};\nfunction getPts(pts) {\n  var retPts = [];\n  if (pts == null) {\n    return;\n  }\n  for (var i = 0; i < pts.length; i += 2) {\n    var x = pts[i];\n    var y = pts[i + 1];\n    retPts.push({\n      x: x,\n      y: y\n    });\n  }\n  return retPts;\n}\nBRp$c.getSegmentPoints = function (edge) {\n  var rs = edge[0]._private.rscratch;\n  this.recalculateRenderedStyle(edge);\n  var type = rs.edgeType;\n  if (type === 'segments') {\n    return getPts(rs.segpts);\n  }\n};\nBRp$c.getControlPoints = function (edge) {\n  var rs = edge[0]._private.rscratch;\n  this.recalculateRenderedStyle(edge);\n  var type = rs.edgeType;\n  if (type === 'bezier' || type === 'multibezier' || type === 'self' || type === 'compound') {\n    return getPts(rs.ctrlpts);\n  }\n};\nBRp$c.getEdgeMidpoint = function (edge) {\n  var rs = edge[0]._private.rscratch;\n  this.recalculateRenderedStyle(edge);\n  return {\n    x: rs.midX,\n    y: rs.midY\n  };\n};\n\nvar BRp$b = {};\nBRp$b.manualEndptToPx = function (node, prop) {\n  var r = this;\n  var npos = node.position();\n  var w = node.outerWidth();\n  var h = node.outerHeight();\n  var rs = node._private.rscratch;\n  if (prop.value.length === 2) {\n    var p = [prop.pfValue[0], prop.pfValue[1]];\n    if (prop.units[0] === '%') {\n      p[0] = p[0] * w;\n    }\n    if (prop.units[1] === '%') {\n      p[1] = p[1] * h;\n    }\n    p[0] += npos.x;\n    p[1] += npos.y;\n    return p;\n  } else {\n    var angle = prop.pfValue[0];\n    angle = -Math.PI / 2 + angle; // start at 12 o'clock\n\n    var l = 2 * Math.max(w, h);\n    var _p = [npos.x + Math.cos(angle) * l, npos.y + Math.sin(angle) * l];\n    return r.nodeShapes[this.getNodeShape(node)].intersectLine(npos.x, npos.y, w, h, _p[0], _p[1], 0, node.pstyle('corner-radius').value === 'auto' ? 'auto' : node.pstyle('corner-radius').pfValue, rs);\n  }\n};\nBRp$b.findEndpoints = function (edge) {\n  var _ref, _tgtManEndpt$pfValue, _ref2, _srcManEndpt$pfValue;\n  var r = this;\n  var intersect;\n  var source = edge.source()[0];\n  var target = edge.target()[0];\n  var srcPos = source.position();\n  var tgtPos = target.position();\n  var tgtArShape = edge.pstyle('target-arrow-shape').value;\n  var srcArShape = edge.pstyle('source-arrow-shape').value;\n  var tgtDist = edge.pstyle('target-distance-from-node').pfValue;\n  var srcDist = edge.pstyle('source-distance-from-node').pfValue;\n  var srcRs = source._private.rscratch;\n  var tgtRs = target._private.rscratch;\n  var curveStyle = edge.pstyle('curve-style').value;\n  var rs = edge._private.rscratch;\n  var et = rs.edgeType;\n  var taxi = endsWith(curveStyle, 'taxi'); // Covers taxi and round-taxi\n  var self = et === 'self' || et === 'compound';\n  var bezier = et === 'bezier' || et === 'multibezier' || self;\n  var multi = et !== 'bezier';\n  var lines = et === 'straight' || et === 'segments';\n  var segments = et === 'segments';\n  var hasEndpts = bezier || multi || lines;\n  var overrideEndpts = self || taxi;\n  var srcManEndpt = edge.pstyle('source-endpoint');\n  var srcManEndptVal = overrideEndpts ? 'outside-to-node' : srcManEndpt.value;\n  var srcCornerRadius = source.pstyle('corner-radius').value === 'auto' ? 'auto' : source.pstyle('corner-radius').pfValue;\n  var tgtManEndpt = edge.pstyle('target-endpoint');\n  var tgtManEndptVal = overrideEndpts ? 'outside-to-node' : tgtManEndpt.value;\n  var tgtCornerRadius = target.pstyle('corner-radius').value === 'auto' ? 'auto' : target.pstyle('corner-radius').pfValue;\n  rs.srcManEndpt = srcManEndpt;\n  rs.tgtManEndpt = tgtManEndpt;\n  var p1; // last known point of edge on target side\n  var p2; // last known point of edge on source side\n\n  var p1_i; // point to intersect with target shape\n  var p2_i; // point to intersect with source shape\n\n  var tgtManEndptPt = (_ref = (tgtManEndpt === null || tgtManEndpt === undefined || (_tgtManEndpt$pfValue = tgtManEndpt.pfValue) === null || _tgtManEndpt$pfValue === undefined ? undefined : _tgtManEndpt$pfValue.length) === 2 ? tgtManEndpt.pfValue : null) !== null && _ref !== undefined ? _ref : [0, 0];\n  var srcManEndptPt = (_ref2 = (srcManEndpt === null || srcManEndpt === undefined || (_srcManEndpt$pfValue = srcManEndpt.pfValue) === null || _srcManEndpt$pfValue === undefined ? undefined : _srcManEndpt$pfValue.length) === 2 ? srcManEndpt.pfValue : null) !== null && _ref2 !== undefined ? _ref2 : [0, 0];\n  if (bezier) {\n    var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]];\n    var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart;\n    p1 = cpEnd;\n    p2 = cpStart;\n  } else if (lines) {\n    var srcArrowFromPt = !segments ? [tgtPos.x + tgtManEndptPt[0], tgtPos.y + tgtManEndptPt[1]] : rs.segpts.slice(0, 2);\n    var tgtArrowFromPt = !segments ? [srcPos.x + srcManEndptPt[0], srcPos.y + srcManEndptPt[1]] : rs.segpts.slice(rs.segpts.length - 2);\n    p1 = tgtArrowFromPt;\n    p2 = srcArrowFromPt;\n  }\n  if (tgtManEndptVal === 'inside-to-node') {\n    intersect = [tgtPos.x, tgtPos.y];\n  } else if (tgtManEndpt.units) {\n    intersect = this.manualEndptToPx(target, tgtManEndpt);\n  } else if (tgtManEndptVal === 'outside-to-line') {\n    intersect = rs.tgtIntn; // use cached value from ctrlpt calc\n  } else {\n    if (tgtManEndptVal === 'outside-to-node' || tgtManEndptVal === 'outside-to-node-or-label') {\n      p1_i = p1;\n    } else if (tgtManEndptVal === 'outside-to-line' || tgtManEndptVal === 'outside-to-line-or-label') {\n      p1_i = [srcPos.x, srcPos.y];\n    }\n    intersect = r.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0, tgtCornerRadius, tgtRs);\n    if (tgtManEndptVal === 'outside-to-node-or-label' || tgtManEndptVal === 'outside-to-line-or-label') {\n      var trs = target._private.rscratch;\n      var lw = trs.labelWidth;\n      var lh = trs.labelHeight;\n      var lx = trs.labelX;\n      var ly = trs.labelY;\n      var lw2 = lw / 2;\n      var lh2 = lh / 2;\n      var va = target.pstyle('text-valign').value;\n      if (va === 'top') {\n        ly -= lh2;\n      } else if (va === 'bottom') {\n        ly += lh2;\n      }\n      var ha = target.pstyle('text-halign').value;\n      if (ha === 'left') {\n        lx -= lw2;\n      } else if (ha === 'right') {\n        lx += lw2;\n      }\n      var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y);\n      if (labelIntersect.length > 0) {\n        var refPt = srcPos;\n        var intSqdist = sqdist(refPt, array2point(intersect));\n        var labIntSqdist = sqdist(refPt, array2point(labelIntersect));\n        var minSqDist = intSqdist;\n        if (labIntSqdist < intSqdist) {\n          intersect = labelIntersect;\n          minSqDist = labIntSqdist;\n        }\n        if (labelIntersect.length > 2) {\n          var labInt2SqDist = sqdist(refPt, {\n            x: labelIntersect[2],\n            y: labelIntersect[3]\n          });\n          if (labInt2SqDist < minSqDist) {\n            intersect = [labelIntersect[2], labelIntersect[3]];\n          }\n        }\n      }\n    }\n  }\n  var arrowEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].spacing(edge) + tgtDist);\n  var edgeEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].gap(edge) + tgtDist);\n  rs.endX = edgeEnd[0];\n  rs.endY = edgeEnd[1];\n  rs.arrowEndX = arrowEnd[0];\n  rs.arrowEndY = arrowEnd[1];\n  if (srcManEndptVal === 'inside-to-node') {\n    intersect = [srcPos.x, srcPos.y];\n  } else if (srcManEndpt.units) {\n    intersect = this.manualEndptToPx(source, srcManEndpt);\n  } else if (srcManEndptVal === 'outside-to-line') {\n    intersect = rs.srcIntn; // use cached value from ctrlpt calc\n  } else {\n    if (srcManEndptVal === 'outside-to-node' || srcManEndptVal === 'outside-to-node-or-label') {\n      p2_i = p2;\n    } else if (srcManEndptVal === 'outside-to-line' || srcManEndptVal === 'outside-to-line-or-label') {\n      p2_i = [tgtPos.x, tgtPos.y];\n    }\n    intersect = r.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0, srcCornerRadius, srcRs);\n    if (srcManEndptVal === 'outside-to-node-or-label' || srcManEndptVal === 'outside-to-line-or-label') {\n      var srs = source._private.rscratch;\n      var _lw = srs.labelWidth;\n      var _lh = srs.labelHeight;\n      var _lx = srs.labelX;\n      var _ly = srs.labelY;\n      var _lw2 = _lw / 2;\n      var _lh2 = _lh / 2;\n      var _va = source.pstyle('text-valign').value;\n      if (_va === 'top') {\n        _ly -= _lh2;\n      } else if (_va === 'bottom') {\n        _ly += _lh2;\n      }\n      var _ha = source.pstyle('text-halign').value;\n      if (_ha === 'left') {\n        _lx -= _lw2;\n      } else if (_ha === 'right') {\n        _lx += _lw2;\n      }\n      var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y);\n      if (_labelIntersect.length > 0) {\n        var _refPt = tgtPos;\n        var _intSqdist = sqdist(_refPt, array2point(intersect));\n        var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect));\n        var _minSqDist = _intSqdist;\n        if (_labIntSqdist < _intSqdist) {\n          intersect = [_labelIntersect[0], _labelIntersect[1]];\n          _minSqDist = _labIntSqdist;\n        }\n        if (_labelIntersect.length > 2) {\n          var _labInt2SqDist = sqdist(_refPt, {\n            x: _labelIntersect[2],\n            y: _labelIntersect[3]\n          });\n          if (_labInt2SqDist < _minSqDist) {\n            intersect = [_labelIntersect[2], _labelIntersect[3]];\n          }\n        }\n      }\n    }\n  }\n  var arrowStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].spacing(edge) + srcDist);\n  var edgeStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].gap(edge) + srcDist);\n  rs.startX = edgeStart[0];\n  rs.startY = edgeStart[1];\n  rs.arrowStartX = arrowStart[0];\n  rs.arrowStartY = arrowStart[1];\n  if (hasEndpts) {\n    if (!number$1(rs.startX) || !number$1(rs.startY) || !number$1(rs.endX) || !number$1(rs.endY)) {\n      rs.badLine = true;\n    } else {\n      rs.badLine = false;\n    }\n  }\n};\nBRp$b.getSourceEndpoint = function (edge) {\n  var rs = edge[0]._private.rscratch;\n  this.recalculateRenderedStyle(edge);\n  switch (rs.edgeType) {\n    case 'haystack':\n      return {\n        x: rs.haystackPts[0],\n        y: rs.haystackPts[1]\n      };\n    default:\n      return {\n        x: rs.arrowStartX,\n        y: rs.arrowStartY\n      };\n  }\n};\nBRp$b.getTargetEndpoint = function (edge) {\n  var rs = edge[0]._private.rscratch;\n  this.recalculateRenderedStyle(edge);\n  switch (rs.edgeType) {\n    case 'haystack':\n      return {\n        x: rs.haystackPts[2],\n        y: rs.haystackPts[3]\n      };\n    default:\n      return {\n        x: rs.arrowEndX,\n        y: rs.arrowEndY\n      };\n  }\n};\n\nvar BRp$a = {};\nfunction pushBezierPts(r, edge, pts) {\n  var qbezierAt$1 = function qbezierAt$1(p1, p2, p3, t) {\n    return qbezierAt(p1, p2, p3, t);\n  };\n  var _p = edge._private;\n  var bpts = _p.rstyle.bezierPts;\n  for (var i = 0; i < r.bezierProjPcts.length; i++) {\n    var p = r.bezierProjPcts[i];\n    bpts.push({\n      x: qbezierAt$1(pts[0], pts[2], pts[4], p),\n      y: qbezierAt$1(pts[1], pts[3], pts[5], p)\n    });\n  }\n}\nBRp$a.storeEdgeProjections = function (edge) {\n  var _p = edge._private;\n  var rs = _p.rscratch;\n  var et = rs.edgeType;\n\n  // clear the cached points state\n  _p.rstyle.bezierPts = null;\n  _p.rstyle.linePts = null;\n  _p.rstyle.haystackPts = null;\n  if (et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound') {\n    _p.rstyle.bezierPts = [];\n    for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n      pushBezierPts(this, edge, rs.allpts.slice(i, i + 6));\n    }\n  } else if (et === 'segments') {\n    var lpts = _p.rstyle.linePts = [];\n    for (var i = 0; i + 1 < rs.allpts.length; i += 2) {\n      lpts.push({\n        x: rs.allpts[i],\n        y: rs.allpts[i + 1]\n      });\n    }\n  } else if (et === 'haystack') {\n    var hpts = rs.haystackPts;\n    _p.rstyle.haystackPts = [{\n      x: hpts[0],\n      y: hpts[1]\n    }, {\n      x: hpts[2],\n      y: hpts[3]\n    }];\n  }\n  _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;\n};\nBRp$a.recalculateEdgeProjections = function (edges) {\n  this.findEdgeControlPoints(edges);\n};\n\nvar BRp$9 = {};\nBRp$9.recalculateNodeLabelProjection = function (node) {\n  var content = node.pstyle('label').strValue;\n  if (emptyString(content)) {\n    return;\n  }\n  var textX, textY;\n  var _p = node._private;\n  var nodeWidth = node.width();\n  var nodeHeight = node.height();\n  var padding = node.padding();\n  var nodePos = node.position();\n  var textHalign = node.pstyle('text-halign').strValue;\n  var textValign = node.pstyle('text-valign').strValue;\n  var rs = _p.rscratch;\n  var rstyle = _p.rstyle;\n  switch (textHalign) {\n    case 'left':\n      textX = nodePos.x - nodeWidth / 2 - padding;\n      break;\n    case 'right':\n      textX = nodePos.x + nodeWidth / 2 + padding;\n      break;\n    default:\n      // e.g. center\n      textX = nodePos.x;\n  }\n  switch (textValign) {\n    case 'top':\n      textY = nodePos.y - nodeHeight / 2 - padding;\n      break;\n    case 'bottom':\n      textY = nodePos.y + nodeHeight / 2 + padding;\n      break;\n    default:\n      // e.g. middle\n      textY = nodePos.y;\n  }\n  rs.labelX = textX;\n  rs.labelY = textY;\n  rstyle.labelX = textX;\n  rstyle.labelY = textY;\n  this.calculateLabelAngles(node);\n  this.applyLabelDimensions(node);\n};\nvar lineAngleFromDelta = function lineAngleFromDelta(dx, dy) {\n  var angle = Math.atan(dy / dx);\n  if (dx === 0 && angle < 0) {\n    angle = angle * -1;\n  }\n  return angle;\n};\nvar lineAngle = function lineAngle(p0, p1) {\n  var dx = p1.x - p0.x;\n  var dy = p1.y - p0.y;\n  return lineAngleFromDelta(dx, dy);\n};\nvar bezierAngle = function bezierAngle(p0, p1, p2, t) {\n  var t0 = bound(0, t - 0.001, 1);\n  var t1 = bound(0, t + 0.001, 1);\n  var lp0 = qbezierPtAt(p0, p1, p2, t0);\n  var lp1 = qbezierPtAt(p0, p1, p2, t1);\n  return lineAngle(lp0, lp1);\n};\nBRp$9.recalculateEdgeLabelProjections = function (edge) {\n  var p;\n  var _p = edge._private;\n  var rs = _p.rscratch;\n  var r = this;\n  var content = {\n    mid: edge.pstyle('label').strValue,\n    source: edge.pstyle('source-label').strValue,\n    target: edge.pstyle('target-label').strValue\n  };\n  if (content.mid || content.source || content.target) ; else {\n    return; // no labels => no calcs\n  }\n\n  // add center point to style so bounding box calculations can use it\n  //\n  p = {\n    x: rs.midX,\n    y: rs.midY\n  };\n  var setRs = function setRs(propName, prefix, value) {\n    setPrefixedProperty(_p.rscratch, propName, prefix, value);\n    setPrefixedProperty(_p.rstyle, propName, prefix, value);\n  };\n  setRs('labelX', null, p.x);\n  setRs('labelY', null, p.y);\n  var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY);\n  setRs('labelAutoAngle', null, midAngle);\n  var _createControlPointInfo = function createControlPointInfo() {\n    if (_createControlPointInfo.cache) {\n      return _createControlPointInfo.cache;\n    } // use cache so only 1x per edge\n\n    var ctrlpts = [];\n\n    // store each ctrlpt info init\n    for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n      var p0 = {\n        x: rs.allpts[i],\n        y: rs.allpts[i + 1]\n      };\n      var p1 = {\n        x: rs.allpts[i + 2],\n        y: rs.allpts[i + 3]\n      }; // ctrlpt\n      var p2 = {\n        x: rs.allpts[i + 4],\n        y: rs.allpts[i + 5]\n      };\n      ctrlpts.push({\n        p0: p0,\n        p1: p1,\n        p2: p2,\n        startDist: 0,\n        length: 0,\n        segments: []\n      });\n    }\n    var bpts = _p.rstyle.bezierPts;\n    var nProjs = r.bezierProjPcts.length;\n    function addSegment(cp, p0, p1, t0, t1) {\n      var length = dist(p0, p1);\n      var prevSegment = cp.segments[cp.segments.length - 1];\n      var segment = {\n        p0: p0,\n        p1: p1,\n        t0: t0,\n        t1: t1,\n        startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0,\n        length: length\n      };\n      cp.segments.push(segment);\n      cp.length += length;\n    }\n\n    // update each ctrlpt with segment info\n    for (var _i = 0; _i < ctrlpts.length; _i++) {\n      var cp = ctrlpts[_i];\n      var prevCp = ctrlpts[_i - 1];\n      if (prevCp) {\n        cp.startDist = prevCp.startDist + prevCp.length;\n      }\n      addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r.bezierProjPcts[0]); // first\n\n      for (var j = 0; j < nProjs - 1; j++) {\n        addSegment(cp, bpts[_i * nProjs + j], bpts[_i * nProjs + j + 1], r.bezierProjPcts[j], r.bezierProjPcts[j + 1]);\n      }\n      addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r.bezierProjPcts[nProjs - 1], 1); // last\n    }\n    return _createControlPointInfo.cache = ctrlpts;\n  };\n  var calculateEndProjection = function calculateEndProjection(prefix) {\n    var angle;\n    var isSrc = prefix === 'source';\n    if (!content[prefix]) {\n      return;\n    }\n    var offset = edge.pstyle(prefix + '-text-offset').pfValue;\n    switch (rs.edgeType) {\n      case 'self':\n      case 'compound':\n      case 'bezier':\n      case 'multibezier':\n        {\n          var cps = _createControlPointInfo();\n          var selected;\n          var startDist = 0;\n          var totalDist = 0;\n\n          // find the segment we're on\n          for (var i = 0; i < cps.length; i++) {\n            var _cp = cps[isSrc ? i : cps.length - 1 - i];\n            for (var j = 0; j < _cp.segments.length; j++) {\n              var _seg = _cp.segments[isSrc ? j : _cp.segments.length - 1 - j];\n              var lastSeg = i === cps.length - 1 && j === _cp.segments.length - 1;\n              startDist = totalDist;\n              totalDist += _seg.length;\n              if (totalDist >= offset || lastSeg) {\n                selected = {\n                  cp: _cp,\n                  segment: _seg\n                };\n                break;\n              }\n            }\n            if (selected) {\n              break;\n            }\n          }\n          var cp = selected.cp;\n          var seg = selected.segment;\n          var tSegment = (offset - startDist) / seg.length;\n          var segDt = seg.t1 - seg.t0;\n          var t = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment;\n          t = bound(0, t, 1);\n          p = qbezierPtAt(cp.p0, cp.p1, cp.p2, t);\n          angle = bezierAngle(cp.p0, cp.p1, cp.p2, t);\n          break;\n        }\n      case 'straight':\n      case 'segments':\n      case 'haystack':\n        {\n          var d = 0,\n            di,\n            d0;\n          var p0, p1;\n          var l = rs.allpts.length;\n          for (var _i2 = 0; _i2 + 3 < l; _i2 += 2) {\n            if (isSrc) {\n              p0 = {\n                x: rs.allpts[_i2],\n                y: rs.allpts[_i2 + 1]\n              };\n              p1 = {\n                x: rs.allpts[_i2 + 2],\n                y: rs.allpts[_i2 + 3]\n              };\n            } else {\n              p0 = {\n                x: rs.allpts[l - 2 - _i2],\n                y: rs.allpts[l - 1 - _i2]\n              };\n              p1 = {\n                x: rs.allpts[l - 4 - _i2],\n                y: rs.allpts[l - 3 - _i2]\n              };\n            }\n            di = dist(p0, p1);\n            d0 = d;\n            d += di;\n            if (d >= offset) {\n              break;\n            }\n          }\n          var pD = offset - d0;\n          var _t = pD / di;\n          _t = bound(0, _t, 1);\n          p = lineAt(p0, p1, _t);\n          angle = lineAngle(p0, p1);\n          break;\n        }\n    }\n    setRs('labelX', prefix, p.x);\n    setRs('labelY', prefix, p.y);\n    setRs('labelAutoAngle', prefix, angle);\n  };\n  calculateEndProjection('source');\n  calculateEndProjection('target');\n  this.applyLabelDimensions(edge);\n};\nBRp$9.applyLabelDimensions = function (ele) {\n  this.applyPrefixedLabelDimensions(ele);\n  if (ele.isEdge()) {\n    this.applyPrefixedLabelDimensions(ele, 'source');\n    this.applyPrefixedLabelDimensions(ele, 'target');\n  }\n};\nBRp$9.applyPrefixedLabelDimensions = function (ele, prefix) {\n  var _p = ele._private;\n  var text = this.getLabelText(ele, prefix);\n  var cacheKey = hashString(text, ele._private.labelDimsKey);\n\n  // save recalc if the label is the same as before\n  if (getPrefixedProperty(_p.rscratch, 'prefixedLabelDimsKey', prefix) === cacheKey) {\n    return; // then the label dimensions + text are the same\n  }\n\n  // save the key\n  setPrefixedProperty(_p.rscratch, 'prefixedLabelDimsKey', prefix, cacheKey);\n  var labelDims = this.calculateLabelDimensions(ele, text);\n  var lineHeight = ele.pstyle('line-height').pfValue;\n  var textWrap = ele.pstyle('text-wrap').strValue;\n  var lines = getPrefixedProperty(_p.rscratch, 'labelWrapCachedLines', prefix) || [];\n  var numLines = textWrap !== 'wrap' ? 1 : Math.max(lines.length, 1);\n  var normPerLineHeight = labelDims.height / numLines;\n  var labelLineHeight = normPerLineHeight * lineHeight;\n  var width = labelDims.width;\n  var height = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight;\n  setPrefixedProperty(_p.rstyle, 'labelWidth', prefix, width);\n  setPrefixedProperty(_p.rscratch, 'labelWidth', prefix, width);\n  setPrefixedProperty(_p.rstyle, 'labelHeight', prefix, height);\n  setPrefixedProperty(_p.rscratch, 'labelHeight', prefix, height);\n  setPrefixedProperty(_p.rscratch, 'labelLineHeight', prefix, labelLineHeight);\n};\nBRp$9.getLabelText = function (ele, prefix) {\n  var _p = ele._private;\n  var pfd = prefix ? prefix + '-' : '';\n  var text = ele.pstyle(pfd + 'label').strValue;\n  var textTransform = ele.pstyle('text-transform').value;\n  var rscratch = function rscratch(propName, value) {\n    if (value) {\n      setPrefixedProperty(_p.rscratch, propName, prefix, value);\n      return value;\n    } else {\n      return getPrefixedProperty(_p.rscratch, propName, prefix);\n    }\n  };\n\n  // for empty text, skip all processing\n  if (!text) {\n    return '';\n  }\n  if (textTransform == 'none') ; else if (textTransform == 'uppercase') {\n    text = text.toUpperCase();\n  } else if (textTransform == 'lowercase') {\n    text = text.toLowerCase();\n  }\n  var wrapStyle = ele.pstyle('text-wrap').value;\n  if (wrapStyle === 'wrap') {\n    var labelKey = rscratch('labelKey');\n\n    // save recalc if the label is the same as before\n    if (labelKey != null && rscratch('labelWrapKey') === labelKey) {\n      return rscratch('labelWrapCachedText');\n    }\n    var zwsp = \"\\u200B\";\n    var lines = text.split('\\n');\n    var maxW = ele.pstyle('text-max-width').pfValue;\n    var overflow = ele.pstyle('text-overflow-wrap').value;\n    var overflowAny = overflow === 'anywhere';\n    var wrappedLines = [];\n    var separatorRegex = /[\\s\\u200b]+|$/g; // Include end of string to add last word\n\n    for (var l = 0; l < lines.length; l++) {\n      var line = lines[l];\n      var lineDims = this.calculateLabelDimensions(ele, line);\n      var lineW = lineDims.width;\n      if (overflowAny) {\n        var processedLine = line.split('').join(zwsp);\n        line = processedLine;\n      }\n      if (lineW > maxW) {\n        // line is too long\n        var separatorMatches = line.matchAll(separatorRegex);\n        var subline = '';\n        var previousIndex = 0;\n        // Add fake match\n        var _iterator = _createForOfIteratorHelper(separatorMatches),\n          _step;\n        try {\n          for (_iterator.s(); !(_step = _iterator.n()).done;) {\n            var separatorMatch = _step.value;\n            var wordSeparator = separatorMatch[0];\n            var word = line.substring(previousIndex, separatorMatch.index);\n            previousIndex = separatorMatch.index + wordSeparator.length;\n            var testLine = subline.length === 0 ? word : subline + word + wordSeparator;\n            var testDims = this.calculateLabelDimensions(ele, testLine);\n            var testW = testDims.width;\n            if (testW <= maxW) {\n              // word fits on current line\n              subline += word + wordSeparator;\n            } else {\n              // word starts new line\n              if (subline) {\n                wrappedLines.push(subline);\n              }\n              subline = word + wordSeparator;\n            }\n          }\n\n          // if there's remaining text, put it in a wrapped line\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n        if (!subline.match(/^[\\s\\u200b]+$/)) {\n          wrappedLines.push(subline);\n        }\n      } else {\n        // line is already short enough\n        wrappedLines.push(line);\n      }\n    } // for\n\n    rscratch('labelWrapCachedLines', wrappedLines);\n    text = rscratch('labelWrapCachedText', wrappedLines.join('\\n'));\n    rscratch('labelWrapKey', labelKey);\n  } else if (wrapStyle === 'ellipsis') {\n    var _maxW = ele.pstyle('text-max-width').pfValue;\n    var ellipsized = '';\n    var ellipsis = \"\\u2026\";\n    var incLastCh = false;\n    if (this.calculateLabelDimensions(ele, text).width < _maxW) {\n      // the label already fits\n      return text;\n    }\n    for (var i = 0; i < text.length; i++) {\n      var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text[i] + ellipsis).width;\n      if (widthWithNextCh > _maxW) {\n        break;\n      }\n      ellipsized += text[i];\n      if (i === text.length - 1) {\n        incLastCh = true;\n      }\n    }\n    if (!incLastCh) {\n      ellipsized += ellipsis;\n    }\n    return ellipsized;\n  } // if ellipsize\n\n  return text;\n};\nBRp$9.getLabelJustification = function (ele) {\n  var justification = ele.pstyle('text-justification').strValue;\n  var textHalign = ele.pstyle('text-halign').strValue;\n  if (justification === 'auto') {\n    if (ele.isNode()) {\n      switch (textHalign) {\n        case 'left':\n          return 'right';\n        case 'right':\n          return 'left';\n        default:\n          return 'center';\n      }\n    } else {\n      return 'center';\n    }\n  } else {\n    return justification;\n  }\n};\nBRp$9.calculateLabelDimensions = function (ele, text) {\n  var r = this;\n  var containerWindow = r.cy.window();\n  var document = containerWindow.document;\n  var padding = 0; // add padding around text dims, as the measurement isn't that accurate\n  var fStyle = ele.pstyle('font-style').strValue;\n  var size = ele.pstyle('font-size').pfValue;\n  var family = ele.pstyle('font-family').strValue;\n  var weight = ele.pstyle('font-weight').strValue;\n  var canvas = this.labelCalcCanvas;\n  var c2d = this.labelCalcCanvasContext;\n  if (!canvas) {\n    canvas = this.labelCalcCanvas = document.createElement('canvas');\n    c2d = this.labelCalcCanvasContext = canvas.getContext('2d');\n    var ds = canvas.style;\n    ds.position = 'absolute';\n    ds.left = '-9999px';\n    ds.top = '-9999px';\n    ds.zIndex = '-1';\n    ds.visibility = 'hidden';\n    ds.pointerEvents = 'none';\n  }\n  c2d.font = \"\".concat(fStyle, \" \").concat(weight, \" \").concat(size, \"px \").concat(family);\n  var width = 0;\n  var height = 0;\n  var lines = text.split('\\n');\n  for (var i = 0; i < lines.length; i++) {\n    var line = lines[i];\n    var metrics = c2d.measureText(line);\n    var w = Math.ceil(metrics.width);\n    var h = size;\n    width = Math.max(w, width);\n    height += h;\n  }\n  width += padding;\n  height += padding;\n  return {\n    width: width,\n    height: height\n  };\n};\nBRp$9.calculateLabelAngle = function (ele, prefix) {\n  var _p = ele._private;\n  var rs = _p.rscratch;\n  var isEdge = ele.isEdge();\n  var prefixDash = prefix ? prefix + '-' : '';\n  var rot = ele.pstyle(prefixDash + 'text-rotation');\n  var rotStr = rot.strValue;\n  if (rotStr === 'none') {\n    return 0;\n  } else if (isEdge && rotStr === 'autorotate') {\n    return rs.labelAutoAngle;\n  } else if (rotStr === 'autorotate') {\n    return 0;\n  } else {\n    return rot.pfValue;\n  }\n};\nBRp$9.calculateLabelAngles = function (ele) {\n  var r = this;\n  var isEdge = ele.isEdge();\n  var _p = ele._private;\n  var rs = _p.rscratch;\n  rs.labelAngle = r.calculateLabelAngle(ele);\n  if (isEdge) {\n    rs.sourceLabelAngle = r.calculateLabelAngle(ele, 'source');\n    rs.targetLabelAngle = r.calculateLabelAngle(ele, 'target');\n  }\n};\n\nvar BRp$8 = {};\nvar TOO_SMALL_CUT_RECT = 28;\nvar warnedCutRect = false;\nBRp$8.getNodeShape = function (node) {\n  var r = this;\n  var shape = node.pstyle('shape').value;\n  if (shape === 'cutrectangle' && (node.width() < TOO_SMALL_CUT_RECT || node.height() < TOO_SMALL_CUT_RECT)) {\n    if (!warnedCutRect) {\n      warn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead');\n      warnedCutRect = true;\n    }\n    return 'rectangle';\n  }\n  if (node.isParent()) {\n    if (shape === 'rectangle' || shape === 'roundrectangle' || shape === 'round-rectangle' || shape === 'cutrectangle' || shape === 'cut-rectangle' || shape === 'barrel') {\n      return shape;\n    } else {\n      return 'rectangle';\n    }\n  }\n  if (shape === 'polygon') {\n    var points = node.pstyle('shape-polygon-points').value;\n    return r.nodeShapes.makePolygon(points).name;\n  }\n  return shape;\n};\n\nvar BRp$7 = {};\nBRp$7.registerCalculationListeners = function () {\n  var cy = this.cy;\n  var elesToUpdate = cy.collection();\n  var r = this;\n  var enqueue = function enqueue(eles) {\n    var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    elesToUpdate.merge(eles);\n    if (dirtyStyleCaches) {\n      for (var i = 0; i < eles.length; i++) {\n        var ele = eles[i];\n        var _p = ele._private;\n        var rstyle = _p.rstyle;\n        rstyle.clean = false;\n        rstyle.cleanConnected = false;\n      }\n    }\n  };\n  r.binder(cy).on('bounds.* dirty.*', function onDirtyBounds(e) {\n    var ele = e.target;\n    enqueue(ele);\n  }).on('style.* background.*', function onDirtyStyle(e) {\n    var ele = e.target;\n    enqueue(ele, false);\n  });\n  var updateEleCalcs = function updateEleCalcs(willDraw) {\n    if (willDraw) {\n      var fns = r.onUpdateEleCalcsFns;\n\n      // because we need to have up-to-date style (e.g. stylesheet mappers)\n      // before calculating rendered style (and pstyle might not be called yet)\n      elesToUpdate.cleanStyle();\n      for (var i = 0; i < elesToUpdate.length; i++) {\n        var ele = elesToUpdate[i];\n        var rstyle = ele._private.rstyle;\n        if (ele.isNode() && !rstyle.cleanConnected) {\n          enqueue(ele.connectedEdges());\n          rstyle.cleanConnected = true;\n        }\n      }\n      if (fns) {\n        for (var _i = 0; _i < fns.length; _i++) {\n          var fn = fns[_i];\n          fn(willDraw, elesToUpdate);\n        }\n      }\n      r.recalculateRenderedStyle(elesToUpdate);\n      elesToUpdate = cy.collection();\n    }\n  };\n  r.flushRenderedStyleQueue = function () {\n    updateEleCalcs(true);\n  };\n  r.beforeRender(updateEleCalcs, r.beforeRenderPriorities.eleCalcs);\n};\nBRp$7.onUpdateEleCalcs = function (fn) {\n  var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || [];\n  fns.push(fn);\n};\nBRp$7.recalculateRenderedStyle = function (eles, useCache) {\n  var isCleanConnected = function isCleanConnected(ele) {\n    return ele._private.rstyle.cleanConnected;\n  };\n  if (eles.length === 0) {\n    return;\n  }\n  var edges = [];\n  var nodes = [];\n\n  // the renderer can't be used for calcs when destroyed, e.g. ele.boundingBox()\n  if (this.destroyed) {\n    return;\n  }\n\n  // use cache by default for perf\n  if (useCache === undefined) {\n    useCache = true;\n  }\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    var _p = ele._private;\n    var rstyle = _p.rstyle;\n\n    // an edge may be implicitly dirty b/c of one of its connected nodes\n    // (and a request for recalc may come in between frames)\n    if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) {\n      rstyle.clean = false;\n    }\n    if (ele.isEdge() && ele.isBundledBezier()) {\n      if (ele.parallelEdges().some(function (ele) {\n        return !ele._private.rstyle.clean && ele.isBundledBezier();\n      })) {\n        rstyle.clean = false;\n      }\n    }\n\n    // only update if dirty and in graph\n    if (useCache && rstyle.clean || ele.removed()) {\n      continue;\n    }\n\n    // only update if not display: none\n    if (ele.pstyle('display').value === 'none') {\n      continue;\n    }\n    if (_p.group === 'nodes') {\n      nodes.push(ele);\n    } else {\n      // edges\n      edges.push(ele);\n    }\n    rstyle.clean = true;\n  }\n\n  // update node data from projections\n  for (var _i2 = 0; _i2 < nodes.length; _i2++) {\n    var _ele = nodes[_i2];\n    var _p2 = _ele._private;\n    var _rstyle = _p2.rstyle;\n    var pos = _ele.position();\n    this.recalculateNodeLabelProjection(_ele);\n    _rstyle.nodeX = pos.x;\n    _rstyle.nodeY = pos.y;\n    _rstyle.nodeW = _ele.pstyle('width').pfValue;\n    _rstyle.nodeH = _ele.pstyle('height').pfValue;\n  }\n  this.recalculateEdgeProjections(edges);\n\n  // update edge data from projections\n  for (var _i3 = 0; _i3 < edges.length; _i3++) {\n    var _ele2 = edges[_i3];\n    var _p3 = _ele2._private;\n    var _rstyle2 = _p3.rstyle;\n    var rs = _p3.rscratch;\n\n    // update rstyle positions\n    _rstyle2.srcX = rs.arrowStartX;\n    _rstyle2.srcY = rs.arrowStartY;\n    _rstyle2.tgtX = rs.arrowEndX;\n    _rstyle2.tgtY = rs.arrowEndY;\n    _rstyle2.midX = rs.midX;\n    _rstyle2.midY = rs.midY;\n    _rstyle2.labelAngle = rs.labelAngle;\n    _rstyle2.sourceLabelAngle = rs.sourceLabelAngle;\n    _rstyle2.targetLabelAngle = rs.targetLabelAngle;\n  }\n};\n\nvar BRp$6 = {};\nBRp$6.updateCachedGrabbedEles = function () {\n  var eles = this.cachedZSortedEles;\n  if (!eles) {\n    // just let this be recalculated on the next z sort tick\n    return;\n  }\n  eles.drag = [];\n  eles.nondrag = [];\n  var grabTargets = [];\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    var rs = ele._private.rscratch;\n    if (ele.grabbed() && !ele.isParent()) {\n      grabTargets.push(ele);\n    } else if (rs.inDragLayer) {\n      eles.drag.push(ele);\n    } else {\n      eles.nondrag.push(ele);\n    }\n  }\n\n  // put the grab target nodes last so it's on top of its neighbourhood\n  for (var i = 0; i < grabTargets.length; i++) {\n    var ele = grabTargets[i];\n    eles.drag.push(ele);\n  }\n};\nBRp$6.invalidateCachedZSortedEles = function () {\n  this.cachedZSortedEles = null;\n};\nBRp$6.getCachedZSortedEles = function (forceRecalc) {\n  if (forceRecalc || !this.cachedZSortedEles) {\n    var eles = this.cy.mutableElements().toArray();\n    eles.sort(zIndexSort);\n    eles.interactive = eles.filter(function (ele) {\n      return ele.interactive();\n    });\n    this.cachedZSortedEles = eles;\n    this.updateCachedGrabbedEles();\n  } else {\n    eles = this.cachedZSortedEles;\n  }\n  return eles;\n};\n\nvar BRp$5 = {};\n[BRp$e, BRp$d, BRp$c, BRp$b, BRp$a, BRp$9, BRp$8, BRp$7, BRp$6].forEach(function (props) {\n  extend(BRp$5, props);\n});\n\nvar BRp$4 = {};\nBRp$4.getCachedImage = function (url, crossOrigin, onLoad) {\n  var r = this;\n  var imageCache = r.imageCache = r.imageCache || {};\n  var cache = imageCache[url];\n  if (cache) {\n    if (!cache.image.complete) {\n      cache.image.addEventListener('load', onLoad);\n    }\n    return cache.image;\n  } else {\n    cache = imageCache[url] = imageCache[url] || {};\n    var image = cache.image = new Image(); // eslint-disable-line no-undef\n\n    image.addEventListener('load', onLoad);\n    image.addEventListener('error', function () {\n      image.error = true;\n    });\n\n    // #1582 safari doesn't load data uris with crossOrigin properly\n    // https://bugs.webkit.org/show_bug.cgi?id=123978\n    var dataUriPrefix = 'data:';\n    var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix;\n    if (!isDataUri) {\n      // if crossorigin is 'null'(stringified), then manually set it to null \n      crossOrigin = crossOrigin === 'null' ? null : crossOrigin;\n      image.crossOrigin = crossOrigin; // prevent tainted canvas\n    }\n    image.src = url;\n    return image;\n  }\n};\n\nvar setGrabState = function setGrabState(ele, grabbed) {\n  var ele0 = ele[0];\n  if (!ele0 || ele0._private.grabbed === grabbed) {\n    return;\n  }\n  ele0._private.grabbed = grabbed;\n  ele.updateStyle(false);\n};\nvar setGrabbed = function setGrabbed(ele) {\n  setGrabState(ele, true);\n};\nvar setFreed = function setFreed(ele) {\n  setGrabState(ele, false);\n};\n\nvar BRp$3 = {};\n\n/* global document, ResizeObserver, MutationObserver */\n\nBRp$3.registerBinding = function (target, event, handler, useCapture) {\n  // eslint-disable-line no-unused-vars\n  var args = Array.prototype.slice.apply(arguments, [1]); // copy\n\n  if (Array.isArray(target)) {\n    var res = [];\n    for (var i = 0; i < target.length; i++) {\n      var t = target[i];\n      if (t !== undefined) {\n        var b = this.binder(t);\n        res.push(b.on.apply(b, args));\n      }\n    }\n    return res;\n  }\n  var b = this.binder(target);\n  return b.on.apply(b, args);\n};\nBRp$3.binder = function (tgt) {\n  var r = this;\n  var containerWindow = r.cy.window();\n  var tgtIsDom = tgt === containerWindow || tgt === containerWindow.document || tgt === containerWindow.document.body || domElement(tgt);\n  if (r.supportsPassiveEvents == null) {\n    // from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n    var supportsPassive = false;\n    try {\n      var opts = Object.defineProperty({}, 'passive', {\n        get: function get() {\n          supportsPassive = true;\n          return true;\n        }\n      });\n      containerWindow.addEventListener('test', null, opts);\n    } catch (err) {\n      // not supported\n    }\n    r.supportsPassiveEvents = supportsPassive;\n  }\n  var on = function on(event, handler, useCapture) {\n    var args = Array.prototype.slice.call(arguments);\n    if (tgtIsDom && r.supportsPassiveEvents) {\n      // replace useCapture w/ opts obj\n      args[2] = {\n        capture: useCapture != null ? useCapture : false,\n        passive: false,\n        once: false\n      };\n    }\n    r.bindings.push({\n      target: tgt,\n      args: args\n    });\n    (tgt.addEventListener || tgt.on).apply(tgt, args);\n    return this;\n  };\n  return {\n    on: on,\n    addEventListener: on,\n    addListener: on,\n    bind: on\n  };\n};\nBRp$3.nodeIsDraggable = function (node) {\n  return node && node.isNode() && !node.locked() && node.grabbable();\n};\nBRp$3.nodeIsGrabbable = function (node) {\n  return this.nodeIsDraggable(node) && node.interactive();\n};\nBRp$3.load = function () {\n  var r = this;\n  var containerWindow = r.cy.window();\n  var isSelected = function isSelected(ele) {\n    return ele.selected();\n  };\n  var getShadowRoot = function getShadowRoot(element) {\n    var rootNode = element.getRootNode();\n    // Check if the root node is a shadow root\n    if (rootNode && rootNode.nodeType === 11 && rootNode.host !== undefined) {\n      return rootNode;\n    }\n  };\n  var triggerEvents = function triggerEvents(target, names, e, position) {\n    if (target == null) {\n      target = r.cy;\n    }\n    for (var i = 0; i < names.length; i++) {\n      var name = names[i];\n      target.emit({\n        originalEvent: e,\n        type: name,\n        position: position\n      });\n    }\n  };\n  var isMultSelKeyDown = function isMultSelKeyDown(e) {\n    return e.shiftKey || e.metaKey || e.ctrlKey; // maybe e.altKey\n  };\n  var allowPanningPassthrough = function allowPanningPassthrough(down, downs) {\n    var allowPassthrough = true;\n    if (r.cy.hasCompoundNodes() && down && down.pannable()) {\n      // a grabbable compound node below the ele => no passthrough panning\n      for (var i = 0; downs && i < downs.length; i++) {\n        var down = downs[i];\n\n        //if any parent node in event hierarchy isn't pannable, reject passthrough\n        if (down.isNode() && down.isParent() && !down.pannable()) {\n          allowPassthrough = false;\n          break;\n        }\n      }\n    } else {\n      allowPassthrough = true;\n    }\n    return allowPassthrough;\n  };\n  var setInDragLayer = function setInDragLayer(ele) {\n    ele[0]._private.rscratch.inDragLayer = true;\n  };\n  var setOutDragLayer = function setOutDragLayer(ele) {\n    ele[0]._private.rscratch.inDragLayer = false;\n  };\n  var setGrabTarget = function setGrabTarget(ele) {\n    ele[0]._private.rscratch.isGrabTarget = true;\n  };\n  var removeGrabTarget = function removeGrabTarget(ele) {\n    ele[0]._private.rscratch.isGrabTarget = false;\n  };\n  var addToDragList = function addToDragList(ele, opts) {\n    var list = opts.addToList;\n    var listHasEle = list.has(ele);\n    if (!listHasEle && ele.grabbable() && !ele.locked()) {\n      list.merge(ele);\n      setGrabbed(ele);\n    }\n  };\n\n  // helper function to determine which child nodes and inner edges\n  // of a compound node to be dragged as well as the grabbed and selected nodes\n  var addDescendantsToDrag = function addDescendantsToDrag(node, opts) {\n    if (!node.cy().hasCompoundNodes()) {\n      return;\n    }\n    if (opts.inDragLayer == null && opts.addToList == null) {\n      return;\n    } // nothing to do\n\n    var innerNodes = node.descendants();\n    if (opts.inDragLayer) {\n      innerNodes.forEach(setInDragLayer);\n      innerNodes.connectedEdges().forEach(setInDragLayer);\n    }\n    if (opts.addToList) {\n      addToDragList(innerNodes, opts);\n    }\n  };\n\n  // adds the given nodes and its neighbourhood to the drag layer\n  var addNodesToDrag = function addNodesToDrag(nodes, opts) {\n    opts = opts || {};\n    var hasCompoundNodes = nodes.cy().hasCompoundNodes();\n    if (opts.inDragLayer) {\n      nodes.forEach(setInDragLayer);\n      nodes.neighborhood().stdFilter(function (ele) {\n        return !hasCompoundNodes || ele.isEdge();\n      }).forEach(setInDragLayer);\n    }\n    if (opts.addToList) {\n      nodes.forEach(function (ele) {\n        addToDragList(ele, opts);\n      });\n    }\n    addDescendantsToDrag(nodes, opts); // always add to drag\n\n    // also add nodes and edges related to the topmost ancestor\n    updateAncestorsInDragLayer(nodes, {\n      inDragLayer: opts.inDragLayer\n    });\n    r.updateCachedGrabbedEles();\n  };\n  var addNodeToDrag = addNodesToDrag;\n  var freeDraggedElements = function freeDraggedElements(grabbedEles) {\n    if (!grabbedEles) {\n      return;\n    }\n\n    // just go over all elements rather than doing a bunch of (possibly expensive) traversals\n    r.getCachedZSortedEles().forEach(function (ele) {\n      setFreed(ele);\n      setOutDragLayer(ele);\n      removeGrabTarget(ele);\n    });\n    r.updateCachedGrabbedEles();\n  };\n\n  // helper function to determine which ancestor nodes and edges should go\n  // to the drag layer (or should be removed from drag layer).\n  var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) {\n    if (opts.inDragLayer == null && opts.addToList == null) {\n      return;\n    } // nothing to do\n\n    if (!node.cy().hasCompoundNodes()) {\n      return;\n    }\n\n    // find top-level parent\n    var parent = node.ancestors().orphans();\n\n    // no parent node: no nodes to add to the drag layer\n    if (parent.same(node)) {\n      return;\n    }\n    var nodes = parent.descendants().spawnSelf().merge(parent).unmerge(node).unmerge(node.descendants());\n    var edges = nodes.connectedEdges();\n    if (opts.inDragLayer) {\n      edges.forEach(setInDragLayer);\n      nodes.forEach(setInDragLayer);\n    }\n    if (opts.addToList) {\n      nodes.forEach(function (ele) {\n        addToDragList(ele, opts);\n      });\n    }\n  };\n  var blurActiveDomElement = function blurActiveDomElement() {\n    if (document.activeElement != null && document.activeElement.blur != null) {\n      document.activeElement.blur();\n    }\n  };\n  var haveMutationsApi = typeof MutationObserver !== 'undefined';\n  var haveResizeObserverApi = typeof ResizeObserver !== 'undefined';\n\n  // watch for when the cy container is removed from the dom\n  if (haveMutationsApi) {\n    r.removeObserver = new MutationObserver(function (mutns) {\n      // eslint-disable-line no-undef\n      for (var i = 0; i < mutns.length; i++) {\n        var mutn = mutns[i];\n        var rNodes = mutn.removedNodes;\n        if (rNodes) {\n          for (var j = 0; j < rNodes.length; j++) {\n            var rNode = rNodes[j];\n            if (rNode === r.container) {\n              r.destroy();\n              break;\n            }\n          }\n        }\n      }\n    });\n    if (r.container.parentNode) {\n      r.removeObserver.observe(r.container.parentNode, {\n        childList: true\n      });\n    }\n  } else {\n    r.registerBinding(r.container, 'DOMNodeRemoved', function (e) {\n      // eslint-disable-line no-unused-vars\n      r.destroy();\n    });\n  }\n  var onResize = debounce(function () {\n    r.cy.resize();\n  }, 100);\n  if (haveMutationsApi) {\n    r.styleObserver = new MutationObserver(onResize); // eslint-disable-line no-undef\n\n    r.styleObserver.observe(r.container, {\n      attributes: true\n    });\n  }\n\n  // auto resize\n  r.registerBinding(containerWindow, 'resize', onResize); // eslint-disable-line no-undef\n\n  if (haveResizeObserverApi) {\n    r.resizeObserver = new ResizeObserver(onResize); // eslint-disable-line no-undef\n\n    r.resizeObserver.observe(r.container);\n  }\n  var forEachUp = function forEachUp(domEle, fn) {\n    while (domEle != null) {\n      fn(domEle);\n      domEle = domEle.parentNode;\n    }\n  };\n  var invalidateCoords = function invalidateCoords() {\n    r.invalidateContainerClientCoordsCache();\n  };\n  forEachUp(r.container, function (domEle) {\n    r.registerBinding(domEle, 'transitionend', invalidateCoords);\n    r.registerBinding(domEle, 'animationend', invalidateCoords);\n    r.registerBinding(domEle, 'scroll', invalidateCoords);\n  });\n\n  // stop right click menu from appearing on cy\n  r.registerBinding(r.container, 'contextmenu', function (e) {\n    e.preventDefault();\n  });\n  var inBoxSelection = function inBoxSelection() {\n    return r.selection[4] !== 0;\n  };\n  var eventInContainer = function eventInContainer(e) {\n    // save cycles if mouse events aren't to be captured\n    var containerPageCoords = r.findContainerClientCoords();\n    var x = containerPageCoords[0];\n    var y = containerPageCoords[1];\n    var width = containerPageCoords[2];\n    var height = containerPageCoords[3];\n    var positions = e.touches ? e.touches : [e];\n    var atLeastOnePosInside = false;\n    for (var i = 0; i < positions.length; i++) {\n      var p = positions[i];\n      if (x <= p.clientX && p.clientX <= x + width && y <= p.clientY && p.clientY <= y + height) {\n        atLeastOnePosInside = true;\n        break;\n      }\n    }\n    if (!atLeastOnePosInside) {\n      return false;\n    }\n    var container = r.container;\n    var target = e.target;\n    var tParent = target.parentNode;\n    var containerIsTarget = false;\n    while (tParent) {\n      if (tParent === container) {\n        containerIsTarget = true;\n        break;\n      }\n      tParent = tParent.parentNode;\n    }\n    if (!containerIsTarget) {\n      return false;\n    } // if target is outisde cy container, then this event is not for us\n\n    return true;\n  };\n\n  // Primary key\n  r.registerBinding(r.container, 'mousedown', function mousedownHandler(e) {\n    if (!eventInContainer(e)) {\n      return;\n    }\n\n    // during left mouse button gestures, ignore other buttons\n    if (r.hoverData.which === 1 && e.which !== 1) {\n      return;\n    }\n    e.preventDefault();\n    blurActiveDomElement();\n    r.hoverData.capture = true;\n    r.hoverData.which = e.which;\n    var cy = r.cy;\n    var gpos = [e.clientX, e.clientY];\n    var pos = r.projectIntoViewport(gpos[0], gpos[1]);\n    var select = r.selection;\n    var nears = r.findNearestElements(pos[0], pos[1], true, false);\n    var near = nears[0];\n    var draggedElements = r.dragData.possibleDragElements;\n    r.hoverData.mdownPos = pos;\n    r.hoverData.mdownGPos = gpos;\n    var makeEvent = function makeEvent(type) {\n      return {\n        originalEvent: e,\n        type: type,\n        position: {\n          x: pos[0],\n          y: pos[1]\n        }\n      };\n    };\n    var checkForTaphold = function checkForTaphold() {\n      r.hoverData.tapholdCancelled = false;\n      clearTimeout(r.hoverData.tapholdTimeout);\n      r.hoverData.tapholdTimeout = setTimeout(function () {\n        if (r.hoverData.tapholdCancelled) {\n          return;\n        } else {\n          var ele = r.hoverData.down;\n          if (ele) {\n            ele.emit(makeEvent('taphold'));\n          } else {\n            cy.emit(makeEvent('taphold'));\n          }\n        }\n      }, r.tapholdDuration);\n    };\n\n    // Right click button\n    if (e.which == 3) {\n      r.hoverData.cxtStarted = true;\n      var cxtEvt = {\n        originalEvent: e,\n        type: 'cxttapstart',\n        position: {\n          x: pos[0],\n          y: pos[1]\n        }\n      };\n      if (near) {\n        near.activate();\n        near.emit(cxtEvt);\n        r.hoverData.down = near;\n      } else {\n        cy.emit(cxtEvt);\n      }\n      r.hoverData.downTime = new Date().getTime();\n      r.hoverData.cxtDragged = false;\n\n      // Primary button\n    } else if (e.which == 1) {\n      if (near) {\n        near.activate();\n      }\n\n      // Element dragging\n      {\n        // If something is under the cursor and it is draggable, prepare to grab it\n        if (near != null) {\n          if (r.nodeIsGrabbable(near)) {\n            var triggerGrab = function triggerGrab(ele) {\n              ele.emit(makeEvent('grab'));\n            };\n            setGrabTarget(near);\n            if (!near.selected()) {\n              draggedElements = r.dragData.possibleDragElements = cy.collection();\n              addNodeToDrag(near, {\n                addToList: draggedElements\n              });\n              near.emit(makeEvent('grabon')).emit(makeEvent('grab'));\n            } else {\n              draggedElements = r.dragData.possibleDragElements = cy.collection();\n              var selectedNodes = cy.$(function (ele) {\n                return ele.isNode() && ele.selected() && r.nodeIsGrabbable(ele);\n              });\n              addNodesToDrag(selectedNodes, {\n                addToList: draggedElements\n              });\n              near.emit(makeEvent('grabon'));\n              selectedNodes.forEach(triggerGrab);\n            }\n            r.redrawHint('eles', true);\n            r.redrawHint('drag', true);\n          }\n        }\n        r.hoverData.down = near;\n        r.hoverData.downs = nears;\n        r.hoverData.downTime = new Date().getTime();\n      }\n      triggerEvents(near, ['mousedown', 'tapstart', 'vmousedown'], e, {\n        x: pos[0],\n        y: pos[1]\n      });\n      if (near == null) {\n        select[4] = 1;\n        r.data.bgActivePosistion = {\n          x: pos[0],\n          y: pos[1]\n        };\n        r.redrawHint('select', true);\n        r.redraw();\n      } else if (near.pannable()) {\n        select[4] = 1; // for future pan\n      }\n      checkForTaphold();\n    }\n\n    // Initialize selection box coordinates\n    select[0] = select[2] = pos[0];\n    select[1] = select[3] = pos[1];\n  }, false);\n  var shadowRoot = getShadowRoot(r.container);\n  r.registerBinding([containerWindow, shadowRoot], 'mousemove', function mousemoveHandler(e) {\n    // eslint-disable-line no-undef\n    var capture = r.hoverData.capture;\n    if (!capture && !eventInContainer(e)) {\n      return;\n    }\n    var preventDefault = false;\n    var cy = r.cy;\n    var zoom = cy.zoom();\n    var gpos = [e.clientX, e.clientY];\n    var pos = r.projectIntoViewport(gpos[0], gpos[1]);\n    var mdownPos = r.hoverData.mdownPos;\n    var mdownGPos = r.hoverData.mdownGPos;\n    var select = r.selection;\n    var near = null;\n    if (!r.hoverData.draggingEles && !r.hoverData.dragging && !r.hoverData.selecting) {\n      near = r.findNearestElement(pos[0], pos[1], true, false);\n    }\n    var last = r.hoverData.last;\n    var down = r.hoverData.down;\n    var disp = [pos[0] - select[2], pos[1] - select[3]];\n    var draggedElements = r.dragData.possibleDragElements;\n    var isOverThresholdDrag;\n    if (mdownGPos) {\n      var dx = gpos[0] - mdownGPos[0];\n      var dx2 = dx * dx;\n      var dy = gpos[1] - mdownGPos[1];\n      var dy2 = dy * dy;\n      var dist2 = dx2 + dy2;\n      r.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist2 >= r.desktopTapThreshold2;\n    }\n    var multSelKeyDown = isMultSelKeyDown(e);\n    if (isOverThresholdDrag) {\n      r.hoverData.tapholdCancelled = true;\n    }\n    var updateDragDelta = function updateDragDelta() {\n      var dragDelta = r.hoverData.dragDelta = r.hoverData.dragDelta || [];\n      if (dragDelta.length === 0) {\n        dragDelta.push(disp[0]);\n        dragDelta.push(disp[1]);\n      } else {\n        dragDelta[0] += disp[0];\n        dragDelta[1] += disp[1];\n      }\n    };\n    preventDefault = true;\n    triggerEvents(near, ['mousemove', 'vmousemove', 'tapdrag'], e, {\n      x: pos[0],\n      y: pos[1]\n    });\n    var makeEvent = function makeEvent(type) {\n      return {\n        originalEvent: e,\n        type: type,\n        position: {\n          x: pos[0],\n          y: pos[1]\n        }\n      };\n    };\n    var goIntoBoxMode = function goIntoBoxMode() {\n      r.data.bgActivePosistion = undefined;\n      if (!r.hoverData.selecting) {\n        cy.emit(makeEvent('boxstart'));\n      }\n      select[4] = 1;\n      r.hoverData.selecting = true;\n      r.redrawHint('select', true);\n      r.redraw();\n    };\n\n    // trigger context drag if rmouse down\n    if (r.hoverData.which === 3) {\n      // but only if over threshold\n      if (isOverThresholdDrag) {\n        var cxtEvt = makeEvent('cxtdrag');\n        if (down) {\n          down.emit(cxtEvt);\n        } else {\n          cy.emit(cxtEvt);\n        }\n        r.hoverData.cxtDragged = true;\n        if (!r.hoverData.cxtOver || near !== r.hoverData.cxtOver) {\n          if (r.hoverData.cxtOver) {\n            r.hoverData.cxtOver.emit(makeEvent('cxtdragout'));\n          }\n          r.hoverData.cxtOver = near;\n          if (near) {\n            near.emit(makeEvent('cxtdragover'));\n          }\n        }\n      }\n\n      // Check if we are drag panning the entire graph\n    } else if (r.hoverData.dragging) {\n      preventDefault = true;\n      if (cy.panningEnabled() && cy.userPanningEnabled()) {\n        var deltaP;\n        if (r.hoverData.justStartedPan) {\n          var mdPos = r.hoverData.mdownPos;\n          deltaP = {\n            x: (pos[0] - mdPos[0]) * zoom,\n            y: (pos[1] - mdPos[1]) * zoom\n          };\n          r.hoverData.justStartedPan = false;\n        } else {\n          deltaP = {\n            x: disp[0] * zoom,\n            y: disp[1] * zoom\n          };\n        }\n        cy.panBy(deltaP);\n        cy.emit(makeEvent('dragpan'));\n        r.hoverData.dragged = true;\n      }\n\n      // Needs reproject due to pan changing viewport\n      pos = r.projectIntoViewport(e.clientX, e.clientY);\n\n      // Checks primary button down & out of time & mouse not moved much\n    } else if (select[4] == 1 && (down == null || down.pannable())) {\n      if (isOverThresholdDrag) {\n        if (!r.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) {\n          goIntoBoxMode();\n        } else if (!r.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) {\n          var allowPassthrough = allowPanningPassthrough(down, r.hoverData.downs);\n          if (allowPassthrough) {\n            r.hoverData.dragging = true;\n            r.hoverData.justStartedPan = true;\n            select[4] = 0;\n            r.data.bgActivePosistion = array2point(mdownPos);\n            r.redrawHint('select', true);\n            r.redraw();\n          }\n        }\n        if (down && down.pannable() && down.active()) {\n          down.unactivate();\n        }\n      }\n    } else {\n      if (down && down.pannable() && down.active()) {\n        down.unactivate();\n      }\n      if ((!down || !down.grabbed()) && near != last) {\n        if (last) {\n          triggerEvents(last, ['mouseout', 'tapdragout'], e, {\n            x: pos[0],\n            y: pos[1]\n          });\n        }\n        if (near) {\n          triggerEvents(near, ['mouseover', 'tapdragover'], e, {\n            x: pos[0],\n            y: pos[1]\n          });\n        }\n        r.hoverData.last = near;\n      }\n      if (down) {\n        if (isOverThresholdDrag) {\n          // then we can take action\n\n          if (cy.boxSelectionEnabled() && multSelKeyDown) {\n            // then selection overrides\n            if (down && down.grabbed()) {\n              freeDraggedElements(draggedElements);\n              down.emit(makeEvent('freeon'));\n              draggedElements.emit(makeEvent('free'));\n              if (r.dragData.didDrag) {\n                down.emit(makeEvent('dragfreeon'));\n                draggedElements.emit(makeEvent('dragfree'));\n              }\n            }\n            goIntoBoxMode();\n          } else if (down && down.grabbed() && r.nodeIsDraggable(down)) {\n            // drag node\n            var justStartedDrag = !r.dragData.didDrag;\n            if (justStartedDrag) {\n              r.redrawHint('eles', true);\n            }\n            r.dragData.didDrag = true; // indicate that we actually did drag the node\n\n            // now, add the elements to the drag layer if not done already\n            if (!r.hoverData.draggingEles) {\n              addNodesToDrag(draggedElements, {\n                inDragLayer: true\n              });\n            }\n            var totalShift = {\n              x: 0,\n              y: 0\n            };\n            if (number$1(disp[0]) && number$1(disp[1])) {\n              totalShift.x += disp[0];\n              totalShift.y += disp[1];\n              if (justStartedDrag) {\n                var dragDelta = r.hoverData.dragDelta;\n                if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) {\n                  totalShift.x += dragDelta[0];\n                  totalShift.y += dragDelta[1];\n                }\n              }\n            }\n            r.hoverData.draggingEles = true;\n            draggedElements.silentShift(totalShift).emit(makeEvent('position')).emit(makeEvent('drag'));\n            r.redrawHint('drag', true);\n            r.redraw();\n          }\n        } else {\n          // otherwise save drag delta for when we actually start dragging so the relative grab pos is constant\n          updateDragDelta();\n        }\n      }\n\n      // prevent the dragging from triggering text selection on the page\n      preventDefault = true;\n    }\n    select[2] = pos[0];\n    select[3] = pos[1];\n    if (preventDefault) {\n      if (e.stopPropagation) e.stopPropagation();\n      if (e.preventDefault) e.preventDefault();\n      return false;\n    }\n  }, false);\n  var clickTimeout, didDoubleClick, prevClickTimeStamp;\n  r.registerBinding(containerWindow, 'mouseup', function mouseupHandler(e) {\n    // eslint-disable-line no-undef\n    // during left mouse button gestures, ignore other buttons\n    if (r.hoverData.which === 1 && e.which !== 1 && r.hoverData.capture) {\n      return;\n    }\n    var capture = r.hoverData.capture;\n    if (!capture) {\n      return;\n    }\n    r.hoverData.capture = false;\n    var cy = r.cy;\n    var pos = r.projectIntoViewport(e.clientX, e.clientY);\n    var select = r.selection;\n    var near = r.findNearestElement(pos[0], pos[1], true, false);\n    var draggedElements = r.dragData.possibleDragElements;\n    var down = r.hoverData.down;\n    var multSelKeyDown = isMultSelKeyDown(e);\n    if (r.data.bgActivePosistion) {\n      r.redrawHint('select', true);\n      r.redraw();\n    }\n    r.hoverData.tapholdCancelled = true;\n    r.data.bgActivePosistion = undefined; // not active bg now\n\n    if (down) {\n      down.unactivate();\n    }\n    var makeEvent = function makeEvent(type) {\n      return {\n        originalEvent: e,\n        type: type,\n        position: {\n          x: pos[0],\n          y: pos[1]\n        }\n      };\n    };\n    if (r.hoverData.which === 3) {\n      var cxtEvt = makeEvent('cxttapend');\n      if (down) {\n        down.emit(cxtEvt);\n      } else {\n        cy.emit(cxtEvt);\n      }\n      if (!r.hoverData.cxtDragged) {\n        var cxtTap = makeEvent('cxttap');\n        if (down) {\n          down.emit(cxtTap);\n        } else {\n          cy.emit(cxtTap);\n        }\n      }\n      r.hoverData.cxtDragged = false;\n      r.hoverData.which = null;\n    } else if (r.hoverData.which === 1) {\n      triggerEvents(near, ['mouseup', 'tapend', 'vmouseup'], e, {\n        x: pos[0],\n        y: pos[1]\n      });\n      if (!r.dragData.didDrag &&\n      // didn't move a node around\n      !r.hoverData.dragged &&\n      // didn't pan\n      !r.hoverData.selecting &&\n      // not box selection\n      !r.hoverData.isOverThresholdDrag // didn't move too much\n      ) {\n        triggerEvents(down, [\"click\", \"tap\", \"vclick\"], e, {\n          x: pos[0],\n          y: pos[1]\n        });\n        didDoubleClick = false;\n        if (e.timeStamp - prevClickTimeStamp <= cy.multiClickDebounceTime()) {\n          clickTimeout && clearTimeout(clickTimeout);\n          didDoubleClick = true;\n          prevClickTimeStamp = null;\n          triggerEvents(down, [\"dblclick\", \"dbltap\", \"vdblclick\"], e, {\n            x: pos[0],\n            y: pos[1]\n          });\n        } else {\n          clickTimeout = setTimeout(function () {\n            if (didDoubleClick) return;\n            triggerEvents(down, [\"oneclick\", \"onetap\", \"voneclick\"], e, {\n              x: pos[0],\n              y: pos[1]\n            });\n          }, cy.multiClickDebounceTime());\n          prevClickTimeStamp = e.timeStamp;\n        }\n      }\n\n      // Deselect all elements if nothing is currently under the mouse cursor and we aren't dragging something\n      if (down == null // not mousedown on node\n      && !r.dragData.didDrag // didn't move the node around\n      && !r.hoverData.selecting // not box selection\n      && !r.hoverData.dragged // didn't pan\n      && !isMultSelKeyDown(e)) {\n        cy.$(isSelected).unselect(['tapunselect']);\n        if (draggedElements.length > 0) {\n          r.redrawHint('eles', true);\n        }\n        r.dragData.possibleDragElements = draggedElements = cy.collection();\n      }\n\n      // Single selection\n      if (near == down && !r.dragData.didDrag && !r.hoverData.selecting) {\n        if (near != null && near._private.selectable) {\n          if (r.hoverData.dragging) ; else if (cy.selectionType() === 'additive' || multSelKeyDown) {\n            if (near.selected()) {\n              near.unselect(['tapunselect']);\n            } else {\n              near.select(['tapselect']);\n            }\n          } else {\n            if (!multSelKeyDown) {\n              cy.$(isSelected).unmerge(near).unselect(['tapunselect']);\n              near.select(['tapselect']);\n            }\n          }\n          r.redrawHint('eles', true);\n        }\n      }\n      if (r.hoverData.selecting) {\n        var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));\n        r.redrawHint('select', true);\n        if (box.length > 0) {\n          r.redrawHint('eles', true);\n        }\n        cy.emit(makeEvent('boxend'));\n        var eleWouldBeSelected = function eleWouldBeSelected(ele) {\n          return ele.selectable() && !ele.selected();\n        };\n        if (cy.selectionType() === 'additive') {\n          box.emit(makeEvent('box')).stdFilter(eleWouldBeSelected).select().emit(makeEvent('boxselect'));\n        } else {\n          if (!multSelKeyDown) {\n            cy.$(isSelected).unmerge(box).unselect();\n          }\n          box.emit(makeEvent('box')).stdFilter(eleWouldBeSelected).select().emit(makeEvent('boxselect'));\n        }\n\n        // always need redraw in case eles unselectable\n        r.redraw();\n      }\n\n      // Cancel drag pan\n      if (r.hoverData.dragging) {\n        r.hoverData.dragging = false;\n        r.redrawHint('select', true);\n        r.redrawHint('eles', true);\n        r.redraw();\n      }\n      if (!select[4]) {\n        r.redrawHint('drag', true);\n        r.redrawHint('eles', true);\n        var downWasGrabbed = down && down.grabbed();\n        freeDraggedElements(draggedElements);\n        if (downWasGrabbed) {\n          down.emit(makeEvent('freeon'));\n          draggedElements.emit(makeEvent('free'));\n          if (r.dragData.didDrag) {\n            down.emit(makeEvent('dragfreeon'));\n            draggedElements.emit(makeEvent('dragfree'));\n          }\n        }\n      }\n    } // else not right mouse\n\n    select[4] = 0;\n    r.hoverData.down = null;\n    r.hoverData.cxtStarted = false;\n    r.hoverData.draggingEles = false;\n    r.hoverData.selecting = false;\n    r.hoverData.isOverThresholdDrag = false;\n    r.dragData.didDrag = false;\n    r.hoverData.dragged = false;\n    r.hoverData.dragDelta = [];\n    r.hoverData.mdownPos = null;\n    r.hoverData.mdownGPos = null;\n    r.hoverData.which = null;\n  }, false);\n  var wheelDeltas = []; // log of first N wheel deltas\n  var wheelDeltaN = 4; // how many events to log\n  var inaccurateScrollDevice;\n  var inaccurateScrollFactor = 100000; // base of inaccurate wheel deltas (e.g. base 5 could yield wheels of 10, 25, 50, etc.)\n\n  var allAreDivisibleBy = function allAreDivisibleBy(list, factor) {\n    for (var i = 0; i < list.length; i++) {\n      if (list[i] % factor !== 0) {\n        return false;\n      }\n    }\n    return true;\n  };\n  var allAreSameMagnitude = function allAreSameMagnitude(list) {\n    var firstMag = Math.abs(list[0]);\n    for (var i = 1; i < list.length; i++) {\n      if (Math.abs(list[i]) !== firstMag) {\n        return false;\n      }\n    }\n    return true;\n  };\n  var wheelHandler = function wheelHandler(e) {\n    var clamp = false;\n    var delta = e.deltaY;\n    if (delta == null) {\n      // compatibility with old browsers\n      if (e.wheelDeltaY != null) {\n        delta = e.wheelDeltaY / 4;\n      } else if (e.wheelDelta != null) {\n        delta = e.wheelDelta / 4;\n      }\n    }\n    if (delta === 0) {\n      return; // no change in zoom (Bug: Zoom becomes erratic on rapid scroll due to deltaY: 0 event #3394)\n    }\n    if (inaccurateScrollDevice == null) {\n      if (wheelDeltas.length >= wheelDeltaN) {\n        // use log to determine if inaccurate\n        var wds = wheelDeltas;\n        inaccurateScrollDevice = allAreDivisibleBy(wds, 5);\n        if (!inaccurateScrollDevice) {\n          // check for all large values of exact same magnitude\n          var firstMag = Math.abs(wds[0]);\n          inaccurateScrollDevice = allAreSameMagnitude(wds) && firstMag > 5;\n        }\n        if (inaccurateScrollDevice) {\n          for (var i = 0; i < wds.length; i++) {\n            inaccurateScrollFactor = Math.min(Math.abs(wds[i]), inaccurateScrollFactor);\n          }\n        }\n\n        // console.log('Sampled wheel deltas:', wds);\n        // console.log('inaccurateScrollDevice:', inaccurateScrollDevice);\n        // console.log('inaccurateScrollFactor:', inaccurateScrollFactor);\n      } else {\n        // clamp and log until we reach N\n        wheelDeltas.push(delta);\n        clamp = true;\n        // console.log('Clamping initial wheel events until we get a good sample');\n      }\n    } else if (inaccurateScrollDevice) {\n      // keep updating\n      inaccurateScrollFactor = Math.min(Math.abs(delta), inaccurateScrollFactor);\n      // console.log('Keep updating inaccurateScrollFactor beyond sample in case we did not get the smallest possible val:', inaccurateScrollFactor);\n    }\n    if (r.scrollingPage) {\n      return;\n    } // while scrolling, ignore wheel-to-zoom\n\n    var cy = r.cy;\n    var zoom = cy.zoom();\n    var pan = cy.pan();\n    var pos = r.projectIntoViewport(e.clientX, e.clientY);\n    var rpos = [pos[0] * zoom + pan.x, pos[1] * zoom + pan.y];\n    if (r.hoverData.draggingEles || r.hoverData.dragging || r.hoverData.cxtStarted || inBoxSelection()) {\n      // if pan dragging or cxt dragging, wheel movements make no zoom\n      e.preventDefault();\n      return;\n    }\n    if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) {\n      e.preventDefault();\n      r.data.wheelZooming = true;\n      clearTimeout(r.data.wheelTimeout);\n      r.data.wheelTimeout = setTimeout(function () {\n        r.data.wheelZooming = false;\n        r.redrawHint('eles', true);\n        r.redraw();\n      }, 150);\n      var diff;\n      if (clamp && Math.abs(delta) > 5) {\n        delta = signum(delta) * 5;\n      }\n      diff = delta / -250;\n      if (inaccurateScrollDevice) {\n        diff /= inaccurateScrollFactor;\n        diff *= 3;\n      }\n      diff = diff * r.wheelSensitivity;\n\n      // console.log(`delta = ${delta}, diff = ${diff}, mode = ${e.deltaMode}`)\n\n      var needsWheelFix = e.deltaMode === 1;\n      if (needsWheelFix) {\n        // fixes slow wheel events on ff/linux and ff/windows\n        diff *= 33;\n      }\n      var newZoom = cy.zoom() * Math.pow(10, diff);\n      if (e.type === 'gesturechange') {\n        newZoom = r.gestureStartZoom * e.scale;\n      }\n      cy.zoom({\n        level: newZoom,\n        renderedPosition: {\n          x: rpos[0],\n          y: rpos[1]\n        }\n      });\n      cy.emit({\n        type: e.type === 'gesturechange' ? 'pinchzoom' : 'scrollzoom',\n        originalEvent: e,\n        position: {\n          x: pos[0],\n          y: pos[1]\n        }\n      });\n    }\n  };\n\n  // Functions to help with whether mouse wheel should trigger zooming\n  // --\n  r.registerBinding(r.container, 'wheel', wheelHandler, true);\n\n  // disable nonstandard wheel events\n  // r.registerBinding(r.container, 'mousewheel', wheelHandler, true);\n  // r.registerBinding(r.container, 'DOMMouseScroll', wheelHandler, true);\n  // r.registerBinding(r.container, 'MozMousePixelScroll', wheelHandler, true); // older firefox\n\n  r.registerBinding(containerWindow, 'scroll', function scrollHandler(e) {\n    // eslint-disable-line no-unused-vars\n    r.scrollingPage = true;\n    clearTimeout(r.scrollingPageTimeout);\n    r.scrollingPageTimeout = setTimeout(function () {\n      r.scrollingPage = false;\n    }, 250);\n  }, true);\n\n  // desktop safari pinch to zoom start\n  r.registerBinding(r.container, 'gesturestart', function gestureStartHandler(e) {\n    r.gestureStartZoom = r.cy.zoom();\n    if (!r.hasTouchStarted) {\n      // don't affect touch devices like iphone\n      e.preventDefault();\n    }\n  }, true);\n  r.registerBinding(r.container, 'gesturechange', function (e) {\n    if (!r.hasTouchStarted) {\n      // don't affect touch devices like iphone\n      wheelHandler(e);\n    }\n  }, true);\n\n  // Functions to help with handling mouseout/mouseover on the Cytoscape container\n  // Handle mouseout on Cytoscape container\n  r.registerBinding(r.container, 'mouseout', function mouseOutHandler(e) {\n    var pos = r.projectIntoViewport(e.clientX, e.clientY);\n    r.cy.emit({\n      originalEvent: e,\n      type: 'mouseout',\n      position: {\n        x: pos[0],\n        y: pos[1]\n      }\n    });\n  }, false);\n  r.registerBinding(r.container, 'mouseover', function mouseOverHandler(e) {\n    var pos = r.projectIntoViewport(e.clientX, e.clientY);\n    r.cy.emit({\n      originalEvent: e,\n      type: 'mouseover',\n      position: {\n        x: pos[0],\n        y: pos[1]\n      }\n    });\n  }, false);\n  var f1x1, f1y1, f2x1, f2y1; // starting points for pinch-to-zoom\n  var distance1, distance1Sq; // initial distance between finger 1 and finger 2 for pinch-to-zoom\n  var center1, modelCenter1; // center point on start pinch to zoom\n  var offsetLeft, offsetTop;\n  var containerWidth, containerHeight;\n  var twoFingersStartInside;\n  var distance = function distance(x1, y1, x2, y2) {\n    return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n  };\n  var distanceSq = function distanceSq(x1, y1, x2, y2) {\n    return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n  };\n  var touchstartHandler;\n  r.registerBinding(r.container, 'touchstart', touchstartHandler = function touchstartHandler(e) {\n    r.hasTouchStarted = true;\n    if (!eventInContainer(e)) {\n      return;\n    }\n    blurActiveDomElement();\n    r.touchData.capture = true;\n    r.data.bgActivePosistion = undefined;\n    var cy = r.cy;\n    var now = r.touchData.now;\n    var earlier = r.touchData.earlier;\n    if (e.touches[0]) {\n      var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n      now[0] = pos[0];\n      now[1] = pos[1];\n    }\n    if (e.touches[1]) {\n      var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n      now[2] = pos[0];\n      now[3] = pos[1];\n    }\n    if (e.touches[2]) {\n      var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n      now[4] = pos[0];\n      now[5] = pos[1];\n    }\n    var makeEvent = function makeEvent(type) {\n      return {\n        originalEvent: e,\n        type: type,\n        position: {\n          x: now[0],\n          y: now[1]\n        }\n      };\n    };\n\n    // record starting points for pinch-to-zoom\n    if (e.touches[1]) {\n      r.touchData.singleTouchMoved = true;\n      freeDraggedElements(r.dragData.touchDragEles);\n      var offsets = r.findContainerClientCoords();\n      offsetLeft = offsets[0];\n      offsetTop = offsets[1];\n      containerWidth = offsets[2];\n      containerHeight = offsets[3];\n      f1x1 = e.touches[0].clientX - offsetLeft;\n      f1y1 = e.touches[0].clientY - offsetTop;\n      f2x1 = e.touches[1].clientX - offsetLeft;\n      f2y1 = e.touches[1].clientY - offsetTop;\n      twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight;\n      var pan = cy.pan();\n      var zoom = cy.zoom();\n      distance1 = distance(f1x1, f1y1, f2x1, f2y1);\n      distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1);\n      center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2];\n      modelCenter1 = [(center1[0] - pan.x) / zoom, (center1[1] - pan.y) / zoom];\n\n      // consider context tap\n      var cxtDistThreshold = 200;\n      var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold;\n      if (distance1Sq < cxtDistThresholdSq && !e.touches[2]) {\n        var near1 = r.findNearestElement(now[0], now[1], true, true);\n        var near2 = r.findNearestElement(now[2], now[3], true, true);\n        if (near1 && near1.isNode()) {\n          near1.activate().emit(makeEvent('cxttapstart'));\n          r.touchData.start = near1;\n        } else if (near2 && near2.isNode()) {\n          near2.activate().emit(makeEvent('cxttapstart'));\n          r.touchData.start = near2;\n        } else {\n          cy.emit(makeEvent('cxttapstart'));\n        }\n        if (r.touchData.start) {\n          r.touchData.start._private.grabbed = false;\n        }\n        r.touchData.cxt = true;\n        r.touchData.cxtDragged = false;\n        r.data.bgActivePosistion = undefined;\n        r.redraw();\n        return;\n      }\n    }\n    if (e.touches[2]) {\n      // ignore\n\n      // safari on ios pans the page otherwise (normally you should be able to preventdefault on touchmove...)\n      if (cy.boxSelectionEnabled()) {\n        e.preventDefault();\n      }\n    } else if (e.touches[1]) ; else if (e.touches[0]) {\n      var nears = r.findNearestElements(now[0], now[1], true, true);\n      var near = nears[0];\n      if (near != null) {\n        near.activate();\n        r.touchData.start = near;\n        r.touchData.starts = nears;\n        if (r.nodeIsGrabbable(near)) {\n          var draggedEles = r.dragData.touchDragEles = cy.collection();\n          var selectedNodes = null;\n          r.redrawHint('eles', true);\n          r.redrawHint('drag', true);\n          if (near.selected()) {\n            // reset drag elements, since near will be added again\n\n            selectedNodes = cy.$(function (ele) {\n              return ele.selected() && r.nodeIsGrabbable(ele);\n            });\n            addNodesToDrag(selectedNodes, {\n              addToList: draggedEles\n            });\n          } else {\n            addNodeToDrag(near, {\n              addToList: draggedEles\n            });\n          }\n          setGrabTarget(near);\n          near.emit(makeEvent('grabon'));\n          if (selectedNodes) {\n            selectedNodes.forEach(function (n) {\n              n.emit(makeEvent('grab'));\n            });\n          } else {\n            near.emit(makeEvent('grab'));\n          }\n        }\n      }\n      triggerEvents(near, ['touchstart', 'tapstart', 'vmousedown'], e, {\n        x: now[0],\n        y: now[1]\n      });\n      if (near == null) {\n        r.data.bgActivePosistion = {\n          x: pos[0],\n          y: pos[1]\n        };\n        r.redrawHint('select', true);\n        r.redraw();\n      }\n\n      // Tap, taphold\n      // -----\n\n      r.touchData.singleTouchMoved = false;\n      r.touchData.singleTouchStartTime = +new Date();\n      clearTimeout(r.touchData.tapholdTimeout);\n      r.touchData.tapholdTimeout = setTimeout(function () {\n        if (r.touchData.singleTouchMoved === false && !r.pinching // if pinching, then taphold unselect shouldn't take effect\n        && !r.touchData.selecting // box selection shouldn't allow taphold through\n        ) {\n          triggerEvents(r.touchData.start, ['taphold'], e, {\n            x: now[0],\n            y: now[1]\n          });\n        }\n      }, r.tapholdDuration);\n    }\n    if (e.touches.length >= 1) {\n      var sPos = r.touchData.startPosition = [null, null, null, null, null, null];\n      for (var i = 0; i < now.length; i++) {\n        sPos[i] = earlier[i] = now[i];\n      }\n      var touch0 = e.touches[0];\n      r.touchData.startGPosition = [touch0.clientX, touch0.clientY];\n    }\n  }, false);\n  var touchmoveHandler;\n  r.registerBinding(containerWindow, 'touchmove', touchmoveHandler = function touchmoveHandler(e) {\n    // eslint-disable-line no-undef\n    var capture = r.touchData.capture;\n    if (!capture && !eventInContainer(e)) {\n      return;\n    }\n    var select = r.selection;\n    var cy = r.cy;\n    var now = r.touchData.now;\n    var earlier = r.touchData.earlier;\n    var zoom = cy.zoom();\n    if (e.touches[0]) {\n      var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n      now[0] = pos[0];\n      now[1] = pos[1];\n    }\n    if (e.touches[1]) {\n      var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n      now[2] = pos[0];\n      now[3] = pos[1];\n    }\n    if (e.touches[2]) {\n      var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n      now[4] = pos[0];\n      now[5] = pos[1];\n    }\n    var makeEvent = function makeEvent(type) {\n      return {\n        originalEvent: e,\n        type: type,\n        position: {\n          x: now[0],\n          y: now[1]\n        }\n      };\n    };\n    var startGPos = r.touchData.startGPosition;\n    var isOverThresholdDrag;\n    if (capture && e.touches[0] && startGPos) {\n      var disp = [];\n      for (var j = 0; j < now.length; j++) {\n        disp[j] = now[j] - earlier[j];\n      }\n      var dx = e.touches[0].clientX - startGPos[0];\n      var dx2 = dx * dx;\n      var dy = e.touches[0].clientY - startGPos[1];\n      var dy2 = dy * dy;\n      var dist2 = dx2 + dy2;\n      isOverThresholdDrag = dist2 >= r.touchTapThreshold2;\n    }\n\n    // context swipe cancelling\n    if (capture && r.touchData.cxt) {\n      e.preventDefault();\n      var f1x2 = e.touches[0].clientX - offsetLeft,\n        f1y2 = e.touches[0].clientY - offsetTop;\n      var f2x2 = e.touches[1].clientX - offsetLeft,\n        f2y2 = e.touches[1].clientY - offsetTop;\n      // var distance2 = distance( f1x2, f1y2, f2x2, f2y2 );\n      var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2);\n      var factorSq = distance2Sq / distance1Sq;\n      var distThreshold = 150;\n      var distThresholdSq = distThreshold * distThreshold;\n      var factorThreshold = 1.5;\n      var factorThresholdSq = factorThreshold * factorThreshold;\n\n      // cancel ctx gestures if the distance b/t the fingers increases\n      if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) {\n        r.touchData.cxt = false;\n        r.data.bgActivePosistion = undefined;\n        r.redrawHint('select', true);\n        var cxtEvt = makeEvent('cxttapend');\n        if (r.touchData.start) {\n          r.touchData.start.unactivate().emit(cxtEvt);\n          r.touchData.start = null;\n        } else {\n          cy.emit(cxtEvt);\n        }\n      }\n    }\n\n    // context swipe\n    if (capture && r.touchData.cxt) {\n      var cxtEvt = makeEvent('cxtdrag');\n      r.data.bgActivePosistion = undefined;\n      r.redrawHint('select', true);\n      if (r.touchData.start) {\n        r.touchData.start.emit(cxtEvt);\n      } else {\n        cy.emit(cxtEvt);\n      }\n      if (r.touchData.start) {\n        r.touchData.start._private.grabbed = false;\n      }\n      r.touchData.cxtDragged = true;\n      var near = r.findNearestElement(now[0], now[1], true, true);\n      if (!r.touchData.cxtOver || near !== r.touchData.cxtOver) {\n        if (r.touchData.cxtOver) {\n          r.touchData.cxtOver.emit(makeEvent('cxtdragout'));\n        }\n        r.touchData.cxtOver = near;\n        if (near) {\n          near.emit(makeEvent('cxtdragover'));\n        }\n      }\n\n      // box selection\n    } else if (capture && e.touches[2] && cy.boxSelectionEnabled()) {\n      e.preventDefault();\n      r.data.bgActivePosistion = undefined;\n      this.lastThreeTouch = +new Date();\n      if (!r.touchData.selecting) {\n        cy.emit(makeEvent('boxstart'));\n      }\n      r.touchData.selecting = true;\n      r.touchData.didSelect = true;\n      select[4] = 1;\n      if (!select || select.length === 0 || select[0] === undefined) {\n        select[0] = (now[0] + now[2] + now[4]) / 3;\n        select[1] = (now[1] + now[3] + now[5]) / 3;\n        select[2] = (now[0] + now[2] + now[4]) / 3 + 1;\n        select[3] = (now[1] + now[3] + now[5]) / 3 + 1;\n      } else {\n        select[2] = (now[0] + now[2] + now[4]) / 3;\n        select[3] = (now[1] + now[3] + now[5]) / 3;\n      }\n      r.redrawHint('select', true);\n      r.redraw();\n\n      // pinch to zoom\n    } else if (capture && e.touches[1] && !r.touchData.didSelect // don't allow box selection to degrade to pinch-to-zoom\n    && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) {\n      // two fingers => pinch to zoom\n      e.preventDefault();\n      r.data.bgActivePosistion = undefined;\n      r.redrawHint('select', true);\n      var draggedEles = r.dragData.touchDragEles;\n      if (draggedEles) {\n        r.redrawHint('drag', true);\n        for (var i = 0; i < draggedEles.length; i++) {\n          var de_p = draggedEles[i]._private;\n          de_p.grabbed = false;\n          de_p.rscratch.inDragLayer = false;\n        }\n      }\n      var _start = r.touchData.start;\n\n      // (x2, y2) for fingers 1 and 2\n      var f1x2 = e.touches[0].clientX - offsetLeft,\n        f1y2 = e.touches[0].clientY - offsetTop;\n      var f2x2 = e.touches[1].clientX - offsetLeft,\n        f2y2 = e.touches[1].clientY - offsetTop;\n      var distance2 = distance(f1x2, f1y2, f2x2, f2y2);\n      // var distance2Sq = distanceSq( f1x2, f1y2, f2x2, f2y2 );\n      // var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq );\n      var factor = distance2 / distance1;\n      if (twoFingersStartInside) {\n        // delta finger1\n        var df1x = f1x2 - f1x1;\n        var df1y = f1y2 - f1y1;\n\n        // delta finger 2\n        var df2x = f2x2 - f2x1;\n        var df2y = f2y2 - f2y1;\n\n        // translation is the normalised vector of the two fingers movement\n        // i.e. so pinching cancels out and moving together pans\n        var tx = (df1x + df2x) / 2;\n        var ty = (df1y + df2y) / 2;\n\n        // now calculate the zoom\n        var zoom1 = cy.zoom();\n        var zoom2 = zoom1 * factor;\n        var pan1 = cy.pan();\n\n        // the model center point converted to the current rendered pos\n        var ctrx = modelCenter1[0] * zoom1 + pan1.x;\n        var ctry = modelCenter1[1] * zoom1 + pan1.y;\n        var pan2 = {\n          x: -zoom2 / zoom1 * (ctrx - pan1.x - tx) + ctrx,\n          y: -zoom2 / zoom1 * (ctry - pan1.y - ty) + ctry\n        };\n\n        // remove dragged eles\n        if (_start && _start.active()) {\n          var draggedEles = r.dragData.touchDragEles;\n          freeDraggedElements(draggedEles);\n          r.redrawHint('drag', true);\n          r.redrawHint('eles', true);\n          _start.unactivate().emit(makeEvent('freeon'));\n          draggedEles.emit(makeEvent('free'));\n          if (r.dragData.didDrag) {\n            _start.emit(makeEvent('dragfreeon'));\n            draggedEles.emit(makeEvent('dragfree'));\n          }\n        }\n        cy.viewport({\n          zoom: zoom2,\n          pan: pan2,\n          cancelOnFailedZoom: true\n        });\n        cy.emit(makeEvent('pinchzoom'));\n        distance1 = distance2;\n        f1x1 = f1x2;\n        f1y1 = f1y2;\n        f2x1 = f2x2;\n        f2y1 = f2y2;\n        r.pinching = true;\n      }\n\n      // Re-project\n      if (e.touches[0]) {\n        var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n        now[0] = pos[0];\n        now[1] = pos[1];\n      }\n      if (e.touches[1]) {\n        var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n        now[2] = pos[0];\n        now[3] = pos[1];\n      }\n      if (e.touches[2]) {\n        var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n        now[4] = pos[0];\n        now[5] = pos[1];\n      }\n    } else if (e.touches[0] && !r.touchData.didSelect // don't allow box selection to degrade to single finger events like panning\n    ) {\n      var start = r.touchData.start;\n      var last = r.touchData.last;\n      var near;\n      if (!r.hoverData.draggingEles && !r.swipePanning) {\n        near = r.findNearestElement(now[0], now[1], true, true);\n      }\n      if (capture && start != null) {\n        e.preventDefault();\n      }\n\n      // dragging nodes\n      if (capture && start != null && r.nodeIsDraggable(start)) {\n        if (isOverThresholdDrag) {\n          // then dragging can happen\n          var draggedEles = r.dragData.touchDragEles;\n          var justStartedDrag = !r.dragData.didDrag;\n          if (justStartedDrag) {\n            addNodesToDrag(draggedEles, {\n              inDragLayer: true\n            });\n          }\n          r.dragData.didDrag = true;\n          var totalShift = {\n            x: 0,\n            y: 0\n          };\n          if (number$1(disp[0]) && number$1(disp[1])) {\n            totalShift.x += disp[0];\n            totalShift.y += disp[1];\n            if (justStartedDrag) {\n              r.redrawHint('eles', true);\n              var dragDelta = r.touchData.dragDelta;\n              if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) {\n                totalShift.x += dragDelta[0];\n                totalShift.y += dragDelta[1];\n              }\n            }\n          }\n          r.hoverData.draggingEles = true;\n          draggedEles.silentShift(totalShift).emit(makeEvent('position')).emit(makeEvent('drag'));\n          r.redrawHint('drag', true);\n          if (r.touchData.startPosition[0] == earlier[0] && r.touchData.startPosition[1] == earlier[1]) {\n            r.redrawHint('eles', true);\n          }\n          r.redraw();\n        } else {\n          // otherwise keep track of drag delta for later\n          var dragDelta = r.touchData.dragDelta = r.touchData.dragDelta || [];\n          if (dragDelta.length === 0) {\n            dragDelta.push(disp[0]);\n            dragDelta.push(disp[1]);\n          } else {\n            dragDelta[0] += disp[0];\n            dragDelta[1] += disp[1];\n          }\n        }\n      }\n\n      // touchmove\n      {\n        triggerEvents(start || near, ['touchmove', 'tapdrag', 'vmousemove'], e, {\n          x: now[0],\n          y: now[1]\n        });\n        if ((!start || !start.grabbed()) && near != last) {\n          if (last) {\n            last.emit(makeEvent('tapdragout'));\n          }\n          if (near) {\n            near.emit(makeEvent('tapdragover'));\n          }\n        }\n        r.touchData.last = near;\n      }\n\n      // check to cancel taphold\n      if (capture) {\n        for (var i = 0; i < now.length; i++) {\n          if (now[i] && r.touchData.startPosition[i] && isOverThresholdDrag) {\n            r.touchData.singleTouchMoved = true;\n          }\n        }\n      }\n\n      // panning\n      if (capture && (start == null || start.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) {\n        var allowPassthrough = allowPanningPassthrough(start, r.touchData.starts);\n        if (allowPassthrough) {\n          e.preventDefault();\n          if (!r.data.bgActivePosistion) {\n            r.data.bgActivePosistion = array2point(r.touchData.startPosition);\n          }\n          if (r.swipePanning) {\n            cy.panBy({\n              x: disp[0] * zoom,\n              y: disp[1] * zoom\n            });\n            cy.emit(makeEvent('dragpan'));\n          } else if (isOverThresholdDrag) {\n            r.swipePanning = true;\n            cy.panBy({\n              x: dx * zoom,\n              y: dy * zoom\n            });\n            cy.emit(makeEvent('dragpan'));\n            if (start) {\n              start.unactivate();\n              r.redrawHint('select', true);\n              r.touchData.start = null;\n            }\n          }\n        }\n\n        // Re-project\n        var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n        now[0] = pos[0];\n        now[1] = pos[1];\n      }\n    }\n    for (var j = 0; j < now.length; j++) {\n      earlier[j] = now[j];\n    }\n\n    // the active bg indicator should be removed when making a swipe that is neither for dragging nodes or panning\n    if (capture && e.touches.length > 0 && !r.hoverData.draggingEles && !r.swipePanning && r.data.bgActivePosistion != null) {\n      r.data.bgActivePosistion = undefined;\n      r.redrawHint('select', true);\n      r.redraw();\n    }\n  }, false);\n  var touchcancelHandler;\n  r.registerBinding(containerWindow, 'touchcancel', touchcancelHandler = function touchcancelHandler(e) {\n    // eslint-disable-line no-unused-vars\n    var start = r.touchData.start;\n    r.touchData.capture = false;\n    if (start) {\n      start.unactivate();\n    }\n  });\n  var touchendHandler, didDoubleTouch, touchTimeout, prevTouchTimeStamp;\n  r.registerBinding(containerWindow, 'touchend', touchendHandler = function touchendHandler(e) {\n    // eslint-disable-line no-unused-vars\n    var start = r.touchData.start;\n    var capture = r.touchData.capture;\n    if (capture) {\n      if (e.touches.length === 0) {\n        r.touchData.capture = false;\n      }\n      e.preventDefault();\n    } else {\n      return;\n    }\n    var select = r.selection;\n    r.swipePanning = false;\n    r.hoverData.draggingEles = false;\n    var cy = r.cy;\n    var zoom = cy.zoom();\n    var now = r.touchData.now;\n    var earlier = r.touchData.earlier;\n    if (e.touches[0]) {\n      var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n      now[0] = pos[0];\n      now[1] = pos[1];\n    }\n    if (e.touches[1]) {\n      var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n      now[2] = pos[0];\n      now[3] = pos[1];\n    }\n    if (e.touches[2]) {\n      var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n      now[4] = pos[0];\n      now[5] = pos[1];\n    }\n    var makeEvent = function makeEvent(type) {\n      return {\n        originalEvent: e,\n        type: type,\n        position: {\n          x: now[0],\n          y: now[1]\n        }\n      };\n    };\n    if (start) {\n      start.unactivate();\n    }\n    var ctxTapend;\n    if (r.touchData.cxt) {\n      ctxTapend = makeEvent('cxttapend');\n      if (start) {\n        start.emit(ctxTapend);\n      } else {\n        cy.emit(ctxTapend);\n      }\n      if (!r.touchData.cxtDragged) {\n        var ctxTap = makeEvent('cxttap');\n        if (start) {\n          start.emit(ctxTap);\n        } else {\n          cy.emit(ctxTap);\n        }\n      }\n      if (r.touchData.start) {\n        r.touchData.start._private.grabbed = false;\n      }\n      r.touchData.cxt = false;\n      r.touchData.start = null;\n      r.redraw();\n      return;\n    }\n\n    // no more box selection if we don't have three fingers\n    if (!e.touches[2] && cy.boxSelectionEnabled() && r.touchData.selecting) {\n      r.touchData.selecting = false;\n      var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));\n      select[0] = undefined;\n      select[1] = undefined;\n      select[2] = undefined;\n      select[3] = undefined;\n      select[4] = 0;\n      r.redrawHint('select', true);\n      cy.emit(makeEvent('boxend'));\n      var eleWouldBeSelected = function eleWouldBeSelected(ele) {\n        return ele.selectable() && !ele.selected();\n      };\n      box.emit(makeEvent('box')).stdFilter(eleWouldBeSelected).select().emit(makeEvent('boxselect'));\n      if (box.nonempty()) {\n        r.redrawHint('eles', true);\n      }\n      r.redraw();\n    }\n    if (start != null) {\n      start.unactivate();\n    }\n    if (e.touches[2]) {\n      r.data.bgActivePosistion = undefined;\n      r.redrawHint('select', true);\n    } else if (e.touches[1]) ; else if (e.touches[0]) ; else if (!e.touches[0]) {\n      r.data.bgActivePosistion = undefined;\n      r.redrawHint('select', true);\n      var draggedEles = r.dragData.touchDragEles;\n      if (start != null) {\n        var startWasGrabbed = start._private.grabbed;\n        freeDraggedElements(draggedEles);\n        r.redrawHint('drag', true);\n        r.redrawHint('eles', true);\n        if (startWasGrabbed) {\n          start.emit(makeEvent('freeon'));\n          draggedEles.emit(makeEvent('free'));\n          if (r.dragData.didDrag) {\n            start.emit(makeEvent('dragfreeon'));\n            draggedEles.emit(makeEvent('dragfree'));\n          }\n        }\n        triggerEvents(start, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {\n          x: now[0],\n          y: now[1]\n        });\n        start.unactivate();\n        r.touchData.start = null;\n      } else {\n        var near = r.findNearestElement(now[0], now[1], true, true);\n        triggerEvents(near, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {\n          x: now[0],\n          y: now[1]\n        });\n      }\n      var dx = r.touchData.startPosition[0] - now[0];\n      var dx2 = dx * dx;\n      var dy = r.touchData.startPosition[1] - now[1];\n      var dy2 = dy * dy;\n      var dist2 = dx2 + dy2;\n      var rdist2 = dist2 * zoom * zoom;\n\n      // Tap event, roughly same as mouse click event for touch\n      if (!r.touchData.singleTouchMoved) {\n        if (!start) {\n          cy.$(':selected').unselect(['tapunselect']);\n        }\n        triggerEvents(start, ['tap', 'vclick'], e, {\n          x: now[0],\n          y: now[1]\n        });\n        didDoubleTouch = false;\n        if (e.timeStamp - prevTouchTimeStamp <= cy.multiClickDebounceTime()) {\n          touchTimeout && clearTimeout(touchTimeout);\n          didDoubleTouch = true;\n          prevTouchTimeStamp = null;\n          triggerEvents(start, ['dbltap', 'vdblclick'], e, {\n            x: now[0],\n            y: now[1]\n          });\n        } else {\n          touchTimeout = setTimeout(function () {\n            if (didDoubleTouch) return;\n            triggerEvents(start, ['onetap', 'voneclick'], e, {\n              x: now[0],\n              y: now[1]\n            });\n          }, cy.multiClickDebounceTime());\n          prevTouchTimeStamp = e.timeStamp;\n        }\n      }\n\n      // Prepare to select the currently touched node, only if it hasn't been dragged past a certain distance\n      if (start != null && !r.dragData.didDrag // didn't drag nodes around\n      && start._private.selectable && rdist2 < r.touchTapThreshold2 && !r.pinching // pinch to zoom should not affect selection\n      ) {\n        if (cy.selectionType() === 'single') {\n          cy.$(isSelected).unmerge(start).unselect(['tapunselect']);\n          start.select(['tapselect']);\n        } else {\n          if (start.selected()) {\n            start.unselect(['tapunselect']);\n          } else {\n            start.select(['tapselect']);\n          }\n        }\n        r.redrawHint('eles', true);\n      }\n      r.touchData.singleTouchMoved = true;\n    }\n    for (var j = 0; j < now.length; j++) {\n      earlier[j] = now[j];\n    }\n    r.dragData.didDrag = false; // reset for next touchstart\n\n    if (e.touches.length === 0) {\n      r.touchData.dragDelta = [];\n      r.touchData.startPosition = [null, null, null, null, null, null];\n      r.touchData.startGPosition = null;\n      r.touchData.didSelect = false;\n    }\n    if (e.touches.length < 2) {\n      if (e.touches.length === 1) {\n        // the old start global pos'n may not be the same finger that remains\n        r.touchData.startGPosition = [e.touches[0].clientX, e.touches[0].clientY];\n      }\n      r.pinching = false;\n      r.redrawHint('eles', true);\n      r.redraw();\n    }\n\n    //r.redraw();\n  }, false);\n\n  // fallback compatibility layer for ms pointer events\n  if (typeof TouchEvent === 'undefined') {\n    var pointers = [];\n    var makeTouch = function makeTouch(e) {\n      return {\n        clientX: e.clientX,\n        clientY: e.clientY,\n        force: 1,\n        identifier: e.pointerId,\n        pageX: e.pageX,\n        pageY: e.pageY,\n        radiusX: e.width / 2,\n        radiusY: e.height / 2,\n        screenX: e.screenX,\n        screenY: e.screenY,\n        target: e.target\n      };\n    };\n    var makePointer = function makePointer(e) {\n      return {\n        event: e,\n        touch: makeTouch(e)\n      };\n    };\n    var addPointer = function addPointer(e) {\n      pointers.push(makePointer(e));\n    };\n    var removePointer = function removePointer(e) {\n      for (var i = 0; i < pointers.length; i++) {\n        var p = pointers[i];\n        if (p.event.pointerId === e.pointerId) {\n          pointers.splice(i, 1);\n          return;\n        }\n      }\n    };\n    var updatePointer = function updatePointer(e) {\n      var p = pointers.filter(function (p) {\n        return p.event.pointerId === e.pointerId;\n      })[0];\n      p.event = e;\n      p.touch = makeTouch(e);\n    };\n    var addTouchesToEvent = function addTouchesToEvent(e) {\n      e.touches = pointers.map(function (p) {\n        return p.touch;\n      });\n    };\n    var pointerIsMouse = function pointerIsMouse(e) {\n      return e.pointerType === 'mouse' || e.pointerType === 4;\n    };\n    r.registerBinding(r.container, 'pointerdown', function (e) {\n      if (pointerIsMouse(e)) {\n        return;\n      } // mouse already handled\n\n      e.preventDefault();\n      addPointer(e);\n      addTouchesToEvent(e);\n      touchstartHandler(e);\n    });\n    r.registerBinding(r.container, 'pointerup', function (e) {\n      if (pointerIsMouse(e)) {\n        return;\n      } // mouse already handled\n\n      removePointer(e);\n      addTouchesToEvent(e);\n      touchendHandler(e);\n    });\n    r.registerBinding(r.container, 'pointercancel', function (e) {\n      if (pointerIsMouse(e)) {\n        return;\n      } // mouse already handled\n\n      removePointer(e);\n      addTouchesToEvent(e);\n      touchcancelHandler(e);\n    });\n    r.registerBinding(r.container, 'pointermove', function (e) {\n      if (pointerIsMouse(e)) {\n        return;\n      } // mouse already handled\n\n      e.preventDefault();\n      updatePointer(e);\n      addTouchesToEvent(e);\n      touchmoveHandler(e);\n    });\n  }\n};\n\nvar BRp$2 = {};\nBRp$2.generatePolygon = function (name, points) {\n  return this.nodeShapes[name] = {\n    renderer: this,\n    name: name,\n    points: points,\n    draw: function draw(context, centerX, centerY, width, height, cornerRadius) {\n      this.renderer.nodeShapeImpl('polygon', context, centerX, centerY, width, height, this.points);\n    },\n    intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding, cornerRadius) {\n      return polygonIntersectLine(x, y, this.points, nodeX, nodeY, width / 2, height / 2, padding);\n    },\n    checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY, cornerRadius) {\n      return pointInsidePolygon(x, y, this.points, centerX, centerY, width, height, [0, -1], padding);\n    },\n    hasMiterBounds: name !== 'rectangle',\n    miterBounds: function miterBounds(centerX, centerY, width, height, strokeWidth, strokePosition) {\n      return miterBox(this.points, centerX, centerY, width, height, strokeWidth);\n    }\n  };\n};\nBRp$2.generateEllipse = function () {\n  return this.nodeShapes['ellipse'] = {\n    renderer: this,\n    name: 'ellipse',\n    draw: function draw(context, centerX, centerY, width, height, cornerRadius) {\n      this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n    },\n    intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding, cornerRadius) {\n      return intersectLineEllipse(x, y, nodeX, nodeY, width / 2 + padding, height / 2 + padding);\n    },\n    checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY, cornerRadius) {\n      return checkInEllipse(x, y, width, height, centerX, centerY, padding);\n    }\n  };\n};\nBRp$2.generateRoundPolygon = function (name, points) {\n  return this.nodeShapes[name] = {\n    renderer: this,\n    name: name,\n    points: points,\n    getOrCreateCorners: function getOrCreateCorners(centerX, centerY, width, height, cornerRadius, rs, field) {\n      if (rs[field] !== undefined && rs[field + '-cx'] === centerX && rs[field + '-cy'] === centerY) {\n        return rs[field];\n      }\n      rs[field] = new Array(points.length / 2);\n      rs[field + '-cx'] = centerX;\n      rs[field + '-cy'] = centerY;\n      var halfW = width / 2;\n      var halfH = height / 2;\n      cornerRadius = cornerRadius === 'auto' ? getRoundPolygonRadius(width, height) : cornerRadius;\n      var p = new Array(points.length / 2);\n      for (var _i = 0; _i < points.length / 2; _i++) {\n        p[_i] = {\n          x: centerX + halfW * points[_i * 2],\n          y: centerY + halfH * points[_i * 2 + 1]\n        };\n      }\n      var i,\n        p1,\n        p2,\n        p3,\n        len = p.length;\n      p1 = p[len - 1];\n      // for each point\n      for (i = 0; i < len; i++) {\n        p2 = p[i % len];\n        p3 = p[(i + 1) % len];\n        rs[field][i] = getRoundCorner(p1, p2, p3, cornerRadius);\n        p1 = p2;\n        p2 = p3;\n      }\n      return rs[field];\n    },\n    draw: function draw(context, centerX, centerY, width, height, cornerRadius, rs) {\n      this.renderer.nodeShapeImpl('round-polygon', context, centerX, centerY, width, height, this.points, this.getOrCreateCorners(centerX, centerY, width, height, cornerRadius, rs, 'drawCorners'));\n    },\n    intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding, cornerRadius, rs) {\n      return roundPolygonIntersectLine(x, y, this.points, nodeX, nodeY, width, height, padding, this.getOrCreateCorners(nodeX, nodeY, width, height, cornerRadius, rs, 'corners'));\n    },\n    checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY, cornerRadius, rs) {\n      return pointInsideRoundPolygon(x, y, this.points, centerX, centerY, width, height, this.getOrCreateCorners(centerX, centerY, width, height, cornerRadius, rs, 'corners'));\n    }\n  };\n};\nBRp$2.generateRoundRectangle = function () {\n  return this.nodeShapes['round-rectangle'] = this.nodeShapes['roundrectangle'] = {\n    renderer: this,\n    name: 'round-rectangle',\n    points: generateUnitNgonPointsFitToSquare(4, 0),\n    draw: function draw(context, centerX, centerY, width, height, cornerRadius) {\n      this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height, this.points, cornerRadius);\n    },\n    intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding, cornerRadius) {\n      return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding, cornerRadius);\n    },\n    checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY, cornerRadius) {\n      var halfWidth = width / 2;\n      var halfHeight = height / 2;\n      cornerRadius = cornerRadius === 'auto' ? getRoundRectangleRadius(width, height) : cornerRadius;\n      cornerRadius = Math.min(halfWidth, halfHeight, cornerRadius);\n      var diam = cornerRadius * 2;\n\n      // Check hBox\n      if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {\n        return true;\n      }\n\n      // Check vBox\n      if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {\n        return true;\n      }\n\n      // Check top left quarter circle\n      if (checkInEllipse(x, y, diam, diam, centerX - halfWidth + cornerRadius, centerY - halfHeight + cornerRadius, padding)) {\n        return true;\n      }\n\n      // Check top right quarter circle\n      if (checkInEllipse(x, y, diam, diam, centerX + halfWidth - cornerRadius, centerY - halfHeight + cornerRadius, padding)) {\n        return true;\n      }\n\n      // Check bottom right quarter circle\n      if (checkInEllipse(x, y, diam, diam, centerX + halfWidth - cornerRadius, centerY + halfHeight - cornerRadius, padding)) {\n        return true;\n      }\n\n      // Check bottom left quarter circle\n      if (checkInEllipse(x, y, diam, diam, centerX - halfWidth + cornerRadius, centerY + halfHeight - cornerRadius, padding)) {\n        return true;\n      }\n      return false;\n    }\n  };\n};\nBRp$2.generateCutRectangle = function () {\n  return this.nodeShapes['cut-rectangle'] = this.nodeShapes['cutrectangle'] = {\n    renderer: this,\n    name: 'cut-rectangle',\n    cornerLength: getCutRectangleCornerLength(),\n    points: generateUnitNgonPointsFitToSquare(4, 0),\n    draw: function draw(context, centerX, centerY, width, height, cornerRadius) {\n      this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height, null, cornerRadius);\n    },\n    generateCutTrianglePts: function generateCutTrianglePts(width, height, centerX, centerY, cornerRadius) {\n      var cl = cornerRadius === 'auto' ? this.cornerLength : cornerRadius;\n      var hh = height / 2;\n      var hw = width / 2;\n      var xBegin = centerX - hw;\n      var xEnd = centerX + hw;\n      var yBegin = centerY - hh;\n      var yEnd = centerY + hh;\n\n      // points are in clockwise order, inner (imaginary) triangle pt on [4, 5]\n      return {\n        topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl],\n        topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl],\n        bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl],\n        bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl]\n      };\n    },\n    intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding, cornerRadius) {\n      var cPts = this.generateCutTrianglePts(width + 2 * padding, height + 2 * padding, nodeX, nodeY, cornerRadius);\n      var pts = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]);\n      return polygonIntersectLine(x, y, pts, nodeX, nodeY);\n    },\n    checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY, cornerRadius) {\n      var cl = cornerRadius === 'auto' ? this.cornerLength : cornerRadius;\n      // Check hBox\n      if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * cl, [0, -1], padding)) {\n        return true;\n      }\n\n      // Check vBox\n      if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * cl, height, [0, -1], padding)) {\n        return true;\n      }\n      var cutTrianglePts = this.generateCutTrianglePts(width, height, centerX, centerY);\n      return pointInsidePolygonPoints(x, y, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x, y, cutTrianglePts.topRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomLeft);\n    }\n  };\n};\nBRp$2.generateBarrel = function () {\n  return this.nodeShapes['barrel'] = {\n    renderer: this,\n    name: 'barrel',\n    points: generateUnitNgonPointsFitToSquare(4, 0),\n    draw: function draw(context, centerX, centerY, width, height, cornerRadius) {\n      this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n    },\n    intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding, cornerRadius) {\n      // use two fixed t values for the bezier curve approximation\n\n      var t0 = 0.15;\n      var t1 = 0.5;\n      var t2 = 0.85;\n      var bPts = this.generateBarrelBezierPts(width + 2 * padding, height + 2 * padding, nodeX, nodeY);\n      var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) {\n        // approximate curve pts based on the two t values\n        var m0 = qbezierPtAt({\n          x: pts[0],\n          y: pts[1]\n        }, {\n          x: pts[2],\n          y: pts[3]\n        }, {\n          x: pts[4],\n          y: pts[5]\n        }, t0);\n        var m1 = qbezierPtAt({\n          x: pts[0],\n          y: pts[1]\n        }, {\n          x: pts[2],\n          y: pts[3]\n        }, {\n          x: pts[4],\n          y: pts[5]\n        }, t1);\n        var m2 = qbezierPtAt({\n          x: pts[0],\n          y: pts[1]\n        }, {\n          x: pts[2],\n          y: pts[3]\n        }, {\n          x: pts[4],\n          y: pts[5]\n        }, t2);\n        return [pts[0], pts[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts[4], pts[5]];\n      };\n      var pts = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft));\n      return polygonIntersectLine(x, y, pts, nodeX, nodeY);\n    },\n    generateBarrelBezierPts: function generateBarrelBezierPts(width, height, centerX, centerY) {\n      var hh = height / 2;\n      var hw = width / 2;\n      var xBegin = centerX - hw;\n      var xEnd = centerX + hw;\n      var yBegin = centerY - hh;\n      var yEnd = centerY + hh;\n      var curveConstants = getBarrelCurveConstants(width, height);\n      var hOffset = curveConstants.heightOffset;\n      var wOffset = curveConstants.widthOffset;\n      var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width;\n\n      // points are in clockwise order, inner (imaginary) control pt on [4, 5]\n      var pts = {\n        topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin],\n        topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset],\n        bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd],\n        bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset]\n      };\n      pts.topLeft.isTop = true;\n      pts.topRight.isTop = true;\n      pts.bottomLeft.isBottom = true;\n      pts.bottomRight.isBottom = true;\n      return pts;\n    },\n    checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY, cornerRadius) {\n      var curveConstants = getBarrelCurveConstants(width, height);\n      var hOffset = curveConstants.heightOffset;\n      var wOffset = curveConstants.widthOffset;\n\n      // Check hBox\n      if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * hOffset, [0, -1], padding)) {\n        return true;\n      }\n\n      // Check vBox\n      if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * wOffset, height, [0, -1], padding)) {\n        return true;\n      }\n      var barrelCurvePts = this.generateBarrelBezierPts(width, height, centerX, centerY);\n      var getCurveT = function getCurveT(x, y, curvePts) {\n        var x0 = curvePts[4];\n        var x1 = curvePts[2];\n        var x2 = curvePts[0];\n        var y0 = curvePts[5];\n        // var y1 = curvePts[ 3 ];\n        var y2 = curvePts[1];\n        var xMin = Math.min(x0, x2);\n        var xMax = Math.max(x0, x2);\n        var yMin = Math.min(y0, y2);\n        var yMax = Math.max(y0, y2);\n        if (xMin <= x && x <= xMax && yMin <= y && y <= yMax) {\n          var coeff = bezierPtsToQuadCoeff(x0, x1, x2);\n          var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x);\n          var validRoots = roots.filter(function (r) {\n            return 0 <= r && r <= 1;\n          });\n          if (validRoots.length > 0) {\n            return validRoots[0];\n          }\n        }\n        return null;\n      };\n      var curveRegions = Object.keys(barrelCurvePts);\n      for (var i = 0; i < curveRegions.length; i++) {\n        var corner = curveRegions[i];\n        var cornerPts = barrelCurvePts[corner];\n        var t = getCurveT(x, y, cornerPts);\n        if (t == null) {\n          continue;\n        }\n        var y0 = cornerPts[5];\n        var y1 = cornerPts[3];\n        var y2 = cornerPts[1];\n        var bezY = qbezierAt(y0, y1, y2, t);\n        if (cornerPts.isTop && bezY <= y) {\n          return true;\n        }\n        if (cornerPts.isBottom && y <= bezY) {\n          return true;\n        }\n      }\n      return false;\n    }\n  };\n};\nBRp$2.generateBottomRoundrectangle = function () {\n  return this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes['bottomroundrectangle'] = {\n    renderer: this,\n    name: 'bottom-round-rectangle',\n    points: generateUnitNgonPointsFitToSquare(4, 0),\n    draw: function draw(context, centerX, centerY, width, height, cornerRadius) {\n      this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height, this.points, cornerRadius);\n    },\n    intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding, cornerRadius) {\n      var topStartX = nodeX - (width / 2 + padding);\n      var topStartY = nodeY - (height / 2 + padding);\n      var topEndY = topStartY;\n      var topEndX = nodeX + (width / 2 + padding);\n      var topIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);\n      if (topIntersections.length > 0) {\n        return topIntersections;\n      }\n      return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding, cornerRadius);\n    },\n    checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY, cornerRadius) {\n      cornerRadius = cornerRadius === 'auto' ? getRoundRectangleRadius(width, height) : cornerRadius;\n      var diam = 2 * cornerRadius;\n\n      // Check hBox\n      if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {\n        return true;\n      }\n\n      // Check vBox\n      if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {\n        return true;\n      }\n\n      // check non-rounded top side\n      var outerWidth = width / 2 + 2 * padding;\n      var outerHeight = height / 2 + 2 * padding;\n      var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight];\n      if (pointInsidePolygonPoints(x, y, points)) {\n        return true;\n      }\n\n      // Check bottom right quarter circle\n      if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n        return true;\n      }\n\n      // Check bottom left quarter circle\n      if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n        return true;\n      }\n      return false;\n    }\n  };\n};\nBRp$2.registerNodeShapes = function () {\n  var nodeShapes = this.nodeShapes = {};\n  var renderer = this;\n  this.generateEllipse();\n  this.generatePolygon('triangle', generateUnitNgonPointsFitToSquare(3, 0));\n  this.generateRoundPolygon('round-triangle', generateUnitNgonPointsFitToSquare(3, 0));\n  this.generatePolygon('rectangle', generateUnitNgonPointsFitToSquare(4, 0));\n  nodeShapes['square'] = nodeShapes['rectangle'];\n  this.generateRoundRectangle();\n  this.generateCutRectangle();\n  this.generateBarrel();\n  this.generateBottomRoundrectangle();\n  {\n    var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0];\n    this.generatePolygon('diamond', diamondPoints);\n    this.generateRoundPolygon('round-diamond', diamondPoints);\n  }\n  this.generatePolygon('pentagon', generateUnitNgonPointsFitToSquare(5, 0));\n  this.generateRoundPolygon('round-pentagon', generateUnitNgonPointsFitToSquare(5, 0));\n  this.generatePolygon('hexagon', generateUnitNgonPointsFitToSquare(6, 0));\n  this.generateRoundPolygon('round-hexagon', generateUnitNgonPointsFitToSquare(6, 0));\n  this.generatePolygon('heptagon', generateUnitNgonPointsFitToSquare(7, 0));\n  this.generateRoundPolygon('round-heptagon', generateUnitNgonPointsFitToSquare(7, 0));\n  this.generatePolygon('octagon', generateUnitNgonPointsFitToSquare(8, 0));\n  this.generateRoundPolygon('round-octagon', generateUnitNgonPointsFitToSquare(8, 0));\n  var star5Points = new Array(20);\n  {\n    var outerPoints = generateUnitNgonPoints(5, 0);\n    var innerPoints = generateUnitNgonPoints(5, Math.PI / 5);\n\n    // Outer radius is 1; inner radius of star is smaller\n    var innerRadius = 0.5 * (3 - Math.sqrt(5));\n    innerRadius *= 1.57;\n    for (var i = 0; i < innerPoints.length / 2; i++) {\n      innerPoints[i * 2] *= innerRadius;\n      innerPoints[i * 2 + 1] *= innerRadius;\n    }\n    for (var i = 0; i < 20 / 4; i++) {\n      star5Points[i * 4] = outerPoints[i * 2];\n      star5Points[i * 4 + 1] = outerPoints[i * 2 + 1];\n      star5Points[i * 4 + 2] = innerPoints[i * 2];\n      star5Points[i * 4 + 3] = innerPoints[i * 2 + 1];\n    }\n  }\n  star5Points = fitPolygonToSquare(star5Points);\n  this.generatePolygon('star', star5Points);\n  this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]);\n  this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]);\n  this.generatePolygon('right-rhomboid', [-0.333, -1, 1, -1, 0.333, 1, -1, 1]);\n  this.nodeShapes['concavehexagon'] = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]);\n  {\n    var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1];\n    this.generatePolygon('tag', tagPoints);\n    this.generateRoundPolygon('round-tag', tagPoints);\n  }\n  nodeShapes.makePolygon = function (points) {\n    // use caching on user-specified polygons so they are as fast as native shapes\n\n    var key = points.join('$');\n    var name = 'polygon-' + key;\n    var shape;\n    if (shape = this[name]) {\n      // got cached shape\n      return shape;\n    }\n\n    // create and cache new shape\n    return renderer.generatePolygon(name, points);\n  };\n};\n\nvar BRp$1 = {};\nBRp$1.timeToRender = function () {\n  return this.redrawTotalTime / this.redrawCount;\n};\nBRp$1.redraw = function (options) {\n  options = options || staticEmptyObject();\n  var r = this;\n  if (r.averageRedrawTime === undefined) {\n    r.averageRedrawTime = 0;\n  }\n  if (r.lastRedrawTime === undefined) {\n    r.lastRedrawTime = 0;\n  }\n  if (r.lastDrawTime === undefined) {\n    r.lastDrawTime = 0;\n  }\n  r.requestedFrame = true;\n  r.renderOptions = options;\n};\nBRp$1.beforeRender = function (fn, priority) {\n  // the renderer can't add tick callbacks when destroyed\n  if (this.destroyed) {\n    return;\n  }\n  if (priority == null) {\n    error('Priority is not optional for beforeRender');\n  }\n  var cbs = this.beforeRenderCallbacks;\n  cbs.push({\n    fn: fn,\n    priority: priority\n  });\n\n  // higher priority callbacks executed first\n  cbs.sort(function (a, b) {\n    return b.priority - a.priority;\n  });\n};\nvar beforeRenderCallbacks = function beforeRenderCallbacks(r, willDraw, startTime) {\n  var cbs = r.beforeRenderCallbacks;\n  for (var i = 0; i < cbs.length; i++) {\n    cbs[i].fn(willDraw, startTime);\n  }\n};\nBRp$1.startRenderLoop = function () {\n  var r = this;\n  var cy = r.cy;\n  if (r.renderLoopStarted) {\n    return;\n  } else {\n    r.renderLoopStarted = true;\n  }\n  var _renderFn = function renderFn(requestTime) {\n    if (r.destroyed) {\n      return;\n    }\n    if (cy.batching()) ; else if (r.requestedFrame && !r.skipFrame) {\n      beforeRenderCallbacks(r, true, requestTime);\n      var startTime = performanceNow();\n      r.render(r.renderOptions);\n      var endTime = r.lastDrawTime = performanceNow();\n      if (r.averageRedrawTime === undefined) {\n        r.averageRedrawTime = endTime - startTime;\n      }\n      if (r.redrawCount === undefined) {\n        r.redrawCount = 0;\n      }\n      r.redrawCount++;\n      if (r.redrawTotalTime === undefined) {\n        r.redrawTotalTime = 0;\n      }\n      var duration = endTime - startTime;\n      r.redrawTotalTime += duration;\n      r.lastRedrawTime = duration;\n\n      // use a weighted average with a bias from the previous average so we don't spike so easily\n      r.averageRedrawTime = r.averageRedrawTime / 2 + duration / 2;\n      r.requestedFrame = false;\n    } else {\n      beforeRenderCallbacks(r, false, requestTime);\n    }\n    r.skipFrame = false;\n    requestAnimationFrame(_renderFn);\n  };\n  requestAnimationFrame(_renderFn);\n};\n\nvar BaseRenderer = function BaseRenderer(options) {\n  this.init(options);\n};\nvar BR = BaseRenderer;\nvar BRp = BR.prototype;\nBRp.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl'];\nBRp.init = function (options) {\n  var r = this;\n  r.options = options;\n  r.cy = options.cy;\n  var ctr = r.container = options.cy.container();\n  var containerWindow = r.cy.window();\n\n  // prepend a stylesheet in the head such that\n  if (containerWindow) {\n    var document = containerWindow.document;\n    var head = document.head;\n    var stylesheetId = '__________cytoscape_stylesheet';\n    var className = '__________cytoscape_container';\n    var stylesheetAlreadyExists = document.getElementById(stylesheetId) != null;\n    if (ctr.className.indexOf(className) < 0) {\n      ctr.className = (ctr.className || '') + ' ' + className;\n    }\n    if (!stylesheetAlreadyExists) {\n      var stylesheet = document.createElement('style');\n      stylesheet.id = stylesheetId;\n      stylesheet.textContent = '.' + className + ' { position: relative; }';\n      head.insertBefore(stylesheet, head.children[0]); // first so lowest priority\n    }\n    var computedStyle = containerWindow.getComputedStyle(ctr);\n    var position = computedStyle.getPropertyValue('position');\n    if (position === 'static') {\n      warn('A Cytoscape container has style position:static and so can not use UI extensions properly');\n    }\n  }\n  r.selection = [undefined, undefined, undefined, undefined, 0]; // Coordinates for selection box, plus enabled flag\n\n  r.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95];\n\n  //--Pointer-related data\n  r.hoverData = {\n    down: null,\n    last: null,\n    downTime: null,\n    triggerMode: null,\n    dragging: false,\n    initialPan: [null, null],\n    capture: false\n  };\n  r.dragData = {\n    possibleDragElements: []\n  };\n  r.touchData = {\n    start: null,\n    capture: false,\n    // These 3 fields related to tap, taphold events\n    startPosition: [null, null, null, null, null, null],\n    singleTouchStartTime: null,\n    singleTouchMoved: true,\n    now: [null, null, null, null, null, null],\n    earlier: [null, null, null, null, null, null]\n  };\n  r.redraws = 0;\n  r.showFps = options.showFps;\n  r.debug = options.debug;\n  r.webgl = options.webgl;\n  r.hideEdgesOnViewport = options.hideEdgesOnViewport;\n  r.textureOnViewport = options.textureOnViewport;\n  r.wheelSensitivity = options.wheelSensitivity;\n  r.motionBlurEnabled = options.motionBlur; // on by default\n  r.forcedPixelRatio = number$1(options.pixelRatio) ? options.pixelRatio : null;\n  r.motionBlur = options.motionBlur; // for initial kick off\n  r.motionBlurOpacity = options.motionBlurOpacity;\n  r.motionBlurTransparency = 1 - r.motionBlurOpacity;\n  r.motionBlurPxRatio = 1;\n  r.mbPxRBlurry = 1; //0.8;\n  r.minMbLowQualFrames = 4;\n  r.fullQualityMb = false;\n  r.clearedForMotionBlur = [];\n  r.desktopTapThreshold = options.desktopTapThreshold;\n  r.desktopTapThreshold2 = options.desktopTapThreshold * options.desktopTapThreshold;\n  r.touchTapThreshold = options.touchTapThreshold;\n  r.touchTapThreshold2 = options.touchTapThreshold * options.touchTapThreshold;\n  r.tapholdDuration = 500;\n  r.bindings = [];\n  r.beforeRenderCallbacks = [];\n  r.beforeRenderPriorities = {\n    // higher priority execs before lower one\n    animations: 400,\n    eleCalcs: 300,\n    eleTxrDeq: 200,\n    lyrTxrDeq: 150,\n    lyrTxrSkip: 100\n  };\n  r.registerNodeShapes();\n  r.registerArrowShapes();\n  r.registerCalculationListeners();\n};\nBRp.notify = function (eventName, eles) {\n  var r = this;\n  var cy = r.cy;\n\n  // the renderer can't be notified after it's destroyed\n  if (this.destroyed) {\n    return;\n  }\n  if (eventName === 'init') {\n    r.load();\n    return;\n  }\n  if (eventName === 'destroy') {\n    r.destroy();\n    return;\n  }\n  if (eventName === 'add' || eventName === 'remove' || eventName === 'move' && cy.hasCompoundNodes() || eventName === 'load' || eventName === 'zorder' || eventName === 'mount') {\n    r.invalidateCachedZSortedEles();\n  }\n  if (eventName === 'viewport') {\n    r.redrawHint('select', true);\n  }\n  if (eventName === 'gc') {\n    r.redrawHint('gc', true);\n  }\n  if (eventName === 'load' || eventName === 'resize' || eventName === 'mount') {\n    r.invalidateContainerClientCoordsCache();\n    r.matchCanvasSize(r.container);\n  }\n  r.redrawHint('eles', true);\n  r.redrawHint('drag', true);\n  this.startRenderLoop();\n  this.redraw();\n};\nBRp.destroy = function () {\n  var r = this;\n  r.destroyed = true;\n  r.cy.stopAnimationLoop();\n  for (var i = 0; i < r.bindings.length; i++) {\n    var binding = r.bindings[i];\n    var b = binding;\n    var tgt = b.target;\n    (tgt.off || tgt.removeEventListener).apply(tgt, b.args);\n  }\n  r.bindings = [];\n  r.beforeRenderCallbacks = [];\n  r.onUpdateEleCalcsFns = [];\n  if (r.removeObserver) {\n    r.removeObserver.disconnect();\n  }\n  if (r.styleObserver) {\n    r.styleObserver.disconnect();\n  }\n  if (r.resizeObserver) {\n    r.resizeObserver.disconnect();\n  }\n  if (r.labelCalcDiv) {\n    try {\n      document.body.removeChild(r.labelCalcDiv); // eslint-disable-line no-undef\n    } catch (e) {\n      // ie10 issue #1014\n    }\n  }\n};\nBRp.isHeadless = function () {\n  return false;\n};\n[BRp$f, BRp$5, BRp$4, BRp$3, BRp$2, BRp$1].forEach(function (props) {\n  extend(BRp, props);\n});\n\nvar fullFpsTime = 1000 / 60; // assume 60 frames per second\n\nvar defs = {\n  setupDequeueing: function setupDequeueing(opts) {\n    return function setupDequeueingImpl() {\n      var self = this;\n      var r = this.renderer;\n      if (self.dequeueingSetup) {\n        return;\n      } else {\n        self.dequeueingSetup = true;\n      }\n      var queueRedraw = debounce(function () {\n        r.redrawHint('eles', true);\n        r.redrawHint('drag', true);\n        r.redraw();\n      }, opts.deqRedrawThreshold);\n      var dequeue = function dequeue(willDraw, frameStartTime) {\n        var startTime = performanceNow();\n        var avgRenderTime = r.averageRedrawTime;\n        var renderTime = r.lastRedrawTime;\n        var deqd = [];\n        var extent = r.cy.extent();\n        var pixelRatio = r.getPixelRatio();\n\n        // if we aren't in a tick that causes a draw, then the rendered style\n        // queue won't automatically be flushed before dequeueing starts\n        if (!willDraw) {\n          r.flushRenderedStyleQueue();\n        }\n        while (true) {\n          // eslint-disable-line no-constant-condition\n          var now = performanceNow();\n          var duration = now - startTime;\n          var frameDuration = now - frameStartTime;\n          if (renderTime < fullFpsTime) {\n            // if we're rendering faster than the ideal fps, then do dequeueing\n            // during all of the remaining frame time\n\n            var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0);\n            if (frameDuration >= opts.deqFastCost * timeAvailable) {\n              break;\n            }\n          } else {\n            if (willDraw) {\n              if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) {\n                break;\n              }\n            } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) {\n              break;\n            }\n          }\n          var thisDeqd = opts.deq(self, pixelRatio, extent);\n          if (thisDeqd.length > 0) {\n            for (var i = 0; i < thisDeqd.length; i++) {\n              deqd.push(thisDeqd[i]);\n            }\n          } else {\n            break;\n          }\n        }\n\n        // callbacks on dequeue\n        if (deqd.length > 0) {\n          opts.onDeqd(self, deqd);\n          if (!willDraw && opts.shouldRedraw(self, deqd, pixelRatio, extent)) {\n            queueRedraw();\n          }\n        }\n      };\n      var priority = opts.priority || noop$1;\n      r.beforeRender(dequeue, priority(self));\n    };\n  }\n};\n\n// Allows lookups for (ele, lvl) => cache.\n// Uses keys so elements may share the same cache.\nvar ElementTextureCacheLookup = /*#__PURE__*/function () {\n  function ElementTextureCacheLookup(getKey) {\n    var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : falsify;\n    _classCallCheck(this, ElementTextureCacheLookup);\n    this.idsByKey = new Map$1();\n    this.keyForId = new Map$1();\n    this.cachesByLvl = new Map$1();\n    this.lvls = [];\n    this.getKey = getKey;\n    this.doesEleInvalidateKey = doesEleInvalidateKey;\n  }\n  return _createClass(ElementTextureCacheLookup, [{\n    key: \"getIdsFor\",\n    value: function getIdsFor(key) {\n      if (key == null) {\n        error(\"Can not get id list for null key\");\n      }\n      var idsByKey = this.idsByKey;\n      var ids = this.idsByKey.get(key);\n      if (!ids) {\n        ids = new Set$1();\n        idsByKey.set(key, ids);\n      }\n      return ids;\n    }\n  }, {\n    key: \"addIdForKey\",\n    value: function addIdForKey(key, id) {\n      if (key != null) {\n        this.getIdsFor(key).add(id);\n      }\n    }\n  }, {\n    key: \"deleteIdForKey\",\n    value: function deleteIdForKey(key, id) {\n      if (key != null) {\n        this.getIdsFor(key)[\"delete\"](id);\n      }\n    }\n  }, {\n    key: \"getNumberOfIdsForKey\",\n    value: function getNumberOfIdsForKey(key) {\n      if (key == null) {\n        return 0;\n      } else {\n        return this.getIdsFor(key).size;\n      }\n    }\n  }, {\n    key: \"updateKeyMappingFor\",\n    value: function updateKeyMappingFor(ele) {\n      var id = ele.id();\n      var prevKey = this.keyForId.get(id);\n      var currKey = this.getKey(ele);\n      this.deleteIdForKey(prevKey, id);\n      this.addIdForKey(currKey, id);\n      this.keyForId.set(id, currKey);\n    }\n  }, {\n    key: \"deleteKeyMappingFor\",\n    value: function deleteKeyMappingFor(ele) {\n      var id = ele.id();\n      var prevKey = this.keyForId.get(id);\n      this.deleteIdForKey(prevKey, id);\n      this.keyForId[\"delete\"](id);\n    }\n  }, {\n    key: \"keyHasChangedFor\",\n    value: function keyHasChangedFor(ele) {\n      var id = ele.id();\n      var prevKey = this.keyForId.get(id);\n      var newKey = this.getKey(ele);\n      return prevKey !== newKey;\n    }\n  }, {\n    key: \"isInvalid\",\n    value: function isInvalid(ele) {\n      return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele);\n    }\n  }, {\n    key: \"getCachesAt\",\n    value: function getCachesAt(lvl) {\n      var cachesByLvl = this.cachesByLvl,\n        lvls = this.lvls;\n      var caches = cachesByLvl.get(lvl);\n      if (!caches) {\n        caches = new Map$1();\n        cachesByLvl.set(lvl, caches);\n        lvls.push(lvl);\n      }\n      return caches;\n    }\n  }, {\n    key: \"getCache\",\n    value: function getCache(key, lvl) {\n      return this.getCachesAt(lvl).get(key);\n    }\n  }, {\n    key: \"get\",\n    value: function get(ele, lvl) {\n      var key = this.getKey(ele);\n      var cache = this.getCache(key, lvl);\n\n      // getting for an element may need to add to the id list b/c eles can share keys\n      if (cache != null) {\n        this.updateKeyMappingFor(ele);\n      }\n      return cache;\n    }\n  }, {\n    key: \"getForCachedKey\",\n    value: function getForCachedKey(ele, lvl) {\n      var key = this.keyForId.get(ele.id()); // n.b. use cached key, not newly computed key\n      var cache = this.getCache(key, lvl);\n      return cache;\n    }\n  }, {\n    key: \"hasCache\",\n    value: function hasCache(key, lvl) {\n      return this.getCachesAt(lvl).has(key);\n    }\n  }, {\n    key: \"has\",\n    value: function has(ele, lvl) {\n      var key = this.getKey(ele);\n      return this.hasCache(key, lvl);\n    }\n  }, {\n    key: \"setCache\",\n    value: function setCache(key, lvl, cache) {\n      cache.key = key;\n      this.getCachesAt(lvl).set(key, cache);\n    }\n  }, {\n    key: \"set\",\n    value: function set(ele, lvl, cache) {\n      var key = this.getKey(ele);\n      this.setCache(key, lvl, cache);\n      this.updateKeyMappingFor(ele);\n    }\n  }, {\n    key: \"deleteCache\",\n    value: function deleteCache(key, lvl) {\n      this.getCachesAt(lvl)[\"delete\"](key);\n    }\n  }, {\n    key: \"delete\",\n    value: function _delete(ele, lvl) {\n      var key = this.getKey(ele);\n      this.deleteCache(key, lvl);\n    }\n  }, {\n    key: \"invalidateKey\",\n    value: function invalidateKey(key) {\n      var _this = this;\n      this.lvls.forEach(function (lvl) {\n        return _this.deleteCache(key, lvl);\n      });\n    }\n\n    // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key)\n  }, {\n    key: \"invalidate\",\n    value: function invalidate(ele) {\n      var id = ele.id();\n      var key = this.keyForId.get(id); // n.b. use stored key rather than current (potential key)\n\n      this.deleteKeyMappingFor(ele);\n      var entireKeyInvalidated = this.doesEleInvalidateKey(ele);\n      if (entireKeyInvalidated) {\n        // clear mapping for current key\n        this.invalidateKey(key);\n      }\n      return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0;\n    }\n  }]);\n}();\n\nvar minTxrH = 25; // the size of the texture cache for small height eles (special case)\nvar txrStepH = 50; // the min size of the regular cache, and the size it increases with each step up\nvar minLvl$1 = -4; // when scaling smaller than that we don't need to re-render\nvar maxLvl$1 = 3; // when larger than this scale just render directly (caching is not helpful)\nvar maxZoom$1 = 7.99; // beyond this zoom level, layered textures are not used\nvar eleTxrSpacing = 8; // spacing between elements on textures to avoid blitting overlaps\nvar defTxrWidth = 1024; // default/minimum texture width\nvar maxTxrW = 1024; // the maximum width of a texture\nvar maxTxrH = 1024; // the maximum height of a texture\nvar minUtility = 0.2; // if usage of texture is less than this, it is retired\nvar maxFullness = 0.8; // fullness of texture after which queue removal is checked\nvar maxFullnessChecks = 10; // dequeued after this many checks\nvar deqCost$1 = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame\nvar deqAvgCost$1 = 0.1; // % of add'l rendering cost compared to average overall redraw time\nvar deqNoDrawCost$1 = 0.9; // % of avg frame time that can be used for dequeueing when not drawing\nvar deqFastCost$1 = 0.9; // % of frame time to be used when >60fps\nvar deqRedrawThreshold$1 = 100; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile\nvar maxDeqSize$1 = 1; // number of eles to dequeue and render at higher texture in each batch\n\nvar getTxrReasons = {\n  dequeue: 'dequeue',\n  downscale: 'downscale',\n  highQuality: 'highQuality'\n};\nvar initDefaults = defaults$g({\n  getKey: null,\n  doesEleInvalidateKey: falsify,\n  drawElement: null,\n  getBoundingBox: null,\n  getRotationPoint: null,\n  getRotationOffset: null,\n  isVisible: trueify,\n  allowEdgeTxrCaching: true,\n  allowParentTxrCaching: true\n});\nvar ElementTextureCache = function ElementTextureCache(renderer, initOptions) {\n  var self = this;\n  self.renderer = renderer;\n  self.onDequeues = [];\n  var opts = initDefaults(initOptions);\n  extend(self, opts);\n  self.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey);\n  self.setupDequeueing();\n};\nvar ETCp = ElementTextureCache.prototype;\nETCp.reasons = getTxrReasons;\n\n// the list of textures in which new subtextures for elements can be placed\nETCp.getTextureQueue = function (txrH) {\n  var self = this;\n  self.eleImgCaches = self.eleImgCaches || {};\n  return self.eleImgCaches[txrH] = self.eleImgCaches[txrH] || [];\n};\n\n// the list of usused textures which can be recycled (in use in texture queue)\nETCp.getRetiredTextureQueue = function (txrH) {\n  var self = this;\n  var rtxtrQs = self.eleImgCaches.retired = self.eleImgCaches.retired || {};\n  var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || [];\n  return rtxtrQ;\n};\n\n// queue of element draw requests at different scale levels\nETCp.getElementQueue = function () {\n  var self = this;\n  var q = self.eleCacheQueue = self.eleCacheQueue || new Heap(function (a, b) {\n    return b.reqs - a.reqs;\n  });\n  return q;\n};\n\n// queue of element draw requests at different scale levels (element id lookup)\nETCp.getElementKeyToQueue = function () {\n  var self = this;\n  var k2q = self.eleKeyToCacheQueue = self.eleKeyToCacheQueue || {};\n  return k2q;\n};\nETCp.getElement = function (ele, bb, pxRatio, lvl, reason) {\n  var self = this;\n  var r = this.renderer;\n  var zoom = r.cy.zoom();\n  var lookup = this.lookup;\n  if (!bb || bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible() || ele.removed()) {\n    return null;\n  }\n  if (!self.allowEdgeTxrCaching && ele.isEdge() || !self.allowParentTxrCaching && ele.isParent()) {\n    return null;\n  }\n  if (lvl == null) {\n    lvl = Math.ceil(log2(zoom * pxRatio));\n  }\n  if (lvl < minLvl$1) {\n    lvl = minLvl$1;\n  } else if (zoom >= maxZoom$1 || lvl > maxLvl$1) {\n    return null;\n  }\n  var scale = Math.pow(2, lvl);\n  var eleScaledH = bb.h * scale;\n  var eleScaledW = bb.w * scale;\n  var scaledLabelShown = r.eleTextBiggerThanMin(ele, scale);\n  if (!this.isVisible(ele, scaledLabelShown)) {\n    return null;\n  }\n  var eleCache = lookup.get(ele, lvl);\n\n  // if this get was on an unused/invalidated cache, then restore the texture usage metric\n  if (eleCache && eleCache.invalidated) {\n    eleCache.invalidated = false;\n    eleCache.texture.invalidatedWidth -= eleCache.width;\n  }\n  if (eleCache) {\n    return eleCache;\n  }\n  var txrH; // which texture height this ele belongs to\n\n  if (eleScaledH <= minTxrH) {\n    txrH = minTxrH;\n  } else if (eleScaledH <= txrStepH) {\n    txrH = txrStepH;\n  } else {\n    txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH;\n  }\n  if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) {\n    return null; // caching large elements is not efficient\n  }\n  var txrQ = self.getTextureQueue(txrH);\n\n  // first try the second last one in case it has space at the end\n  var txr = txrQ[txrQ.length - 2];\n  var addNewTxr = function addNewTxr() {\n    return self.recycleTexture(txrH, eleScaledW) || self.addTexture(txrH, eleScaledW);\n  };\n\n  // try the last one if there is no second last one\n  if (!txr) {\n    txr = txrQ[txrQ.length - 1];\n  }\n\n  // if the last one doesn't exist, we need a first one\n  if (!txr) {\n    txr = addNewTxr();\n  }\n\n  // if there's no room in the current texture, we need a new one\n  if (txr.width - txr.usedWidth < eleScaledW) {\n    txr = addNewTxr();\n  }\n  var scalableFrom = function scalableFrom(otherCache) {\n    return otherCache && otherCache.scaledLabelShown === scaledLabelShown;\n  };\n  var deqing = reason && reason === getTxrReasons.dequeue;\n  var highQualityReq = reason && reason === getTxrReasons.highQuality;\n  var downscaleReq = reason && reason === getTxrReasons.downscale;\n  var higherCache; // the nearest cache with a higher level\n  for (var l = lvl + 1; l <= maxLvl$1; l++) {\n    var c = lookup.get(ele, l);\n    if (c) {\n      higherCache = c;\n      break;\n    }\n  }\n  var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null;\n  var downscale = function downscale() {\n    txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH);\n  };\n\n  // reset ele area in texture\n  txr.context.setTransform(1, 0, 0, 1, 0, 0);\n  txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH);\n  if (scalableFrom(oneUpCache)) {\n    // then we can relatively cheaply rescale the existing image w/o rerendering\n    downscale();\n  } else if (scalableFrom(higherCache)) {\n    // then use the higher cache for now and queue the next level down\n    // to cheaply scale towards the smaller level\n\n    if (highQualityReq) {\n      for (var _l = higherCache.level; _l > lvl; _l--) {\n        oneUpCache = self.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale);\n      }\n      downscale();\n    } else {\n      self.queueElement(ele, higherCache.level - 1);\n      return higherCache;\n    }\n  } else {\n    var lowerCache; // the nearest cache with a lower level\n    if (!deqing && !highQualityReq && !downscaleReq) {\n      for (var _l2 = lvl - 1; _l2 >= minLvl$1; _l2--) {\n        var _c = lookup.get(ele, _l2);\n        if (_c) {\n          lowerCache = _c;\n          break;\n        }\n      }\n    }\n    if (scalableFrom(lowerCache)) {\n      // then use the lower quality cache for now and queue the better one for later\n\n      self.queueElement(ele, lvl);\n      return lowerCache;\n    }\n    txr.context.translate(txr.usedWidth, 0);\n    txr.context.scale(scale, scale);\n    this.drawElement(txr.context, ele, bb, scaledLabelShown, false);\n    txr.context.scale(1 / scale, 1 / scale);\n    txr.context.translate(-txr.usedWidth, 0);\n  }\n  eleCache = {\n    x: txr.usedWidth,\n    texture: txr,\n    level: lvl,\n    scale: scale,\n    width: eleScaledW,\n    height: eleScaledH,\n    scaledLabelShown: scaledLabelShown\n  };\n  txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing);\n  txr.eleCaches.push(eleCache);\n  lookup.set(ele, lvl, eleCache);\n  self.checkTextureFullness(txr);\n  return eleCache;\n};\nETCp.invalidateElements = function (eles) {\n  for (var i = 0; i < eles.length; i++) {\n    this.invalidateElement(eles[i]);\n  }\n};\nETCp.invalidateElement = function (ele) {\n  var self = this;\n  var lookup = self.lookup;\n  var caches = [];\n  var invalid = lookup.isInvalid(ele);\n  if (!invalid) {\n    return; // override the invalidation request if the element key has not changed\n  }\n  for (var lvl = minLvl$1; lvl <= maxLvl$1; lvl++) {\n    var cache = lookup.getForCachedKey(ele, lvl);\n    if (cache) {\n      caches.push(cache);\n    }\n  }\n  var noOtherElesUseCache = lookup.invalidate(ele);\n  if (noOtherElesUseCache) {\n    for (var i = 0; i < caches.length; i++) {\n      var _cache = caches[i];\n      var txr = _cache.texture;\n\n      // remove space from the texture it belongs to\n      txr.invalidatedWidth += _cache.width;\n\n      // mark the cache as invalidated\n      _cache.invalidated = true;\n\n      // retire the texture if its utility is low\n      self.checkTextureUtility(txr);\n    }\n  }\n\n  // remove from queue since the old req was for the old state\n  self.removeFromQueue(ele);\n};\nETCp.checkTextureUtility = function (txr) {\n  // invalidate all entries in the cache if the cache size is small\n  if (txr.invalidatedWidth >= minUtility * txr.width) {\n    this.retireTexture(txr);\n  }\n};\nETCp.checkTextureFullness = function (txr) {\n  // if texture has been mostly filled and passed over several times, remove\n  // it from the queue so we don't need to waste time looking at it to put new things\n\n  var self = this;\n  var txrQ = self.getTextureQueue(txr.height);\n  if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) {\n    removeFromArray(txrQ, txr);\n  } else {\n    txr.fullnessChecks++;\n  }\n};\nETCp.retireTexture = function (txr) {\n  var self = this;\n  var txrH = txr.height;\n  var txrQ = self.getTextureQueue(txrH);\n  var lookup = this.lookup;\n\n  // retire the texture from the active / searchable queue:\n\n  removeFromArray(txrQ, txr);\n  txr.retired = true;\n\n  // remove the refs from the eles to the caches:\n\n  var eleCaches = txr.eleCaches;\n  for (var i = 0; i < eleCaches.length; i++) {\n    var eleCache = eleCaches[i];\n    lookup.deleteCache(eleCache.key, eleCache.level);\n  }\n  clearArray(eleCaches);\n\n  // add the texture to a retired queue so it can be recycled in future:\n\n  var rtxtrQ = self.getRetiredTextureQueue(txrH);\n  rtxtrQ.push(txr);\n};\nETCp.addTexture = function (txrH, minW) {\n  var self = this;\n  var txrQ = self.getTextureQueue(txrH);\n  var txr = {};\n  txrQ.push(txr);\n  txr.eleCaches = [];\n  txr.height = txrH;\n  txr.width = Math.max(defTxrWidth, minW);\n  txr.usedWidth = 0;\n  txr.invalidatedWidth = 0;\n  txr.fullnessChecks = 0;\n  txr.canvas = self.renderer.makeOffscreenCanvas(txr.width, txr.height);\n  txr.context = txr.canvas.getContext('2d');\n  return txr;\n};\nETCp.recycleTexture = function (txrH, minW) {\n  var self = this;\n  var txrQ = self.getTextureQueue(txrH);\n  var rtxtrQ = self.getRetiredTextureQueue(txrH);\n  for (var i = 0; i < rtxtrQ.length; i++) {\n    var txr = rtxtrQ[i];\n    if (txr.width >= minW) {\n      txr.retired = false;\n      txr.usedWidth = 0;\n      txr.invalidatedWidth = 0;\n      txr.fullnessChecks = 0;\n      clearArray(txr.eleCaches);\n      txr.context.setTransform(1, 0, 0, 1, 0, 0);\n      txr.context.clearRect(0, 0, txr.width, txr.height);\n      removeFromArray(rtxtrQ, txr);\n      txrQ.push(txr);\n      return txr;\n    }\n  }\n};\nETCp.queueElement = function (ele, lvl) {\n  var self = this;\n  var q = self.getElementQueue();\n  var k2q = self.getElementKeyToQueue();\n  var key = this.getKey(ele);\n  var existingReq = k2q[key];\n  if (existingReq) {\n    // use the max lvl b/c in between lvls are cheap to make\n    existingReq.level = Math.max(existingReq.level, lvl);\n    existingReq.eles.merge(ele);\n    existingReq.reqs++;\n    q.updateItem(existingReq);\n  } else {\n    var req = {\n      eles: ele.spawn().merge(ele),\n      level: lvl,\n      reqs: 1,\n      key: key\n    };\n    q.push(req);\n    k2q[key] = req;\n  }\n};\nETCp.dequeue = function (pxRatio /*, extent*/) {\n  var self = this;\n  var q = self.getElementQueue();\n  var k2q = self.getElementKeyToQueue();\n  var dequeued = [];\n  var lookup = self.lookup;\n  for (var i = 0; i < maxDeqSize$1; i++) {\n    if (q.size() > 0) {\n      var req = q.pop();\n      var key = req.key;\n      var ele = req.eles[0]; // all eles have the same key\n      var cacheExists = lookup.hasCache(ele, req.level);\n\n      // clear out the key to req lookup\n      k2q[key] = null;\n\n      // dequeueing isn't necessary with an existing cache\n      if (cacheExists) {\n        continue;\n      }\n      dequeued.push(req);\n      var bb = self.getBoundingBox(ele);\n      self.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue);\n    } else {\n      break;\n    }\n  }\n  return dequeued;\n};\nETCp.removeFromQueue = function (ele) {\n  var self = this;\n  var q = self.getElementQueue();\n  var k2q = self.getElementKeyToQueue();\n  var key = this.getKey(ele);\n  var req = k2q[key];\n  if (req != null) {\n    if (req.eles.length === 1) {\n      // remove if last ele in the req\n      // bring to front of queue\n      req.reqs = MAX_INT$1;\n      q.updateItem(req);\n      q.pop(); // remove from queue\n\n      k2q[key] = null; // remove from lookup map\n    } else {\n      // otherwise just remove ele from req\n      req.eles.unmerge(ele);\n    }\n  }\n};\nETCp.onDequeue = function (fn) {\n  this.onDequeues.push(fn);\n};\nETCp.offDequeue = function (fn) {\n  removeFromArray(this.onDequeues, fn);\n};\nETCp.setupDequeueing = defs.setupDequeueing({\n  deqRedrawThreshold: deqRedrawThreshold$1,\n  deqCost: deqCost$1,\n  deqAvgCost: deqAvgCost$1,\n  deqNoDrawCost: deqNoDrawCost$1,\n  deqFastCost: deqFastCost$1,\n  deq: function deq(self, pxRatio, extent) {\n    return self.dequeue(pxRatio, extent);\n  },\n  onDeqd: function onDeqd(self, deqd) {\n    for (var i = 0; i < self.onDequeues.length; i++) {\n      var fn = self.onDequeues[i];\n      fn(deqd);\n    }\n  },\n  shouldRedraw: function shouldRedraw(self, deqd, pxRatio, extent) {\n    for (var i = 0; i < deqd.length; i++) {\n      var eles = deqd[i].eles;\n      for (var j = 0; j < eles.length; j++) {\n        var bb = eles[j].boundingBox();\n        if (boundingBoxesIntersect(bb, extent)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  },\n  priority: function priority(self) {\n    return self.renderer.beforeRenderPriorities.eleTxrDeq;\n  }\n});\n\nvar defNumLayers = 1; // default number of layers to use\nvar minLvl = -4; // when scaling smaller than that we don't need to re-render\nvar maxLvl = 2; // when larger than this scale just render directly (caching is not helpful)\nvar maxZoom = 3.99; // beyond this zoom level, layered textures are not used\nvar deqRedrawThreshold = 50; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile\nvar refineEleDebounceTime = 50; // time to debounce sharper ele texture updates\nvar deqCost = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame\nvar deqAvgCost = 0.1; // % of add'l rendering cost compared to average overall redraw time\nvar deqNoDrawCost = 0.9; // % of avg frame time that can be used for dequeueing when not drawing\nvar deqFastCost = 0.9; // % of frame time to be used when >60fps\nvar maxDeqSize = 1; // number of eles to dequeue and render at higher texture in each batch\nvar invalidThreshold = 250; // time threshold for disabling b/c of invalidations\nvar maxLayerArea = 4000 * 4000; // layers can't be bigger than this\nvar maxLayerDim = 32767; // maximum size for the width/height of layer canvases\nvar useHighQualityEleTxrReqs = true; // whether to use high quality ele txr requests (generally faster and cheaper in the longterm)\n\n// var log = function(){ console.log.apply( console, arguments ); };\n\nvar LayeredTextureCache = function LayeredTextureCache(renderer) {\n  var self = this;\n  var r = self.renderer = renderer;\n  var cy = r.cy;\n  self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ]\n\n  self.firstGet = true;\n  self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold;\n  self.skipping = false;\n  self.eleTxrDeqs = cy.collection();\n  self.scheduleElementRefinement = debounce(function () {\n    self.refineElementTextures(self.eleTxrDeqs);\n    self.eleTxrDeqs.unmerge(self.eleTxrDeqs);\n  }, refineEleDebounceTime);\n  r.beforeRender(function (willDraw, now) {\n    if (now - self.lastInvalidationTime <= invalidThreshold) {\n      self.skipping = true;\n    } else {\n      self.skipping = false;\n    }\n  }, r.beforeRenderPriorities.lyrTxrSkip);\n  var qSort = function qSort(a, b) {\n    return b.reqs - a.reqs;\n  };\n  self.layersQueue = new Heap(qSort);\n  self.setupDequeueing();\n};\nvar LTCp = LayeredTextureCache.prototype;\nvar layerIdPool = 0;\nvar MAX_INT = Math.pow(2, 53) - 1;\nLTCp.makeLayer = function (bb, lvl) {\n  var scale = Math.pow(2, lvl);\n  var w = Math.ceil(bb.w * scale);\n  var h = Math.ceil(bb.h * scale);\n  var canvas = this.renderer.makeOffscreenCanvas(w, h);\n  var layer = {\n    id: layerIdPool = ++layerIdPool % MAX_INT,\n    bb: bb,\n    level: lvl,\n    width: w,\n    height: h,\n    canvas: canvas,\n    context: canvas.getContext('2d'),\n    eles: [],\n    elesQueue: [],\n    reqs: 0\n  };\n\n  // log('make layer %s with w %s and h %s and lvl %s', layer.id, layer.width, layer.height, layer.level);\n\n  var cxt = layer.context;\n  var dx = -layer.bb.x1;\n  var dy = -layer.bb.y1;\n\n  // do the transform on creation to save cycles (it's the same for all eles)\n  cxt.scale(scale, scale);\n  cxt.translate(dx, dy);\n  return layer;\n};\nLTCp.getLayers = function (eles, pxRatio, lvl) {\n  var self = this;\n  var r = self.renderer;\n  var cy = r.cy;\n  var zoom = cy.zoom();\n  var firstGet = self.firstGet;\n  self.firstGet = false;\n\n  // log('--\\nget layers with %s eles', eles.length);\n  //log eles.map(function(ele){ return ele.id() }) );\n\n  if (lvl == null) {\n    lvl = Math.ceil(log2(zoom * pxRatio));\n    if (lvl < minLvl) {\n      lvl = minLvl;\n    } else if (zoom >= maxZoom || lvl > maxLvl) {\n      return null;\n    }\n  }\n  self.validateLayersElesOrdering(lvl, eles);\n  var layersByLvl = self.layersByLevel;\n  var scale = Math.pow(2, lvl);\n  var layers = layersByLvl[lvl] = layersByLvl[lvl] || [];\n  var bb;\n  var lvlComplete = self.levelIsComplete(lvl, eles);\n  var tmpLayers;\n  var checkTempLevels = function checkTempLevels() {\n    var canUseAsTmpLvl = function canUseAsTmpLvl(l) {\n      self.validateLayersElesOrdering(l, eles);\n      if (self.levelIsComplete(l, eles)) {\n        tmpLayers = layersByLvl[l];\n        return true;\n      }\n    };\n    var checkLvls = function checkLvls(dir) {\n      if (tmpLayers) {\n        return;\n      }\n      for (var l = lvl + dir; minLvl <= l && l <= maxLvl; l += dir) {\n        if (canUseAsTmpLvl(l)) {\n          break;\n        }\n      }\n    };\n    checkLvls(1);\n    checkLvls(-1);\n\n    // remove the invalid layers; they will be replaced as needed later in this function\n    for (var i = layers.length - 1; i >= 0; i--) {\n      var layer = layers[i];\n      if (layer.invalid) {\n        removeFromArray(layers, layer);\n      }\n    }\n  };\n  if (!lvlComplete) {\n    // if the current level is incomplete, then use the closest, best quality layerset temporarily\n    // and later queue the current layerset so we can get the proper quality level soon\n\n    checkTempLevels();\n  } else {\n    // log('level complete, using existing layers\\n--');\n    return layers;\n  }\n  var getBb = function getBb() {\n    if (!bb) {\n      bb = makeBoundingBox();\n      for (var i = 0; i < eles.length; i++) {\n        updateBoundingBox(bb, eles[i].boundingBox());\n      }\n    }\n    return bb;\n  };\n  var makeLayer = function makeLayer(opts) {\n    opts = opts || {};\n    var after = opts.after;\n    getBb();\n    var w = Math.ceil(bb.w * scale);\n    var h = Math.ceil(bb.h * scale);\n    if (w > maxLayerDim || h > maxLayerDim) {\n      return null;\n    }\n    var area = w * h;\n    if (area > maxLayerArea) {\n      return null;\n    }\n    var layer = self.makeLayer(bb, lvl);\n    if (after != null) {\n      var index = layers.indexOf(after) + 1;\n      layers.splice(index, 0, layer);\n    } else if (opts.insert === undefined || opts.insert) {\n      // no after specified => first layer made so put at start\n      layers.unshift(layer);\n    }\n\n    // if( tmpLayers ){\n    //self.queueLayer( layer );\n    // }\n\n    return layer;\n  };\n  if (self.skipping && !firstGet) {\n    // log('skip layers');\n    return null;\n  }\n\n  // log('do layers');\n\n  var layer = null;\n  var maxElesPerLayer = eles.length / defNumLayers;\n  var allowLazyQueueing = !firstGet;\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    var rs = ele._private.rscratch;\n    var caches = rs.imgLayerCaches = rs.imgLayerCaches || {};\n\n    // log('look at ele', ele.id());\n\n    var existingLayer = caches[lvl];\n    if (existingLayer) {\n      // reuse layer for later eles\n      // log('reuse layer for', ele.id());\n      layer = existingLayer;\n      continue;\n    }\n    if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) {\n      // log('make new layer for ele %s', ele.id());\n\n      layer = makeLayer({\n        insert: true,\n        after: layer\n      });\n\n      // if now layer can be built then we can't use layers at this level\n      if (!layer) {\n        return null;\n      }\n\n      // log('new layer with id %s', layer.id);\n    }\n    if (tmpLayers || allowLazyQueueing) {\n      // log('queue ele %s in layer %s', ele.id(), layer.id);\n      self.queueLayer(layer, ele);\n    } else {\n      // log('draw ele %s in layer %s', ele.id(), layer.id);\n      self.drawEleInLayer(layer, ele, lvl, pxRatio);\n    }\n    layer.eles.push(ele);\n    caches[lvl] = layer;\n  }\n\n  // log('--');\n\n  if (tmpLayers) {\n    // then we only queued the current layerset and can't draw it yet\n    return tmpLayers;\n  }\n  if (allowLazyQueueing) {\n    // log('lazy queue level', lvl);\n    return null;\n  }\n  return layers;\n};\n\n// a layer may want to use an ele cache of a higher level to avoid blurriness\n// so the layer level might not equal the ele level\nLTCp.getEleLevelForLayerLevel = function (lvl, pxRatio) {\n  return lvl;\n};\nLTCp.drawEleInLayer = function (layer, ele, lvl, pxRatio) {\n  var self = this;\n  var r = this.renderer;\n  var context = layer.context;\n  var bb = ele.boundingBox();\n  if (bb.w === 0 || bb.h === 0 || !ele.visible()) {\n    return;\n  }\n  lvl = self.getEleLevelForLayerLevel(lvl, pxRatio);\n  {\n    r.setImgSmoothing(context, false);\n  }\n  {\n    r.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs);\n  }\n  {\n    r.setImgSmoothing(context, true);\n  }\n};\nLTCp.levelIsComplete = function (lvl, eles) {\n  var self = this;\n  var layers = self.layersByLevel[lvl];\n  if (!layers || layers.length === 0) {\n    return false;\n  }\n  var numElesInLayers = 0;\n  for (var i = 0; i < layers.length; i++) {\n    var layer = layers[i];\n\n    // if there are any eles needed to be drawn yet, the level is not complete\n    if (layer.reqs > 0) {\n      return false;\n    }\n\n    // if the layer is invalid, the level is not complete\n    if (layer.invalid) {\n      return false;\n    }\n    numElesInLayers += layer.eles.length;\n  }\n\n  // we should have exactly the number of eles passed in to be complete\n  if (numElesInLayers !== eles.length) {\n    return false;\n  }\n  return true;\n};\nLTCp.validateLayersElesOrdering = function (lvl, eles) {\n  var layers = this.layersByLevel[lvl];\n  if (!layers) {\n    return;\n  }\n\n  // if in a layer the eles are not in the same order, then the layer is invalid\n  // (i.e. there is an ele in between the eles in the layer)\n\n  for (var i = 0; i < layers.length; i++) {\n    var layer = layers[i];\n    var offset = -1;\n\n    // find the offset\n    for (var j = 0; j < eles.length; j++) {\n      if (layer.eles[0] === eles[j]) {\n        offset = j;\n        break;\n      }\n    }\n    if (offset < 0) {\n      // then the layer has nonexistent elements and is invalid\n      this.invalidateLayer(layer);\n      continue;\n    }\n\n    // the eles in the layer must be in the same continuous order, else the layer is invalid\n\n    var o = offset;\n    for (var j = 0; j < layer.eles.length; j++) {\n      if (layer.eles[j] !== eles[o + j]) {\n        // log('invalidate based on ordering', layer.id);\n\n        this.invalidateLayer(layer);\n        break;\n      }\n    }\n  }\n};\nLTCp.updateElementsInLayers = function (eles, update) {\n  var self = this;\n  var isEles = element(eles[0]);\n\n  // collect udpated elements (cascaded from the layers) and update each\n  // layer itself along the way\n  for (var i = 0; i < eles.length; i++) {\n    var req = isEles ? null : eles[i];\n    var ele = isEles ? eles[i] : eles[i].ele;\n    var rs = ele._private.rscratch;\n    var caches = rs.imgLayerCaches = rs.imgLayerCaches || {};\n    for (var l = minLvl; l <= maxLvl; l++) {\n      var layer = caches[l];\n      if (!layer) {\n        continue;\n      }\n\n      // if update is a request from the ele cache, then it affects only\n      // the matching level\n      if (req && self.getEleLevelForLayerLevel(layer.level) !== req.level) {\n        continue;\n      }\n      update(layer, ele, req);\n    }\n  }\n};\nLTCp.haveLayers = function () {\n  var self = this;\n  var haveLayers = false;\n  for (var l = minLvl; l <= maxLvl; l++) {\n    var layers = self.layersByLevel[l];\n    if (layers && layers.length > 0) {\n      haveLayers = true;\n      break;\n    }\n  }\n  return haveLayers;\n};\nLTCp.invalidateElements = function (eles) {\n  var self = this;\n  if (eles.length === 0) {\n    return;\n  }\n  self.lastInvalidationTime = performanceNow();\n\n  // log('update invalidate layer time from eles');\n\n  if (eles.length === 0 || !self.haveLayers()) {\n    return;\n  }\n  self.updateElementsInLayers(eles, function invalAssocLayers(layer, ele, req) {\n    self.invalidateLayer(layer);\n  });\n};\nLTCp.invalidateLayer = function (layer) {\n  // log('update invalidate layer time');\n\n  this.lastInvalidationTime = performanceNow();\n  if (layer.invalid) {\n    return;\n  } // save cycles\n\n  var lvl = layer.level;\n  var eles = layer.eles;\n  var layers = this.layersByLevel[lvl];\n\n  // log('invalidate layer', layer.id );\n\n  removeFromArray(layers, layer);\n  // layer.eles = [];\n\n  layer.elesQueue = [];\n  layer.invalid = true;\n  if (layer.replacement) {\n    layer.replacement.invalid = true;\n  }\n  for (var i = 0; i < eles.length; i++) {\n    var caches = eles[i]._private.rscratch.imgLayerCaches;\n    if (caches) {\n      caches[lvl] = null;\n    }\n  }\n};\nLTCp.refineElementTextures = function (eles) {\n  var self = this;\n\n  // log('refine', eles.length);\n\n  self.updateElementsInLayers(eles, function refineEachEle(layer, ele, req) {\n    var rLyr = layer.replacement;\n    if (!rLyr) {\n      rLyr = layer.replacement = self.makeLayer(layer.bb, layer.level);\n      rLyr.replaces = layer;\n      rLyr.eles = layer.eles;\n\n      // log('make replacement layer %s for %s with level %s', rLyr.id, layer.id, rLyr.level);\n    }\n    if (!rLyr.reqs) {\n      for (var i = 0; i < rLyr.eles.length; i++) {\n        self.queueLayer(rLyr, rLyr.eles[i]);\n      }\n\n      // log('queue replacement layer refinement', rLyr.id);\n    }\n  });\n};\nLTCp.enqueueElementRefinement = function (ele) {\n  this.eleTxrDeqs.merge(ele);\n  this.scheduleElementRefinement();\n};\nLTCp.queueLayer = function (layer, ele) {\n  var self = this;\n  var q = self.layersQueue;\n  var elesQ = layer.elesQueue;\n  var hasId = elesQ.hasId = elesQ.hasId || {};\n\n  // if a layer is going to be replaced, queuing is a waste of time\n  if (layer.replacement) {\n    return;\n  }\n  if (ele) {\n    if (hasId[ele.id()]) {\n      return;\n    }\n    elesQ.push(ele);\n    hasId[ele.id()] = true;\n  }\n  if (layer.reqs) {\n    layer.reqs++;\n    q.updateItem(layer);\n  } else {\n    layer.reqs = 1;\n    q.push(layer);\n  }\n};\nLTCp.dequeue = function (pxRatio) {\n  var self = this;\n  var q = self.layersQueue;\n  var deqd = [];\n  var eleDeqs = 0;\n  while (eleDeqs < maxDeqSize) {\n    if (q.size() === 0) {\n      break;\n    }\n    var layer = q.peek();\n\n    // if a layer has been or will be replaced, then don't waste time with it\n    if (layer.replacement) {\n      // log('layer %s in queue skipped b/c it already has a replacement', layer.id);\n      q.pop();\n      continue;\n    }\n\n    // if this is a replacement layer that has been superceded, then forget it\n    if (layer.replaces && layer !== layer.replaces.replacement) {\n      // log('layer is no longer the most uptodate replacement; dequeued', layer.id)\n      q.pop();\n      continue;\n    }\n    if (layer.invalid) {\n      // log('replacement layer %s is invalid; dequeued', layer.id);\n      q.pop();\n      continue;\n    }\n    var ele = layer.elesQueue.shift();\n    if (ele) {\n      // log('dequeue layer %s', layer.id);\n\n      self.drawEleInLayer(layer, ele, layer.level, pxRatio);\n      eleDeqs++;\n    }\n    if (deqd.length === 0) {\n      // we need only one entry in deqd to queue redrawing etc\n      deqd.push(true);\n    }\n\n    // if the layer has all its eles done, then remove from the queue\n    if (layer.elesQueue.length === 0) {\n      q.pop();\n      layer.reqs = 0;\n\n      // log('dequeue of layer %s complete', layer.id);\n\n      // when a replacement layer is dequeued, it replaces the old layer in the level\n      if (layer.replaces) {\n        self.applyLayerReplacement(layer);\n      }\n      self.requestRedraw();\n    }\n  }\n  return deqd;\n};\nLTCp.applyLayerReplacement = function (layer) {\n  var self = this;\n  var layersInLevel = self.layersByLevel[layer.level];\n  var replaced = layer.replaces;\n  var index = layersInLevel.indexOf(replaced);\n\n  // if the replaced layer is not in the active list for the level, then replacing\n  // refs would be a mistake (i.e. overwriting the true active layer)\n  if (index < 0 || replaced.invalid) {\n    // log('replacement layer would have no effect', layer.id);\n    return;\n  }\n  layersInLevel[index] = layer; // replace level ref\n\n  // replace refs in eles\n  for (var i = 0; i < layer.eles.length; i++) {\n    var _p = layer.eles[i]._private;\n    var cache = _p.imgLayerCaches = _p.imgLayerCaches || {};\n    if (cache) {\n      cache[layer.level] = layer;\n    }\n  }\n\n  // log('apply replacement layer %s over %s', layer.id, replaced.id);\n\n  self.requestRedraw();\n};\nLTCp.requestRedraw = debounce(function () {\n  var r = this.renderer;\n  r.redrawHint('eles', true);\n  r.redrawHint('drag', true);\n  r.redraw();\n}, 100);\nLTCp.setupDequeueing = defs.setupDequeueing({\n  deqRedrawThreshold: deqRedrawThreshold,\n  deqCost: deqCost,\n  deqAvgCost: deqAvgCost,\n  deqNoDrawCost: deqNoDrawCost,\n  deqFastCost: deqFastCost,\n  deq: function deq(self, pxRatio) {\n    return self.dequeue(pxRatio);\n  },\n  onDeqd: noop$1,\n  shouldRedraw: trueify,\n  priority: function priority(self) {\n    return self.renderer.beforeRenderPriorities.lyrTxrDeq;\n  }\n});\n\nvar CRp$b = {};\nvar impl;\nfunction polygon(context, points) {\n  for (var i = 0; i < points.length; i++) {\n    var pt = points[i];\n    context.lineTo(pt.x, pt.y);\n  }\n}\nfunction triangleBackcurve(context, points, controlPoint) {\n  var firstPt;\n  for (var i = 0; i < points.length; i++) {\n    var pt = points[i];\n    if (i === 0) {\n      firstPt = pt;\n    }\n    context.lineTo(pt.x, pt.y);\n  }\n  context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y);\n}\nfunction triangleTee(context, trianglePoints, teePoints) {\n  if (context.beginPath) {\n    context.beginPath();\n  }\n  var triPts = trianglePoints;\n  for (var i = 0; i < triPts.length; i++) {\n    var pt = triPts[i];\n    context.lineTo(pt.x, pt.y);\n  }\n  var teePts = teePoints;\n  var firstTeePt = teePoints[0];\n  context.moveTo(firstTeePt.x, firstTeePt.y);\n  for (var i = 1; i < teePts.length; i++) {\n    var pt = teePts[i];\n    context.lineTo(pt.x, pt.y);\n  }\n  if (context.closePath) {\n    context.closePath();\n  }\n}\nfunction circleTriangle(context, trianglePoints, rx, ry, r) {\n  if (context.beginPath) {\n    context.beginPath();\n  }\n  context.arc(rx, ry, r, 0, Math.PI * 2, false);\n  var triPts = trianglePoints;\n  var firstTrPt = triPts[0];\n  context.moveTo(firstTrPt.x, firstTrPt.y);\n  for (var i = 0; i < triPts.length; i++) {\n    var pt = triPts[i];\n    context.lineTo(pt.x, pt.y);\n  }\n  if (context.closePath) {\n    context.closePath();\n  }\n}\nfunction circle$1(context, rx, ry, r) {\n  context.arc(rx, ry, r, 0, Math.PI * 2, false);\n}\nCRp$b.arrowShapeImpl = function (name) {\n  return (impl || (impl = {\n    'polygon': polygon,\n    'triangle-backcurve': triangleBackcurve,\n    'triangle-tee': triangleTee,\n    'circle-triangle': circleTriangle,\n    'triangle-cross': triangleTee,\n    'circle': circle$1\n  }))[name];\n};\n\nvar CRp$a = {};\nCRp$a.drawElement = function (context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) {\n  var r = this;\n  if (ele.isNode()) {\n    r.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);\n  } else {\n    r.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);\n  }\n};\nCRp$a.drawElementOverlay = function (context, ele) {\n  var r = this;\n  if (ele.isNode()) {\n    r.drawNodeOverlay(context, ele);\n  } else {\n    r.drawEdgeOverlay(context, ele);\n  }\n};\nCRp$a.drawElementUnderlay = function (context, ele) {\n  var r = this;\n  if (ele.isNode()) {\n    r.drawNodeUnderlay(context, ele);\n  } else {\n    r.drawEdgeUnderlay(context, ele);\n  }\n};\nCRp$a.drawCachedElementPortion = function (context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity) {\n  var r = this;\n  var bb = eleTxrCache.getBoundingBox(ele);\n  if (bb.w === 0 || bb.h === 0) {\n    return;\n  } // ignore zero size case\n\n  var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason);\n  if (eleCache != null) {\n    var opacity = getOpacity(r, ele);\n    if (opacity === 0) {\n      return;\n    }\n    var theta = getRotation(r, ele);\n    var x1 = bb.x1,\n      y1 = bb.y1,\n      w = bb.w,\n      h = bb.h;\n    var x, y, sx, sy, smooth;\n    if (theta !== 0) {\n      var rotPt = eleTxrCache.getRotationPoint(ele);\n      sx = rotPt.x;\n      sy = rotPt.y;\n      context.translate(sx, sy);\n      context.rotate(theta);\n      smooth = r.getImgSmoothing(context);\n      if (!smooth) {\n        r.setImgSmoothing(context, true);\n      }\n      var off = eleTxrCache.getRotationOffset(ele);\n      x = off.x;\n      y = off.y;\n    } else {\n      x = x1;\n      y = y1;\n    }\n    var oldGlobalAlpha;\n    if (opacity !== 1) {\n      oldGlobalAlpha = context.globalAlpha;\n      context.globalAlpha = oldGlobalAlpha * opacity;\n    }\n    context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x, y, w, h);\n    if (opacity !== 1) {\n      context.globalAlpha = oldGlobalAlpha;\n    }\n    if (theta !== 0) {\n      context.rotate(-theta);\n      context.translate(-sx, -sy);\n      if (!smooth) {\n        r.setImgSmoothing(context, false);\n      }\n    }\n  } else {\n    eleTxrCache.drawElement(context, ele); // direct draw fallback\n  }\n};\nvar getZeroRotation = function getZeroRotation() {\n  return 0;\n};\nvar getLabelRotation = function getLabelRotation(r, ele) {\n  return r.getTextAngle(ele, null);\n};\nvar getSourceLabelRotation = function getSourceLabelRotation(r, ele) {\n  return r.getTextAngle(ele, 'source');\n};\nvar getTargetLabelRotation = function getTargetLabelRotation(r, ele) {\n  return r.getTextAngle(ele, 'target');\n};\nvar getOpacity = function getOpacity(r, ele) {\n  return ele.effectiveOpacity();\n};\nvar getTextOpacity = function getTextOpacity(e, ele) {\n  return ele.pstyle('text-opacity').pfValue * ele.effectiveOpacity();\n};\nCRp$a.drawCachedElement = function (context, ele, pxRatio, extent, lvl, requestHighQuality) {\n  var r = this;\n  var _r$data = r.data,\n    eleTxrCache = _r$data.eleTxrCache,\n    lblTxrCache = _r$data.lblTxrCache,\n    slbTxrCache = _r$data.slbTxrCache,\n    tlbTxrCache = _r$data.tlbTxrCache;\n  var bb = ele.boundingBox();\n  var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null;\n  if (bb.w === 0 || bb.h === 0 || !ele.visible()) {\n    return;\n  }\n  if (!extent || boundingBoxesIntersect(bb, extent)) {\n    var isEdge = ele.isEdge();\n    var badLine = ele.element()._private.rscratch.badLine;\n    r.drawElementUnderlay(context, ele);\n    r.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity);\n    if (!isEdge || !badLine) {\n      r.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity);\n    }\n    if (isEdge && !badLine) {\n      r.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity);\n      r.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity);\n    }\n    r.drawElementOverlay(context, ele);\n  }\n};\nCRp$a.drawElements = function (context, eles) {\n  var r = this;\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    r.drawElement(context, ele);\n  }\n};\nCRp$a.drawCachedElements = function (context, eles, pxRatio, extent) {\n  var r = this;\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    r.drawCachedElement(context, ele, pxRatio, extent);\n  }\n};\nCRp$a.drawCachedNodes = function (context, eles, pxRatio, extent) {\n  var r = this;\n  for (var i = 0; i < eles.length; i++) {\n    var ele = eles[i];\n    if (!ele.isNode()) {\n      continue;\n    }\n    r.drawCachedElement(context, ele, pxRatio, extent);\n  }\n};\nCRp$a.drawLayeredElements = function (context, eles, pxRatio, extent) {\n  var r = this;\n  var layers = r.data.lyrTxrCache.getLayers(eles, pxRatio);\n  if (layers) {\n    for (var i = 0; i < layers.length; i++) {\n      var layer = layers[i];\n      var bb = layer.bb;\n      if (bb.w === 0 || bb.h === 0) {\n        continue;\n      }\n      context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h);\n    }\n  } else {\n    // fall back on plain caching if no layers\n    r.drawCachedElements(context, eles, pxRatio, extent);\n  }\n};\n\nvar CRp$9 = {};\nCRp$9.drawEdge = function (context, edge, shiftToOriginWithBb) {\n  var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n  var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n  var r = this;\n  var rs = edge._private.rscratch;\n  if (shouldDrawOpacity && !edge.visible()) {\n    return;\n  }\n\n  // if bezier ctrl pts can not be calculated, then die\n  if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) {\n    // isNaN in case edge is impossible and browser bugs (e.g. safari)\n    return;\n  }\n  var bb;\n  if (shiftToOriginWithBb) {\n    bb = shiftToOriginWithBb;\n    context.translate(-bb.x1, -bb.y1);\n  }\n  var opacity = shouldDrawOpacity ? edge.pstyle('opacity').value : 1;\n  var lineOpacity = shouldDrawOpacity ? edge.pstyle('line-opacity').value : 1;\n  var curveStyle = edge.pstyle('curve-style').value;\n  var lineStyle = edge.pstyle('line-style').value;\n  var edgeWidth = edge.pstyle('width').pfValue;\n  var lineCap = edge.pstyle('line-cap').value;\n  var lineOutlineWidth = edge.pstyle('line-outline-width').value;\n  var lineOutlineColor = edge.pstyle('line-outline-color').value;\n  var effectiveLineOpacity = opacity * lineOpacity;\n  // separate arrow opacity would require arrow-opacity property\n  var effectiveArrowOpacity = opacity * lineOpacity;\n  var drawLine = function drawLine() {\n    var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveLineOpacity;\n    if (curveStyle === 'straight-triangle') {\n      r.eleStrokeStyle(context, edge, strokeOpacity);\n      r.drawEdgeTrianglePath(edge, context, rs.allpts);\n    } else {\n      context.lineWidth = edgeWidth;\n      context.lineCap = lineCap;\n      r.eleStrokeStyle(context, edge, strokeOpacity);\n      r.drawEdgePath(edge, context, rs.allpts, lineStyle);\n      context.lineCap = 'butt'; // reset for other drawing functions\n    }\n  };\n  var drawLineOutline = function drawLineOutline() {\n    var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveLineOpacity;\n    context.lineWidth = edgeWidth + lineOutlineWidth;\n    context.lineCap = lineCap;\n    if (lineOutlineWidth > 0) {\n      r.colorStrokeStyle(context, lineOutlineColor[0], lineOutlineColor[1], lineOutlineColor[2], strokeOpacity);\n    } else {\n      // do not draw any lineOutline\n      context.lineCap = 'butt'; // reset for other drawing functions\n      return;\n    }\n    if (curveStyle === 'straight-triangle') {\n      r.drawEdgeTrianglePath(edge, context, rs.allpts);\n    } else {\n      r.drawEdgePath(edge, context, rs.allpts, lineStyle);\n      context.lineCap = 'butt'; // reset for other drawing functions\n    }\n  };\n  var drawOverlay = function drawOverlay() {\n    if (!shouldDrawOverlay) {\n      return;\n    }\n    r.drawEdgeOverlay(context, edge);\n  };\n  var drawUnderlay = function drawUnderlay() {\n    if (!shouldDrawOverlay) {\n      return;\n    }\n    r.drawEdgeUnderlay(context, edge);\n  };\n  var drawArrows = function drawArrows() {\n    var arrowOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveArrowOpacity;\n    r.drawArrowheads(context, edge, arrowOpacity);\n  };\n  var drawText = function drawText() {\n    r.drawElementText(context, edge, null, drawLabel);\n  };\n  context.lineJoin = 'round';\n  var ghost = edge.pstyle('ghost').value === 'yes';\n  if (ghost) {\n    var gx = edge.pstyle('ghost-offset-x').pfValue;\n    var gy = edge.pstyle('ghost-offset-y').pfValue;\n    var ghostOpacity = edge.pstyle('ghost-opacity').value;\n    var effectiveGhostOpacity = effectiveLineOpacity * ghostOpacity;\n    context.translate(gx, gy);\n    drawLine(effectiveGhostOpacity);\n    drawArrows(effectiveGhostOpacity);\n    context.translate(-gx, -gy);\n  } else {\n    drawLineOutline();\n  }\n  drawUnderlay();\n  drawLine();\n  drawArrows();\n  drawOverlay();\n  drawText();\n  if (shiftToOriginWithBb) {\n    context.translate(bb.x1, bb.y1);\n  }\n};\nvar drawEdgeOverlayUnderlay = function drawEdgeOverlayUnderlay(overlayOrUnderlay) {\n  if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) {\n    throw new Error('Invalid state');\n  }\n  return function (context, edge) {\n    if (!edge.visible()) {\n      return;\n    }\n    var opacity = edge.pstyle(\"\".concat(overlayOrUnderlay, \"-opacity\")).value;\n    if (opacity === 0) {\n      return;\n    }\n    var r = this;\n    var usePaths = r.usePaths();\n    var rs = edge._private.rscratch;\n    var padding = edge.pstyle(\"\".concat(overlayOrUnderlay, \"-padding\")).pfValue;\n    var width = 2 * padding;\n    var color = edge.pstyle(\"\".concat(overlayOrUnderlay, \"-color\")).value;\n    context.lineWidth = width;\n    if (rs.edgeType === 'self' && !usePaths) {\n      context.lineCap = 'butt';\n    } else {\n      context.lineCap = 'round';\n    }\n    r.colorStrokeStyle(context, color[0], color[1], color[2], opacity);\n    r.drawEdgePath(edge, context, rs.allpts, 'solid');\n  };\n};\nCRp$9.drawEdgeOverlay = drawEdgeOverlayUnderlay('overlay');\nCRp$9.drawEdgeUnderlay = drawEdgeOverlayUnderlay('underlay');\nCRp$9.drawEdgePath = function (edge, context, pts, type) {\n  var rs = edge._private.rscratch;\n  var canvasCxt = context;\n  var path;\n  var pathCacheHit = false;\n  var usePaths = this.usePaths();\n  var lineDashPattern = edge.pstyle('line-dash-pattern').pfValue;\n  var lineDashOffset = edge.pstyle('line-dash-offset').pfValue;\n  if (usePaths) {\n    var pathCacheKey = pts.join('$');\n    var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey;\n    if (keyMatches) {\n      path = context = rs.pathCache;\n      pathCacheHit = true;\n    } else {\n      path = context = new Path2D();\n      rs.pathCacheKey = pathCacheKey;\n      rs.pathCache = path;\n    }\n  }\n  if (canvasCxt.setLineDash) {\n    // for very outofdate browsers\n    switch (type) {\n      case 'dotted':\n        canvasCxt.setLineDash([1, 1]);\n        break;\n      case 'dashed':\n        canvasCxt.setLineDash(lineDashPattern);\n        canvasCxt.lineDashOffset = lineDashOffset;\n        break;\n      case 'solid':\n        canvasCxt.setLineDash([]);\n        break;\n    }\n  }\n  if (!pathCacheHit && !rs.badLine) {\n    if (context.beginPath) {\n      context.beginPath();\n    }\n    context.moveTo(pts[0], pts[1]);\n    switch (rs.edgeType) {\n      case 'bezier':\n      case 'self':\n      case 'compound':\n      case 'multibezier':\n        for (var i = 2; i + 3 < pts.length; i += 4) {\n          context.quadraticCurveTo(pts[i], pts[i + 1], pts[i + 2], pts[i + 3]);\n        }\n        break;\n      case 'straight':\n      case 'haystack':\n        for (var _i = 2; _i + 1 < pts.length; _i += 2) {\n          context.lineTo(pts[_i], pts[_i + 1]);\n        }\n        break;\n      case 'segments':\n        if (rs.isRound) {\n          var _iterator = _createForOfIteratorHelper(rs.roundCorners),\n            _step;\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              var corner = _step.value;\n              drawPreparedRoundCorner(context, corner);\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          context.lineTo(pts[pts.length - 2], pts[pts.length - 1]);\n        } else {\n          for (var _i2 = 2; _i2 + 1 < pts.length; _i2 += 2) {\n            context.lineTo(pts[_i2], pts[_i2 + 1]);\n          }\n        }\n        break;\n    }\n  }\n  context = canvasCxt;\n  if (usePaths) {\n    context.stroke(path);\n  } else {\n    context.stroke();\n  }\n\n  // reset any line dashes\n  if (context.setLineDash) {\n    // for very outofdate browsers\n    context.setLineDash([]);\n  }\n};\nCRp$9.drawEdgeTrianglePath = function (edge, context, pts) {\n  // use line stroke style for triangle fill style\n  context.fillStyle = context.strokeStyle;\n  var edgeWidth = edge.pstyle('width').pfValue;\n  for (var i = 0; i + 1 < pts.length; i += 2) {\n    var vector = [pts[i + 2] - pts[i], pts[i + 3] - pts[i + 1]];\n    var length = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);\n    var normal = [vector[1] / length, -vector[0] / length];\n    var triangleHead = [normal[0] * edgeWidth / 2, normal[1] * edgeWidth / 2];\n    context.beginPath();\n    context.moveTo(pts[i] - triangleHead[0], pts[i + 1] - triangleHead[1]);\n    context.lineTo(pts[i] + triangleHead[0], pts[i + 1] + triangleHead[1]);\n    context.lineTo(pts[i + 2], pts[i + 3]);\n    context.closePath();\n    context.fill();\n  }\n};\nCRp$9.drawArrowheads = function (context, edge, opacity) {\n  var rs = edge._private.rscratch;\n  var isHaystack = rs.edgeType === 'haystack';\n  if (!isHaystack) {\n    this.drawArrowhead(context, edge, 'source', rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity);\n  }\n  this.drawArrowhead(context, edge, 'mid-target', rs.midX, rs.midY, rs.midtgtArrowAngle, opacity);\n  this.drawArrowhead(context, edge, 'mid-source', rs.midX, rs.midY, rs.midsrcArrowAngle, opacity);\n  if (!isHaystack) {\n    this.drawArrowhead(context, edge, 'target', rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity);\n  }\n};\nCRp$9.drawArrowhead = function (context, edge, prefix, x, y, angle, opacity) {\n  if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) {\n    return;\n  }\n  var self = this;\n  var arrowShape = edge.pstyle(prefix + '-arrow-shape').value;\n  if (arrowShape === 'none') {\n    return;\n  }\n  var arrowClearFill = edge.pstyle(prefix + '-arrow-fill').value === 'hollow' ? 'both' : 'filled';\n  var arrowFill = edge.pstyle(prefix + '-arrow-fill').value;\n  var edgeWidth = edge.pstyle('width').pfValue;\n  var pArrowWidth = edge.pstyle(prefix + '-arrow-width');\n  var arrowWidth = pArrowWidth.value === 'match-line' ? edgeWidth : pArrowWidth.pfValue;\n  if (pArrowWidth.units === '%') arrowWidth *= edgeWidth;\n  var edgeOpacity = edge.pstyle('opacity').value;\n  if (opacity === undefined) {\n    opacity = edgeOpacity;\n  }\n  var gco = context.globalCompositeOperation;\n  if (opacity !== 1 || arrowFill === 'hollow') {\n    // then extra clear is needed\n    context.globalCompositeOperation = 'destination-out';\n    self.colorFillStyle(context, 255, 255, 255, 1);\n    self.colorStrokeStyle(context, 255, 255, 255, 1);\n    self.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, arrowWidth, x, y, angle);\n    context.globalCompositeOperation = gco;\n  } // otherwise, the opaque arrow clears it for free :)\n\n  var color = edge.pstyle(prefix + '-arrow-color').value;\n  self.colorFillStyle(context, color[0], color[1], color[2], opacity);\n  self.colorStrokeStyle(context, color[0], color[1], color[2], opacity);\n  self.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, arrowWidth, x, y, angle);\n};\nCRp$9.drawArrowShape = function (edge, context, fill, edgeWidth, shape, shapeWidth, x, y, angle) {\n  var r = this;\n  var usePaths = this.usePaths() && shape !== 'triangle-cross';\n  var pathCacheHit = false;\n  var path;\n  var canvasContext = context;\n  var translation = {\n    x: x,\n    y: y\n  };\n  var scale = edge.pstyle('arrow-scale').value;\n  var size = this.getArrowWidth(edgeWidth, scale);\n  var shapeImpl = r.arrowShapes[shape];\n  if (usePaths) {\n    var cache = r.arrowPathCache = r.arrowPathCache || [];\n    var key = hashString(shape);\n    var cachedPath = cache[key];\n    if (cachedPath != null) {\n      path = context = cachedPath;\n      pathCacheHit = true;\n    } else {\n      path = context = new Path2D();\n      cache[key] = path;\n    }\n  }\n  if (!pathCacheHit) {\n    if (context.beginPath) {\n      context.beginPath();\n    }\n    if (usePaths) {\n      // store in the path cache with values easily manipulated later\n      shapeImpl.draw(context, 1, 0, {\n        x: 0,\n        y: 0\n      }, 1);\n    } else {\n      shapeImpl.draw(context, size, angle, translation, edgeWidth);\n    }\n    if (context.closePath) {\n      context.closePath();\n    }\n  }\n  context = canvasContext;\n  if (usePaths) {\n    // set transform to arrow position/orientation\n    context.translate(x, y);\n    context.rotate(angle);\n    context.scale(size, size);\n  }\n  if (fill === 'filled' || fill === 'both') {\n    if (usePaths) {\n      context.fill(path);\n    } else {\n      context.fill();\n    }\n  }\n  if (fill === 'hollow' || fill === 'both') {\n    context.lineWidth = shapeWidth / (usePaths ? size : 1);\n    context.lineJoin = 'miter';\n    if (usePaths) {\n      context.stroke(path);\n    } else {\n      context.stroke();\n    }\n  }\n  if (usePaths) {\n    // reset transform by applying inverse\n    context.scale(1 / size, 1 / size);\n    context.rotate(-angle);\n    context.translate(-x, -y);\n  }\n};\n\nvar CRp$8 = {};\nCRp$8.safeDrawImage = function (context, img, ix, iy, iw, ih, x, y, w, h) {\n  // detect problematic cases for old browsers with bad images (cheaper than try-catch)\n  if (iw <= 0 || ih <= 0 || w <= 0 || h <= 0) {\n    return;\n  }\n  try {\n    context.drawImage(img, ix, iy, iw, ih, x, y, w, h);\n  } catch (e) {\n    warn(e);\n  }\n};\nCRp$8.drawInscribedImage = function (context, img, node, index, nodeOpacity) {\n  var r = this;\n  var pos = node.position();\n  var nodeX = pos.x;\n  var nodeY = pos.y;\n  var styleObj = node.cy().style();\n  var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj);\n  var fit = getIndexedStyle(node, 'background-fit', 'value', index);\n  var repeat = getIndexedStyle(node, 'background-repeat', 'value', index);\n  var nodeW = node.width();\n  var nodeH = node.height();\n  var paddingX2 = node.padding() * 2;\n  var nodeTW = nodeW + (getIndexedStyle(node, 'background-width-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);\n  var nodeTH = nodeH + (getIndexedStyle(node, 'background-height-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);\n  var rs = node._private.rscratch;\n  var clip = getIndexedStyle(node, 'background-clip', 'value', index);\n  var shouldClip = clip === 'node';\n  var imgOpacity = getIndexedStyle(node, 'background-image-opacity', 'value', index) * nodeOpacity;\n  var smooth = getIndexedStyle(node, 'background-image-smoothing', 'value', index);\n  var cornerRadius = node.pstyle('corner-radius').value;\n  if (cornerRadius !== 'auto') cornerRadius = node.pstyle('corner-radius').pfValue;\n  var imgW = img.width || img.cachedW;\n  var imgH = img.height || img.cachedH;\n\n  // workaround for broken browsers like ie\n  if (null == imgW || null == imgH) {\n    document.body.appendChild(img); // eslint-disable-line no-undef\n\n    imgW = img.cachedW = img.width || img.offsetWidth;\n    imgH = img.cachedH = img.height || img.offsetHeight;\n    document.body.removeChild(img); // eslint-disable-line no-undef\n  }\n  var w = imgW;\n  var h = imgH;\n  if (getIndexedStyle(node, 'background-width', 'value', index) !== 'auto') {\n    if (getIndexedStyle(node, 'background-width', 'units', index) === '%') {\n      w = getIndexedStyle(node, 'background-width', 'pfValue', index) * nodeTW;\n    } else {\n      w = getIndexedStyle(node, 'background-width', 'pfValue', index);\n    }\n  }\n  if (getIndexedStyle(node, 'background-height', 'value', index) !== 'auto') {\n    if (getIndexedStyle(node, 'background-height', 'units', index) === '%') {\n      h = getIndexedStyle(node, 'background-height', 'pfValue', index) * nodeTH;\n    } else {\n      h = getIndexedStyle(node, 'background-height', 'pfValue', index);\n    }\n  }\n  if (w === 0 || h === 0) {\n    return; // no point in drawing empty image (and chrome is broken in this case)\n  }\n  if (fit === 'contain') {\n    var scale = Math.min(nodeTW / w, nodeTH / h);\n    w *= scale;\n    h *= scale;\n  } else if (fit === 'cover') {\n    var scale = Math.max(nodeTW / w, nodeTH / h);\n    w *= scale;\n    h *= scale;\n  }\n  var x = nodeX - nodeTW / 2; // left\n  var posXUnits = getIndexedStyle(node, 'background-position-x', 'units', index);\n  var posXPfVal = getIndexedStyle(node, 'background-position-x', 'pfValue', index);\n  if (posXUnits === '%') {\n    x += (nodeTW - w) * posXPfVal;\n  } else {\n    x += posXPfVal;\n  }\n  var offXUnits = getIndexedStyle(node, 'background-offset-x', 'units', index);\n  var offXPfVal = getIndexedStyle(node, 'background-offset-x', 'pfValue', index);\n  if (offXUnits === '%') {\n    x += (nodeTW - w) * offXPfVal;\n  } else {\n    x += offXPfVal;\n  }\n  var y = nodeY - nodeTH / 2; // top\n  var posYUnits = getIndexedStyle(node, 'background-position-y', 'units', index);\n  var posYPfVal = getIndexedStyle(node, 'background-position-y', 'pfValue', index);\n  if (posYUnits === '%') {\n    y += (nodeTH - h) * posYPfVal;\n  } else {\n    y += posYPfVal;\n  }\n  var offYUnits = getIndexedStyle(node, 'background-offset-y', 'units', index);\n  var offYPfVal = getIndexedStyle(node, 'background-offset-y', 'pfValue', index);\n  if (offYUnits === '%') {\n    y += (nodeTH - h) * offYPfVal;\n  } else {\n    y += offYPfVal;\n  }\n  if (rs.pathCache) {\n    x -= nodeX;\n    y -= nodeY;\n    nodeX = 0;\n    nodeY = 0;\n  }\n  var gAlpha = context.globalAlpha;\n  context.globalAlpha = imgOpacity;\n  var smoothingEnabled = r.getImgSmoothing(context);\n  var isSmoothingSwitched = false;\n  if (smooth === 'no' && smoothingEnabled) {\n    r.setImgSmoothing(context, false);\n    isSmoothingSwitched = true;\n  } else if (smooth === 'yes' && !smoothingEnabled) {\n    r.setImgSmoothing(context, true);\n    isSmoothingSwitched = true;\n  }\n  if (repeat === 'no-repeat') {\n    if (shouldClip) {\n      context.save();\n      if (rs.pathCache) {\n        context.clip(rs.pathCache);\n      } else {\n        r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH, cornerRadius, rs);\n        context.clip();\n      }\n    }\n    r.safeDrawImage(context, img, 0, 0, imgW, imgH, x, y, w, h);\n    if (shouldClip) {\n      context.restore();\n    }\n  } else {\n    var pattern = context.createPattern(img, repeat);\n    context.fillStyle = pattern;\n    r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH, cornerRadius, rs);\n    context.translate(x, y);\n    context.fill();\n    context.translate(-x, -y);\n  }\n  context.globalAlpha = gAlpha;\n  if (isSmoothingSwitched) {\n    r.setImgSmoothing(context, smoothingEnabled);\n  }\n};\n\nvar CRp$7 = {};\nCRp$7.eleTextBiggerThanMin = function (ele, scale) {\n  if (!scale) {\n    var zoom = ele.cy().zoom();\n    var pxRatio = this.getPixelRatio();\n    var lvl = Math.ceil(log2(zoom * pxRatio)); // the effective texture level\n\n    scale = Math.pow(2, lvl);\n  }\n  var computedSize = ele.pstyle('font-size').pfValue * scale;\n  var minSize = ele.pstyle('min-zoomed-font-size').pfValue;\n  if (computedSize < minSize) {\n    return false;\n  }\n  return true;\n};\nCRp$7.drawElementText = function (context, ele, shiftToOriginWithBb, force, prefix) {\n  var useEleOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n  var r = this;\n  if (force == null) {\n    if (useEleOpacity && !r.eleTextBiggerThanMin(ele)) {\n      return;\n    }\n  } else if (force === false) {\n    return;\n  }\n  if (ele.isNode()) {\n    var label = ele.pstyle('label');\n    if (!label || !label.value) {\n      return;\n    }\n    var justification = r.getLabelJustification(ele);\n    context.textAlign = justification;\n    context.textBaseline = 'bottom';\n  } else {\n    var badLine = ele.element()._private.rscratch.badLine;\n    var _label = ele.pstyle('label');\n    var srcLabel = ele.pstyle('source-label');\n    var tgtLabel = ele.pstyle('target-label');\n    if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) {\n      return;\n    }\n    context.textAlign = 'center';\n    context.textBaseline = 'bottom';\n  }\n  var applyRotation = !shiftToOriginWithBb;\n  var bb;\n  if (shiftToOriginWithBb) {\n    bb = shiftToOriginWithBb;\n    context.translate(-bb.x1, -bb.y1);\n  }\n  if (prefix == null) {\n    r.drawText(context, ele, null, applyRotation, useEleOpacity);\n    if (ele.isEdge()) {\n      r.drawText(context, ele, 'source', applyRotation, useEleOpacity);\n      r.drawText(context, ele, 'target', applyRotation, useEleOpacity);\n    }\n  } else {\n    r.drawText(context, ele, prefix, applyRotation, useEleOpacity);\n  }\n  if (shiftToOriginWithBb) {\n    context.translate(bb.x1, bb.y1);\n  }\n};\nCRp$7.getFontCache = function (context) {\n  var cache;\n  this.fontCaches = this.fontCaches || [];\n  for (var i = 0; i < this.fontCaches.length; i++) {\n    cache = this.fontCaches[i];\n    if (cache.context === context) {\n      return cache;\n    }\n  }\n  cache = {\n    context: context\n  };\n  this.fontCaches.push(cache);\n  return cache;\n};\n\n// set up canvas context with font\n// returns transformed text string\nCRp$7.setupTextStyle = function (context, ele) {\n  var useEleOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  // Font style\n  var labelStyle = ele.pstyle('font-style').strValue;\n  var labelSize = ele.pstyle('font-size').pfValue + 'px';\n  var labelFamily = ele.pstyle('font-family').strValue;\n  var labelWeight = ele.pstyle('font-weight').strValue;\n  var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle('text-opacity').value : 1;\n  var outlineOpacity = ele.pstyle('text-outline-opacity').value * opacity;\n  var color = ele.pstyle('color').value;\n  var outlineColor = ele.pstyle('text-outline-color').value;\n  context.font = labelStyle + ' ' + labelWeight + ' ' + labelSize + ' ' + labelFamily;\n  context.lineJoin = 'round'; // so text outlines aren't jagged\n\n  this.colorFillStyle(context, color[0], color[1], color[2], opacity);\n  this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity);\n};\nfunction circle(ctx, x, y, width, height) {\n  var diameter = Math.min(width, height);\n  var radius = diameter / 2;\n  var centerX = x + width / 2;\n  var centerY = y + height / 2;\n  ctx.beginPath();\n  ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);\n  ctx.closePath();\n}\nfunction roundRect(ctx, x, y, width, height) {\n  var radius = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 5;\n  var r = Math.min(radius, width / 2, height / 2); // prevent overflow\n  ctx.beginPath();\n  ctx.moveTo(x + r, y);\n  ctx.lineTo(x + width - r, y);\n  ctx.quadraticCurveTo(x + width, y, x + width, y + r);\n  ctx.lineTo(x + width, y + height - r);\n  ctx.quadraticCurveTo(x + width, y + height, x + width - r, y + height);\n  ctx.lineTo(x + r, y + height);\n  ctx.quadraticCurveTo(x, y + height, x, y + height - r);\n  ctx.lineTo(x, y + r);\n  ctx.quadraticCurveTo(x, y, x + r, y);\n  ctx.closePath();\n}\nCRp$7.getTextAngle = function (ele, prefix) {\n  var theta;\n  var _p = ele._private;\n  var rscratch = _p.rscratch;\n  var pdash = prefix ? prefix + '-' : '';\n  var rotation = ele.pstyle(pdash + 'text-rotation');\n  if (rotation.strValue === 'autorotate') {\n    var textAngle = getPrefixedProperty(rscratch, 'labelAngle', prefix);\n    theta = ele.isEdge() ? textAngle : 0;\n  } else if (rotation.strValue === 'none') {\n    theta = 0;\n  } else {\n    theta = rotation.pfValue;\n  }\n  return theta;\n};\nCRp$7.drawText = function (context, ele, prefix) {\n  var applyRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n  var useEleOpacity = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  var _p = ele._private;\n  var rscratch = _p.rscratch;\n  var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1;\n  if (useEleOpacity && (parentOpacity === 0 || ele.pstyle('text-opacity').value === 0)) {\n    return;\n  }\n\n  // use 'main' as an alias for the main label (i.e. null prefix)\n  if (prefix === 'main') {\n    prefix = null;\n  }\n  var textX = getPrefixedProperty(rscratch, 'labelX', prefix);\n  var textY = getPrefixedProperty(rscratch, 'labelY', prefix);\n  var orgTextX, orgTextY; // used for rotation\n  var text = this.getLabelText(ele, prefix);\n  if (text != null && text !== '' && !isNaN(textX) && !isNaN(textY)) {\n    this.setupTextStyle(context, ele, useEleOpacity);\n    var pdash = prefix ? prefix + '-' : '';\n    var textW = getPrefixedProperty(rscratch, 'labelWidth', prefix);\n    var textH = getPrefixedProperty(rscratch, 'labelHeight', prefix);\n    var marginX = ele.pstyle(pdash + 'text-margin-x').pfValue;\n    var marginY = ele.pstyle(pdash + 'text-margin-y').pfValue;\n    var isEdge = ele.isEdge();\n    var halign = ele.pstyle('text-halign').value;\n    var valign = ele.pstyle('text-valign').value;\n    if (isEdge) {\n      halign = 'center';\n      valign = 'center';\n    }\n    textX += marginX;\n    textY += marginY;\n    var theta;\n    if (!applyRotation) {\n      theta = 0;\n    } else {\n      theta = this.getTextAngle(ele, prefix);\n    }\n    if (theta !== 0) {\n      orgTextX = textX;\n      orgTextY = textY;\n      context.translate(orgTextX, orgTextY);\n      context.rotate(theta);\n      textX = 0;\n      textY = 0;\n    }\n    switch (valign) {\n      case 'top':\n        break;\n      case 'center':\n        textY += textH / 2;\n        break;\n      case 'bottom':\n        textY += textH;\n        break;\n    }\n    var backgroundOpacity = ele.pstyle('text-background-opacity').value;\n    var borderOpacity = ele.pstyle('text-border-opacity').value;\n    var textBorderWidth = ele.pstyle('text-border-width').pfValue;\n    var backgroundPadding = ele.pstyle('text-background-padding').pfValue;\n    var styleShape = ele.pstyle('text-background-shape').strValue;\n    var rounded = styleShape === 'round-rectangle' || styleShape === 'roundrectangle';\n    var circled = styleShape === 'circle';\n    var roundRadius = 2;\n    if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) {\n      var textFill = context.fillStyle;\n      var textStroke = context.strokeStyle;\n      var textLineWidth = context.lineWidth;\n      var textBackgroundColor = ele.pstyle('text-background-color').value;\n      var textBorderColor = ele.pstyle('text-border-color').value;\n      var textBorderStyle = ele.pstyle('text-border-style').value;\n      var doFill = backgroundOpacity > 0;\n      var doStroke = textBorderWidth > 0 && borderOpacity > 0;\n      var bgX = textX - backgroundPadding;\n      switch (halign) {\n        case 'left':\n          bgX -= textW;\n          break;\n        case 'center':\n          bgX -= textW / 2;\n          break;\n      }\n      var bgY = textY - textH - backgroundPadding;\n      var bgW = textW + 2 * backgroundPadding;\n      var bgH = textH + 2 * backgroundPadding;\n      if (doFill) {\n        context.fillStyle = \"rgba(\".concat(textBackgroundColor[0], \",\").concat(textBackgroundColor[1], \",\").concat(textBackgroundColor[2], \",\").concat(backgroundOpacity * parentOpacity, \")\");\n      }\n      if (doStroke) {\n        context.strokeStyle = \"rgba(\".concat(textBorderColor[0], \",\").concat(textBorderColor[1], \",\").concat(textBorderColor[2], \",\").concat(borderOpacity * parentOpacity, \")\");\n        context.lineWidth = textBorderWidth;\n        if (context.setLineDash) {\n          switch (textBorderStyle) {\n            case 'dotted':\n              context.setLineDash([1, 1]);\n              break;\n            case 'dashed':\n              context.setLineDash([4, 2]);\n              break;\n            case 'double':\n              context.lineWidth = textBorderWidth / 4;\n              context.setLineDash([]);\n              break;\n            case 'solid':\n            default:\n              context.setLineDash([]);\n              break;\n          }\n        }\n      }\n      if (rounded) {\n        context.beginPath();\n        roundRect(context, bgX, bgY, bgW, bgH, roundRadius);\n      } else if (circled) {\n        context.beginPath();\n        circle(context, bgX, bgY, bgW, bgH);\n      } else {\n        context.beginPath();\n        context.rect(bgX, bgY, bgW, bgH);\n      }\n      if (doFill) context.fill();\n      if (doStroke) context.stroke();\n\n      // Double border pass for 'double' style\n      if (doStroke && textBorderStyle === 'double') {\n        var whiteWidth = textBorderWidth / 2;\n        context.beginPath();\n        if (rounded) {\n          roundRect(context, bgX + whiteWidth, bgY + whiteWidth, bgW - 2 * whiteWidth, bgH - 2 * whiteWidth, roundRadius);\n        } else {\n          context.rect(bgX + whiteWidth, bgY + whiteWidth, bgW - 2 * whiteWidth, bgH - 2 * whiteWidth);\n        }\n        context.stroke();\n      }\n      context.fillStyle = textFill;\n      context.strokeStyle = textStroke;\n      context.lineWidth = textLineWidth;\n      if (context.setLineDash) context.setLineDash([]);\n    }\n    var lineWidth = 2 * ele.pstyle('text-outline-width').pfValue; // *2 b/c the stroke is drawn centred on the middle\n\n    if (lineWidth > 0) {\n      context.lineWidth = lineWidth;\n    }\n    if (ele.pstyle('text-wrap').value === 'wrap') {\n      var lines = getPrefixedProperty(rscratch, 'labelWrapCachedLines', prefix);\n      var lineHeight = getPrefixedProperty(rscratch, 'labelLineHeight', prefix);\n      var halfTextW = textW / 2;\n      var justification = this.getLabelJustification(ele);\n      if (justification === 'auto') ; else if (halign === 'left') {\n        // auto justification : right\n        if (justification === 'left') {\n          textX += -textW;\n        } else if (justification === 'center') {\n          textX += -halfTextW;\n        } // else same as auto\n      } else if (halign === 'center') {\n        // auto justfication : center\n        if (justification === 'left') {\n          textX += -halfTextW;\n        } else if (justification === 'right') {\n          textX += halfTextW;\n        } // else same as auto\n      } else if (halign === 'right') {\n        // auto justification : left\n        if (justification === 'center') {\n          textX += halfTextW;\n        } else if (justification === 'right') {\n          textX += textW;\n        } // else same as auto\n      }\n      switch (valign) {\n        case 'top':\n          textY -= (lines.length - 1) * lineHeight;\n          break;\n        case 'center':\n        case 'bottom':\n          textY -= (lines.length - 1) * lineHeight;\n          break;\n      }\n      for (var l = 0; l < lines.length; l++) {\n        if (lineWidth > 0) {\n          context.strokeText(lines[l], textX, textY);\n        }\n        context.fillText(lines[l], textX, textY);\n        textY += lineHeight;\n      }\n    } else {\n      if (lineWidth > 0) {\n        context.strokeText(text, textX, textY);\n      }\n      context.fillText(text, textX, textY);\n    }\n    if (theta !== 0) {\n      context.rotate(-theta);\n      context.translate(-orgTextX, -orgTextY);\n    }\n  }\n};\n\n/* global Path2D */\n\nvar CRp$6 = {};\nCRp$6.drawNode = function (context, node, shiftToOriginWithBb) {\n  var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n  var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n  var r = this;\n  var nodeWidth, nodeHeight;\n  var _p = node._private;\n  var rs = _p.rscratch;\n  var pos = node.position();\n  if (!number$1(pos.x) || !number$1(pos.y)) {\n    return; // can't draw node with undefined position\n  }\n  if (shouldDrawOpacity && !node.visible()) {\n    return;\n  }\n  var eleOpacity = shouldDrawOpacity ? node.effectiveOpacity() : 1;\n  var usePaths = r.usePaths();\n  var path;\n  var pathCacheHit = false;\n  var padding = node.padding();\n  nodeWidth = node.width() + 2 * padding;\n  nodeHeight = node.height() + 2 * padding;\n\n  //\n  // setup shift\n\n  var bb;\n  if (shiftToOriginWithBb) {\n    bb = shiftToOriginWithBb;\n    context.translate(-bb.x1, -bb.y1);\n  }\n\n  //\n  // load bg image\n\n  var bgImgProp = node.pstyle('background-image');\n  var urls = bgImgProp.value;\n  var urlDefined = new Array(urls.length);\n  var image = new Array(urls.length);\n  var numImages = 0;\n  for (var i = 0; i < urls.length; i++) {\n    var url = urls[i];\n    var defd = urlDefined[i] = url != null && url !== 'none';\n    if (defd) {\n      var bgImgCrossOrigin = node.cy().style().getIndexedStyle(node, 'background-image-crossorigin', 'value', i);\n      numImages++;\n\n      // get image, and if not loaded then ask to redraw when later loaded\n      image[i] = r.getCachedImage(url, bgImgCrossOrigin, function () {\n        _p.backgroundTimestamp = Date.now();\n        node.emitAndNotify('background');\n      });\n    }\n  }\n\n  //\n  // setup styles\n\n  var darkness = node.pstyle('background-blacken').value;\n  var borderWidth = node.pstyle('border-width').pfValue;\n  var bgOpacity = node.pstyle('background-opacity').value * eleOpacity;\n  var borderColor = node.pstyle('border-color').value;\n  var borderStyle = node.pstyle('border-style').value;\n  var borderJoin = node.pstyle('border-join').value;\n  var borderCap = node.pstyle('border-cap').value;\n  var borderPosition = node.pstyle('border-position').value;\n  var borderPattern = node.pstyle('border-dash-pattern').pfValue;\n  var borderOffset = node.pstyle('border-dash-offset').pfValue;\n  var borderOpacity = node.pstyle('border-opacity').value * eleOpacity;\n  var outlineWidth = node.pstyle('outline-width').pfValue;\n  var outlineColor = node.pstyle('outline-color').value;\n  var outlineStyle = node.pstyle('outline-style').value;\n  var outlineOpacity = node.pstyle('outline-opacity').value * eleOpacity;\n  var outlineOffset = node.pstyle('outline-offset').value;\n  var cornerRadius = node.pstyle('corner-radius').value;\n  if (cornerRadius !== 'auto') cornerRadius = node.pstyle('corner-radius').pfValue;\n  var setupShapeColor = function setupShapeColor() {\n    var bgOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bgOpacity;\n    r.eleFillStyle(context, node, bgOpy);\n  };\n  var setupBorderColor = function setupBorderColor() {\n    var bdrOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : borderOpacity;\n    r.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy);\n  };\n  var setupOutlineColor = function setupOutlineColor() {\n    var otlnOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : outlineOpacity;\n    r.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], otlnOpy);\n  };\n\n  //\n  // setup shape\n\n  var getPath = function getPath(width, height, shape, points) {\n    var pathCache = r.nodePathCache = r.nodePathCache || [];\n    var key = hashStrings(shape === 'polygon' ? shape + ',' + points.join(',') : shape, '' + height, '' + width, '' + cornerRadius);\n    var cachedPath = pathCache[key];\n    var path;\n    var cacheHit = false;\n    if (cachedPath != null) {\n      path = cachedPath;\n      cacheHit = true;\n      rs.pathCache = path;\n    } else {\n      path = new Path2D();\n      pathCache[key] = rs.pathCache = path;\n    }\n    return {\n      path: path,\n      cacheHit: cacheHit\n    };\n  };\n  var styleShape = node.pstyle('shape').strValue;\n  var shapePts = node.pstyle('shape-polygon-points').pfValue;\n  if (usePaths) {\n    context.translate(pos.x, pos.y);\n    var shapePath = getPath(nodeWidth, nodeHeight, styleShape, shapePts);\n    path = shapePath.path;\n    pathCacheHit = shapePath.cacheHit;\n  }\n  var drawShape = function drawShape() {\n    if (!pathCacheHit) {\n      var npos = pos;\n      if (usePaths) {\n        npos = {\n          x: 0,\n          y: 0\n        };\n      }\n      r.nodeShapes[r.getNodeShape(node)].draw(path || context, npos.x, npos.y, nodeWidth, nodeHeight, cornerRadius, rs);\n    }\n    if (usePaths) {\n      context.fill(path);\n    } else {\n      context.fill();\n    }\n  };\n  var drawImages = function drawImages() {\n    var nodeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;\n    var inside = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    var prevBging = _p.backgrounding;\n    var totalCompleted = 0;\n    for (var _i = 0; _i < image.length; _i++) {\n      var bgContainment = node.cy().style().getIndexedStyle(node, 'background-image-containment', 'value', _i);\n      if (inside && bgContainment === 'over' || !inside && bgContainment === 'inside') {\n        totalCompleted++;\n        continue;\n      }\n      if (urlDefined[_i] && image[_i].complete && !image[_i].error) {\n        totalCompleted++;\n        r.drawInscribedImage(context, image[_i], node, _i, nodeOpacity);\n      }\n    }\n    _p.backgrounding = !(totalCompleted === numImages);\n    if (prevBging !== _p.backgrounding) {\n      // update style b/c :backgrounding state changed\n      node.updateStyle(false);\n    }\n  };\n  var drawPie = function drawPie() {\n    var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var pieOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity;\n    if (r.hasPie(node)) {\n      r.drawPie(context, node, pieOpacity);\n\n      // redraw/restore path if steps after pie need it\n      if (redrawShape) {\n        if (!usePaths) {\n          r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight, cornerRadius, rs);\n        }\n      }\n    }\n  };\n  var drawStripe = function drawStripe() {\n    var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var stripeOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity;\n    if (r.hasStripe(node)) {\n      context.save();\n      if (usePaths) {\n        context.clip(rs.pathCache);\n      } else {\n        r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight, cornerRadius, rs);\n        context.clip();\n      }\n      r.drawStripe(context, node, stripeOpacity);\n      context.restore();\n\n      // redraw/restore path if steps after stripes need it\n      if (redrawShape) {\n        if (!usePaths) {\n          r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight, cornerRadius, rs);\n        }\n      }\n    }\n  };\n  var darken = function darken() {\n    var darkenOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;\n    var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity;\n    var c = darkness > 0 ? 0 : 255;\n    if (darkness !== 0) {\n      r.colorFillStyle(context, c, c, c, opacity);\n      if (usePaths) {\n        context.fill(path);\n      } else {\n        context.fill();\n      }\n    }\n  };\n  var drawBorder = function drawBorder() {\n    if (borderWidth > 0) {\n      context.lineWidth = borderWidth;\n      context.lineCap = borderCap;\n      context.lineJoin = borderJoin;\n      if (context.setLineDash) {\n        // for very outofdate browsers\n        switch (borderStyle) {\n          case 'dotted':\n            context.setLineDash([1, 1]);\n            break;\n          case 'dashed':\n            context.setLineDash(borderPattern);\n            context.lineDashOffset = borderOffset;\n            break;\n          case 'solid':\n          case 'double':\n            context.setLineDash([]);\n            break;\n        }\n      }\n      if (borderPosition !== 'center') {\n        context.save();\n        context.lineWidth *= 2;\n        if (borderPosition === 'inside') {\n          usePaths ? context.clip(path) : context.clip();\n        } else {\n          var region = new Path2D();\n          region.rect(-nodeWidth / 2 - borderWidth, -nodeHeight / 2 - borderWidth, nodeWidth + 2 * borderWidth, nodeHeight + 2 * borderWidth);\n          region.addPath(path);\n          context.clip(region, 'evenodd');\n        }\n        usePaths ? context.stroke(path) : context.stroke();\n        context.restore();\n      } else {\n        usePaths ? context.stroke(path) : context.stroke();\n      }\n      if (borderStyle === 'double') {\n        context.lineWidth = borderWidth / 3;\n        var gco = context.globalCompositeOperation;\n        context.globalCompositeOperation = 'destination-out';\n        if (usePaths) {\n          context.stroke(path);\n        } else {\n          context.stroke();\n        }\n        context.globalCompositeOperation = gco;\n      }\n\n      // reset in case we changed the border style\n      if (context.setLineDash) {\n        // for very outofdate browsers\n        context.setLineDash([]);\n      }\n    }\n  };\n  var drawOutline = function drawOutline() {\n    if (outlineWidth > 0) {\n      context.lineWidth = outlineWidth;\n      context.lineCap = 'butt';\n      if (context.setLineDash) {\n        // for very outofdate browsers\n        switch (outlineStyle) {\n          case 'dotted':\n            context.setLineDash([1, 1]);\n            break;\n          case 'dashed':\n            context.setLineDash([4, 2]);\n            break;\n          case 'solid':\n          case 'double':\n            context.setLineDash([]);\n            break;\n        }\n      }\n      var npos = pos;\n      if (usePaths) {\n        npos = {\n          x: 0,\n          y: 0\n        };\n      }\n      var shape = r.getNodeShape(node);\n      var bWidth = borderWidth;\n      if (borderPosition === 'inside') bWidth = 0;\n      if (borderPosition === 'outside') bWidth *= 2;\n      var scaleX = (nodeWidth + bWidth + (outlineWidth + outlineOffset)) / nodeWidth;\n      var scaleY = (nodeHeight + bWidth + (outlineWidth + outlineOffset)) / nodeHeight;\n      var sWidth = nodeWidth * scaleX;\n      var sHeight = nodeHeight * scaleY;\n      var points = r.nodeShapes[shape].points;\n      var _path;\n      if (usePaths) {\n        var outlinePath = getPath(sWidth, sHeight, shape, points);\n        _path = outlinePath.path;\n      }\n\n      // draw the outline path, either by using expanded points or by scaling \n      // the dimensions, depending on shape\n      if (shape === \"ellipse\") {\n        r.drawEllipsePath(_path || context, npos.x, npos.y, sWidth, sHeight);\n      } else if (['round-diamond', 'round-heptagon', 'round-hexagon', 'round-octagon', 'round-pentagon', 'round-polygon', 'round-triangle', 'round-tag'].includes(shape)) {\n        var sMult = 0;\n        var offsetX = 0;\n        var offsetY = 0;\n        if (shape === 'round-diamond') {\n          sMult = (bWidth + outlineOffset + outlineWidth) * 1.4;\n        } else if (shape === 'round-heptagon') {\n          sMult = (bWidth + outlineOffset + outlineWidth) * 1.075;\n          offsetY = -(bWidth / 2 + outlineOffset + outlineWidth) / 35;\n        } else if (shape === 'round-hexagon') {\n          sMult = (bWidth + outlineOffset + outlineWidth) * 1.12;\n        } else if (shape === 'round-pentagon') {\n          sMult = (bWidth + outlineOffset + outlineWidth) * 1.13;\n          offsetY = -(bWidth / 2 + outlineOffset + outlineWidth) / 15;\n        } else if (shape === 'round-tag') {\n          sMult = (bWidth + outlineOffset + outlineWidth) * 1.12;\n          offsetX = (bWidth / 2 + outlineWidth + outlineOffset) * .07;\n        } else if (shape === 'round-triangle') {\n          sMult = (bWidth + outlineOffset + outlineWidth) * (Math.PI / 2);\n          offsetY = -(bWidth + outlineOffset / 2 + outlineWidth) / Math.PI;\n        }\n        if (sMult !== 0) {\n          scaleX = (nodeWidth + sMult) / nodeWidth;\n          sWidth = nodeWidth * scaleX;\n          if (!['round-hexagon', 'round-tag'].includes(shape)) {\n            scaleY = (nodeHeight + sMult) / nodeHeight;\n            sHeight = nodeHeight * scaleY;\n          }\n        }\n        cornerRadius = cornerRadius === 'auto' ? getRoundPolygonRadius(sWidth, sHeight) : cornerRadius;\n        var halfW = sWidth / 2;\n        var halfH = sHeight / 2;\n        var radius = cornerRadius + (bWidth + outlineWidth + outlineOffset) / 2;\n        var p = new Array(points.length / 2);\n        var corners = new Array(points.length / 2);\n        for (var _i2 = 0; _i2 < points.length / 2; _i2++) {\n          p[_i2] = {\n            x: npos.x + offsetX + halfW * points[_i2 * 2],\n            y: npos.y + offsetY + halfH * points[_i2 * 2 + 1]\n          };\n        }\n        var _i3,\n          p1,\n          p2,\n          p3,\n          len = p.length;\n        p1 = p[len - 1];\n        // for each point\n        for (_i3 = 0; _i3 < len; _i3++) {\n          p2 = p[_i3 % len];\n          p3 = p[(_i3 + 1) % len];\n          corners[_i3] = getRoundCorner(p1, p2, p3, radius);\n          p1 = p2;\n          p2 = p3;\n        }\n        r.drawRoundPolygonPath(_path || context, npos.x + offsetX, npos.y + offsetY, nodeWidth * scaleX, nodeHeight * scaleY, points, corners);\n      } else if (['roundrectangle', 'round-rectangle'].includes(shape)) {\n        cornerRadius = cornerRadius === 'auto' ? getRoundRectangleRadius(sWidth, sHeight) : cornerRadius;\n        r.drawRoundRectanglePath(_path || context, npos.x, npos.y, sWidth, sHeight, cornerRadius + (bWidth + outlineWidth + outlineOffset) / 2);\n      } else if (['cutrectangle', 'cut-rectangle'].includes(shape)) {\n        cornerRadius = cornerRadius === 'auto' ? getCutRectangleCornerLength() : cornerRadius;\n        r.drawCutRectanglePath(_path || context, npos.x, npos.y, sWidth, sHeight, null, cornerRadius + (bWidth + outlineWidth + outlineOffset) / 4);\n      } else if (['bottomroundrectangle', 'bottom-round-rectangle'].includes(shape)) {\n        cornerRadius = cornerRadius === 'auto' ? getRoundRectangleRadius(sWidth, sHeight) : cornerRadius;\n        r.drawBottomRoundRectanglePath(_path || context, npos.x, npos.y, sWidth, sHeight, cornerRadius + (bWidth + outlineWidth + outlineOffset) / 2);\n      } else if (shape === \"barrel\") {\n        r.drawBarrelPath(_path || context, npos.x, npos.y, sWidth, sHeight);\n      } else if (shape.startsWith(\"polygon\") || ['rhomboid', 'right-rhomboid', 'round-tag', 'tag', 'vee'].includes(shape)) {\n        var pad = (bWidth + outlineWidth + outlineOffset) / nodeWidth;\n        points = joinLines(expandPolygon(points, pad));\n        r.drawPolygonPath(_path || context, npos.x, npos.y, nodeWidth, nodeHeight, points);\n      } else {\n        var _pad = (bWidth + outlineWidth + outlineOffset) / nodeWidth;\n        points = joinLines(expandPolygon(points, -_pad));\n        r.drawPolygonPath(_path || context, npos.x, npos.y, nodeWidth, nodeHeight, points);\n      }\n      if (usePaths) {\n        context.stroke(_path);\n      } else {\n        context.stroke();\n      }\n      if (outlineStyle === 'double') {\n        context.lineWidth = bWidth / 3;\n        var gco = context.globalCompositeOperation;\n        context.globalCompositeOperation = 'destination-out';\n        if (usePaths) {\n          context.stroke(_path);\n        } else {\n          context.stroke();\n        }\n        context.globalCompositeOperation = gco;\n      }\n\n      // reset in case we changed the border style\n      if (context.setLineDash) {\n        // for very outofdate browsers\n        context.setLineDash([]);\n      }\n    }\n  };\n  var drawOverlay = function drawOverlay() {\n    if (shouldDrawOverlay) {\n      r.drawNodeOverlay(context, node, pos, nodeWidth, nodeHeight);\n    }\n  };\n  var drawUnderlay = function drawUnderlay() {\n    if (shouldDrawOverlay) {\n      r.drawNodeUnderlay(context, node, pos, nodeWidth, nodeHeight);\n    }\n  };\n  var drawText = function drawText() {\n    r.drawElementText(context, node, null, drawLabel);\n  };\n  var ghost = node.pstyle('ghost').value === 'yes';\n  if (ghost) {\n    var gx = node.pstyle('ghost-offset-x').pfValue;\n    var gy = node.pstyle('ghost-offset-y').pfValue;\n    var ghostOpacity = node.pstyle('ghost-opacity').value;\n    var effGhostOpacity = ghostOpacity * eleOpacity;\n    context.translate(gx, gy);\n    setupOutlineColor();\n    drawOutline();\n    setupShapeColor(ghostOpacity * bgOpacity);\n    drawShape();\n    drawImages(effGhostOpacity, true);\n    setupBorderColor(ghostOpacity * borderOpacity);\n    drawBorder();\n    drawPie(darkness !== 0 || borderWidth !== 0);\n    drawStripe(darkness !== 0 || borderWidth !== 0);\n    drawImages(effGhostOpacity, false);\n    darken(effGhostOpacity);\n    context.translate(-gx, -gy);\n  }\n  if (usePaths) {\n    context.translate(-pos.x, -pos.y);\n  }\n  drawUnderlay();\n  if (usePaths) {\n    context.translate(pos.x, pos.y);\n  }\n  setupOutlineColor();\n  drawOutline();\n  setupShapeColor();\n  drawShape();\n  drawImages(eleOpacity, true);\n  setupBorderColor();\n  drawBorder();\n  drawPie(darkness !== 0 || borderWidth !== 0);\n  drawStripe(darkness !== 0 || borderWidth !== 0);\n  drawImages(eleOpacity, false);\n  darken();\n  if (usePaths) {\n    context.translate(-pos.x, -pos.y);\n  }\n  drawText();\n  drawOverlay();\n\n  //\n  // clean up shift\n\n  if (shiftToOriginWithBb) {\n    context.translate(bb.x1, bb.y1);\n  }\n};\nvar drawNodeOverlayUnderlay = function drawNodeOverlayUnderlay(overlayOrUnderlay) {\n  if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) {\n    throw new Error('Invalid state');\n  }\n  return function (context, node, pos, nodeWidth, nodeHeight) {\n    var r = this;\n    if (!node.visible()) {\n      return;\n    }\n    var padding = node.pstyle(\"\".concat(overlayOrUnderlay, \"-padding\")).pfValue;\n    var opacity = node.pstyle(\"\".concat(overlayOrUnderlay, \"-opacity\")).value;\n    var color = node.pstyle(\"\".concat(overlayOrUnderlay, \"-color\")).value;\n    var shape = node.pstyle(\"\".concat(overlayOrUnderlay, \"-shape\")).value;\n    var radius = node.pstyle(\"\".concat(overlayOrUnderlay, \"-corner-radius\")).value;\n    if (opacity > 0) {\n      pos = pos || node.position();\n      if (nodeWidth == null || nodeHeight == null) {\n        var _padding = node.padding();\n        nodeWidth = node.width() + 2 * _padding;\n        nodeHeight = node.height() + 2 * _padding;\n      }\n      r.colorFillStyle(context, color[0], color[1], color[2], opacity);\n      r.nodeShapes[shape].draw(context, pos.x, pos.y, nodeWidth + padding * 2, nodeHeight + padding * 2, radius);\n      context.fill();\n    }\n  };\n};\nCRp$6.drawNodeOverlay = drawNodeOverlayUnderlay('overlay');\nCRp$6.drawNodeUnderlay = drawNodeOverlayUnderlay('underlay');\n\n// does the node have at least one pie piece?\nCRp$6.hasPie = function (node) {\n  node = node[0]; // ensure ele ref\n\n  return node._private.hasPie;\n};\nCRp$6.hasStripe = function (node) {\n  node = node[0]; // ensure ele ref\n\n  return node._private.hasStripe;\n};\nCRp$6.drawPie = function (context, node, nodeOpacity, pos) {\n  node = node[0]; // ensure ele ref\n  pos = pos || node.position();\n  var cyStyle = node.cy().style();\n  var pieSize = node.pstyle('pie-size');\n  var hole = node.pstyle('pie-hole');\n  var overallStartAngle = node.pstyle('pie-start-angle').pfValue;\n  var x = pos.x;\n  var y = pos.y;\n  var nodeW = node.width();\n  var nodeH = node.height();\n  var radius = Math.min(nodeW, nodeH) / 2; // must fit in node\n  var holeRadius;\n  var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1]\n  var usePaths = this.usePaths();\n  if (usePaths) {\n    x = 0;\n    y = 0;\n  }\n  if (pieSize.units === '%') {\n    radius = radius * pieSize.pfValue;\n  } else if (pieSize.pfValue !== undefined) {\n    radius = pieSize.pfValue / 2; // diameter in pixels => radius\n  }\n  if (hole.units === '%') {\n    holeRadius = radius * hole.pfValue;\n  } else if (hole.pfValue !== undefined) {\n    holeRadius = hole.pfValue / 2; // diameter in pixels => radius\n  }\n  if (holeRadius >= radius) {\n    return; // the pie would be invisible anyway\n  }\n  for (var i = 1; i <= cyStyle.pieBackgroundN; i++) {\n    // 1..N\n    var size = node.pstyle('pie-' + i + '-background-size').value;\n    var color = node.pstyle('pie-' + i + '-background-color').value;\n    var opacity = node.pstyle('pie-' + i + '-background-opacity').value * nodeOpacity;\n    var percent = size / 100; // map integer range [0, 100] to [0, 1]\n\n    // percent can't push beyond 1\n    if (percent + lastPercent > 1) {\n      percent = 1 - lastPercent;\n    }\n    var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; // start at 12 o'clock and go clockwise\n    angleStart += overallStartAngle; // shift by the overall pie start angle\n    var angleDelta = 2 * Math.PI * percent;\n    var angleEnd = angleStart + angleDelta;\n\n    // ignore if\n    // - zero size\n    // - we're already beyond the full circle\n    // - adding the current slice would go beyond the full circle\n    if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) {\n      continue;\n    }\n    if (holeRadius === 0) {\n      // make a pie slice\n      context.beginPath();\n      context.moveTo(x, y);\n      context.arc(x, y, radius, angleStart, angleEnd);\n      context.closePath();\n    } else {\n      // make a pie slice that's like the above but with a hole in the middle\n      context.beginPath();\n      context.arc(x, y, radius, angleStart, angleEnd);\n      context.arc(x, y, holeRadius, angleEnd, angleStart, true); // true for anticlockwise\n      context.closePath();\n    }\n    this.colorFillStyle(context, color[0], color[1], color[2], opacity);\n    context.fill();\n    lastPercent += percent;\n  }\n};\nCRp$6.drawStripe = function (context, node, nodeOpacity, pos) {\n  node = node[0]; // ensure ele ref\n  pos = pos || node.position();\n  var cyStyle = node.cy().style();\n  var x = pos.x;\n  var y = pos.y;\n  var nodeW = node.width();\n  var nodeH = node.height();\n  var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1]\n  var usePaths = this.usePaths();\n  context.save();\n  var direction = node.pstyle('stripe-direction').value;\n  var stripeSize = node.pstyle('stripe-size');\n  switch (direction) {\n    case 'vertical':\n      break;\n    // default\n    case 'righward':\n      context.rotate(-Math.PI / 2);\n      break;\n  }\n  var stripeW = nodeW;\n  var stripeH = nodeH;\n  if (stripeSize.units === '%') {\n    stripeW = stripeW * stripeSize.pfValue;\n    stripeH = stripeH * stripeSize.pfValue;\n  } else if (stripeSize.pfValue !== undefined) {\n    stripeW = stripeSize.pfValue;\n    stripeH = stripeSize.pfValue;\n  }\n  if (usePaths) {\n    x = 0;\n    y = 0;\n  }\n\n  // shift up from the centre of the node to the top-left corner\n  y -= stripeW / 2;\n  x -= stripeH / 2;\n  for (var i = 1; i <= cyStyle.stripeBackgroundN; i++) {\n    // 1..N\n    var size = node.pstyle('stripe-' + i + '-background-size').value;\n    var color = node.pstyle('stripe-' + i + '-background-color').value;\n    var opacity = node.pstyle('stripe-' + i + '-background-opacity').value * nodeOpacity;\n    var percent = size / 100; // map integer range [0, 100] to [0, 1]\n\n    // percent can't push beyond 1\n    if (percent + lastPercent > 1) {\n      percent = 1 - lastPercent;\n    }\n\n    // ignore if\n    // - zero size\n    // - we're already beyond the full chart\n    // - adding the current slice would go beyond the full chart\n    if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) {\n      continue;\n    }\n\n    // draw rect for the current stripe\n    context.beginPath();\n    context.rect(x, y + stripeH * lastPercent, stripeW, stripeH * percent);\n    context.closePath();\n    this.colorFillStyle(context, color[0], color[1], color[2], opacity);\n    context.fill();\n    lastPercent += percent;\n  }\n  context.restore();\n};\n\nvar CRp$5 = {};\nvar motionBlurDelay = 100;\n\n// var isFirefox = typeof InstallTrigger !== 'undefined';\n\nCRp$5.getPixelRatio = function () {\n  var context = this.data.contexts[0];\n  if (this.forcedPixelRatio != null) {\n    return this.forcedPixelRatio;\n  }\n  var containerWindow = this.cy.window();\n  var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;\n  return (containerWindow.devicePixelRatio || 1) / backingStore; // eslint-disable-line no-undef\n};\nCRp$5.paintCache = function (context) {\n  var caches = this.paintCaches = this.paintCaches || [];\n  var needToCreateCache = true;\n  var cache;\n  for (var i = 0; i < caches.length; i++) {\n    cache = caches[i];\n    if (cache.context === context) {\n      needToCreateCache = false;\n      break;\n    }\n  }\n  if (needToCreateCache) {\n    cache = {\n      context: context\n    };\n    caches.push(cache);\n  }\n  return cache;\n};\nCRp$5.createGradientStyleFor = function (context, shapeStyleName, ele, fill, opacity) {\n  var gradientStyle;\n  var usePaths = this.usePaths();\n  var colors = ele.pstyle(shapeStyleName + '-gradient-stop-colors').value,\n    positions = ele.pstyle(shapeStyleName + '-gradient-stop-positions').pfValue;\n  if (fill === 'radial-gradient') {\n    if (ele.isEdge()) {\n      var start = ele.sourceEndpoint(),\n        end = ele.targetEndpoint(),\n        mid = ele.midpoint();\n      var d1 = dist(start, mid);\n      var d2 = dist(end, mid);\n      gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2));\n    } else {\n      var pos = usePaths ? {\n          x: 0,\n          y: 0\n        } : ele.position(),\n        width = ele.paddedWidth(),\n        height = ele.paddedHeight();\n      gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width, height));\n    }\n  } else {\n    if (ele.isEdge()) {\n      var _start = ele.sourceEndpoint(),\n        _end = ele.targetEndpoint();\n      gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y);\n    } else {\n      var _pos = usePaths ? {\n          x: 0,\n          y: 0\n        } : ele.position(),\n        _width = ele.paddedWidth(),\n        _height = ele.paddedHeight(),\n        halfWidth = _width / 2,\n        halfHeight = _height / 2;\n      var direction = ele.pstyle('background-gradient-direction').value;\n      switch (direction) {\n        case 'to-bottom':\n          gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight);\n          break;\n        case 'to-top':\n          gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight);\n          break;\n        case 'to-left':\n          gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y);\n          break;\n        case 'to-right':\n          gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y);\n          break;\n        case 'to-bottom-right':\n        case 'to-right-bottom':\n          gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight);\n          break;\n        case 'to-top-right':\n        case 'to-right-top':\n          gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight);\n          break;\n        case 'to-bottom-left':\n        case 'to-left-bottom':\n          gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight);\n          break;\n        case 'to-top-left':\n        case 'to-left-top':\n          gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight);\n          break;\n      }\n    }\n  }\n  if (!gradientStyle) return null; // invalid gradient style\n\n  var hasPositions = positions.length === colors.length;\n  var length = colors.length;\n  for (var i = 0; i < length; i++) {\n    gradientStyle.addColorStop(hasPositions ? positions[i] : i / (length - 1), 'rgba(' + colors[i][0] + ',' + colors[i][1] + ',' + colors[i][2] + ',' + opacity + ')');\n  }\n  return gradientStyle;\n};\nCRp$5.gradientFillStyle = function (context, ele, fill, opacity) {\n  var gradientStyle = this.createGradientStyleFor(context, 'background', ele, fill, opacity);\n  if (!gradientStyle) return null; // error\n  context.fillStyle = gradientStyle;\n};\nCRp$5.colorFillStyle = function (context, r, g, b, a) {\n  context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n  // turn off for now, seems context does its own caching\n\n  // var cache = this.paintCache(context);\n\n  // var fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n\n  // if( cache.fillStyle !== fillStyle ){\n  //   context.fillStyle = cache.fillStyle = fillStyle;\n  // }\n};\nCRp$5.eleFillStyle = function (context, ele, opacity) {\n  var backgroundFill = ele.pstyle('background-fill').value;\n  if (backgroundFill === 'linear-gradient' || backgroundFill === 'radial-gradient') {\n    this.gradientFillStyle(context, ele, backgroundFill, opacity);\n  } else {\n    var backgroundColor = ele.pstyle('background-color').value;\n    this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity);\n  }\n};\nCRp$5.gradientStrokeStyle = function (context, ele, fill, opacity) {\n  var gradientStyle = this.createGradientStyleFor(context, 'line', ele, fill, opacity);\n  if (!gradientStyle) return null; // error\n  context.strokeStyle = gradientStyle;\n};\nCRp$5.colorStrokeStyle = function (context, r, g, b, a) {\n  context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n  // turn off for now, seems context does its own caching\n\n  // var cache = this.paintCache(context);\n\n  // var strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n\n  // if( cache.strokeStyle !== strokeStyle ){\n  //   context.strokeStyle = cache.strokeStyle = strokeStyle;\n  // }\n};\nCRp$5.eleStrokeStyle = function (context, ele, opacity) {\n  var lineFill = ele.pstyle('line-fill').value;\n  if (lineFill === 'linear-gradient' || lineFill === 'radial-gradient') {\n    this.gradientStrokeStyle(context, ele, lineFill, opacity);\n  } else {\n    var lineColor = ele.pstyle('line-color').value;\n    this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity);\n  }\n};\n\n// Resize canvas\nCRp$5.matchCanvasSize = function (container) {\n  var r = this;\n  var data = r.data;\n  var bb = r.findContainerClientCoords();\n  var width = bb[2];\n  var height = bb[3];\n  var pixelRatio = r.getPixelRatio();\n  var mbPxRatio = r.motionBlurPxRatio;\n  if (container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE] || container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]) {\n    pixelRatio = mbPxRatio;\n  }\n  var canvasWidth = width * pixelRatio;\n  var canvasHeight = height * pixelRatio;\n  var canvas;\n  if (canvasWidth === r.canvasWidth && canvasHeight === r.canvasHeight) {\n    return; // save cycles if same\n  }\n  r.fontCaches = null; // resizing resets the style\n\n  var canvasContainer = data.canvasContainer;\n  canvasContainer.style.width = width + 'px';\n  canvasContainer.style.height = height + 'px';\n  for (var i = 0; i < r.CANVAS_LAYERS; i++) {\n    canvas = data.canvases[i];\n    canvas.width = canvasWidth;\n    canvas.height = canvasHeight;\n    canvas.style.width = width + 'px';\n    canvas.style.height = height + 'px';\n  }\n  for (var i = 0; i < r.BUFFER_COUNT; i++) {\n    canvas = data.bufferCanvases[i];\n    canvas.width = canvasWidth;\n    canvas.height = canvasHeight;\n    canvas.style.width = width + 'px';\n    canvas.style.height = height + 'px';\n  }\n  r.textureMult = 1;\n  if (pixelRatio <= 1) {\n    canvas = data.bufferCanvases[r.TEXTURE_BUFFER];\n    r.textureMult = 2;\n    canvas.width = canvasWidth * r.textureMult;\n    canvas.height = canvasHeight * r.textureMult;\n  }\n  r.canvasWidth = canvasWidth;\n  r.canvasHeight = canvasHeight;\n  r.pixelRatio = pixelRatio;\n};\nCRp$5.renderTo = function (cxt, zoom, pan, pxRatio) {\n  this.render({\n    forcedContext: cxt,\n    forcedZoom: zoom,\n    forcedPan: pan,\n    drawAllLayers: true,\n    forcedPxRatio: pxRatio\n  });\n};\nCRp$5.clearCanvas = function () {\n  var r = this;\n  var data = r.data;\n  function clear(context) {\n    context.clearRect(0, 0, r.canvasWidth, r.canvasHeight);\n  }\n  clear(data.contexts[r.NODE]);\n  clear(data.contexts[r.DRAG]);\n};\nCRp$5.render = function (options) {\n  var r = this;\n  options = options || staticEmptyObject();\n  var cy = r.cy;\n  var forcedContext = options.forcedContext;\n  var drawAllLayers = options.drawAllLayers;\n  var drawOnlyNodeLayer = options.drawOnlyNodeLayer;\n  var forcedZoom = options.forcedZoom;\n  var forcedPan = options.forcedPan;\n  var pixelRatio = options.forcedPxRatio === undefined ? this.getPixelRatio() : options.forcedPxRatio;\n  var data = r.data;\n  var needDraw = data.canvasNeedsRedraw;\n  var textureDraw = r.textureOnViewport && !forcedContext && (r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming);\n  var motionBlur = options.motionBlur !== undefined ? options.motionBlur : r.motionBlur;\n  var mbPxRatio = r.motionBlurPxRatio;\n  var hasCompoundNodes = cy.hasCompoundNodes();\n  var inNodeDragGesture = r.hoverData.draggingEles;\n  var inBoxSelection = r.hoverData.selecting || r.touchData.selecting ? true : false;\n  motionBlur = motionBlur && !forcedContext && r.motionBlurEnabled && !inBoxSelection;\n  var motionBlurFadeEffect = motionBlur;\n  if (!forcedContext) {\n    if (r.prevPxRatio !== pixelRatio) {\n      r.invalidateContainerClientCoordsCache();\n      r.matchCanvasSize(r.container);\n      r.redrawHint('eles', true);\n      r.redrawHint('drag', true);\n    }\n    r.prevPxRatio = pixelRatio;\n  }\n  if (!forcedContext && r.motionBlurTimeout) {\n    clearTimeout(r.motionBlurTimeout);\n  }\n  if (motionBlur) {\n    if (r.mbFrames == null) {\n      r.mbFrames = 0;\n    }\n    r.mbFrames++;\n    if (r.mbFrames < 3) {\n      // need several frames before even high quality motionblur\n      motionBlurFadeEffect = false;\n    }\n\n    // go to lower quality blurry frames when several m/b frames have been rendered (avoids flashing)\n    if (r.mbFrames > r.minMbLowQualFrames) {\n      //r.fullQualityMb = false;\n      r.motionBlurPxRatio = r.mbPxRBlurry;\n    }\n  }\n  if (r.clearingMotionBlur) {\n    r.motionBlurPxRatio = 1;\n  }\n\n  // b/c drawToContext() may be async w.r.t. redraw(), keep track of last texture frame\n  // because a rogue async texture frame would clear needDraw\n  if (r.textureDrawLastFrame && !textureDraw) {\n    needDraw[r.NODE] = true;\n    needDraw[r.SELECT_BOX] = true;\n  }\n  var style = cy.style();\n  var zoom = cy.zoom();\n  var effectiveZoom = forcedZoom !== undefined ? forcedZoom : zoom;\n  var pan = cy.pan();\n  var effectivePan = {\n    x: pan.x,\n    y: pan.y\n  };\n  var vp = {\n    zoom: zoom,\n    pan: {\n      x: pan.x,\n      y: pan.y\n    }\n  };\n  var prevVp = r.prevViewport;\n  var viewportIsDiff = prevVp === undefined || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y;\n\n  // we want the low quality motionblur only when the viewport is being manipulated etc (where it's not noticed)\n  if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes)) {\n    r.motionBlurPxRatio = 1;\n  }\n  if (forcedPan) {\n    effectivePan = forcedPan;\n  }\n\n  // apply pixel ratio\n\n  effectiveZoom *= pixelRatio;\n  effectivePan.x *= pixelRatio;\n  effectivePan.y *= pixelRatio;\n  var eles = r.getCachedZSortedEles();\n  function mbclear(context, x, y, w, h) {\n    var gco = context.globalCompositeOperation;\n    context.globalCompositeOperation = 'destination-out';\n    r.colorFillStyle(context, 255, 255, 255, r.motionBlurTransparency);\n    context.fillRect(x, y, w, h);\n    context.globalCompositeOperation = gco;\n  }\n  function setContextTransform(context, clear) {\n    var ePan, eZoom, w, h;\n    if (!r.clearingMotionBlur && (context === data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] || context === data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG])) {\n      ePan = {\n        x: pan.x * mbPxRatio,\n        y: pan.y * mbPxRatio\n      };\n      eZoom = zoom * mbPxRatio;\n      w = r.canvasWidth * mbPxRatio;\n      h = r.canvasHeight * mbPxRatio;\n    } else {\n      ePan = effectivePan;\n      eZoom = effectiveZoom;\n      w = r.canvasWidth;\n      h = r.canvasHeight;\n    }\n    context.setTransform(1, 0, 0, 1, 0, 0);\n    if (clear === 'motionBlur') {\n      mbclear(context, 0, 0, w, h);\n    } else if (!forcedContext && (clear === undefined || clear)) {\n      context.clearRect(0, 0, w, h);\n    }\n    if (!drawAllLayers) {\n      context.translate(ePan.x, ePan.y);\n      context.scale(eZoom, eZoom);\n    }\n    if (forcedPan) {\n      context.translate(forcedPan.x, forcedPan.y);\n    }\n    if (forcedZoom) {\n      context.scale(forcedZoom, forcedZoom);\n    }\n  }\n  if (!textureDraw) {\n    r.textureDrawLastFrame = false;\n  }\n  if (textureDraw) {\n    r.textureDrawLastFrame = true;\n    if (!r.textureCache) {\n      r.textureCache = {};\n      r.textureCache.bb = cy.mutableElements().boundingBox();\n      r.textureCache.texture = r.data.bufferCanvases[r.TEXTURE_BUFFER];\n      var cxt = r.data.bufferContexts[r.TEXTURE_BUFFER];\n      cxt.setTransform(1, 0, 0, 1, 0, 0);\n      cxt.clearRect(0, 0, r.canvasWidth * r.textureMult, r.canvasHeight * r.textureMult);\n      r.render({\n        forcedContext: cxt,\n        drawOnlyNodeLayer: true,\n        forcedPxRatio: pixelRatio * r.textureMult\n      });\n      var vp = r.textureCache.viewport = {\n        zoom: cy.zoom(),\n        pan: cy.pan(),\n        width: r.canvasWidth,\n        height: r.canvasHeight\n      };\n      vp.mpan = {\n        x: (0 - vp.pan.x) / vp.zoom,\n        y: (0 - vp.pan.y) / vp.zoom\n      };\n    }\n    needDraw[r.DRAG] = false;\n    needDraw[r.NODE] = false;\n    var context = data.contexts[r.NODE];\n    var texture = r.textureCache.texture;\n    var vp = r.textureCache.viewport;\n    context.setTransform(1, 0, 0, 1, 0, 0);\n    if (motionBlur) {\n      mbclear(context, 0, 0, vp.width, vp.height);\n    } else {\n      context.clearRect(0, 0, vp.width, vp.height);\n    }\n    var outsideBgColor = style.core('outside-texture-bg-color').value;\n    var outsideBgOpacity = style.core('outside-texture-bg-opacity').value;\n    r.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity);\n    context.fillRect(0, 0, vp.width, vp.height);\n    var zoom = cy.zoom();\n    setContextTransform(context, false);\n    context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);\n    context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);\n  } else if (r.textureOnViewport && !forcedContext) {\n    // clear the cache since we don't need it\n    r.textureCache = null;\n  }\n  var extent = cy.extent();\n  var vpManip = r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming || r.hoverData.draggingEles || r.cy.animated();\n  var hideEdges = r.hideEdgesOnViewport && vpManip;\n  var needMbClear = [];\n  needMbClear[r.NODE] = !needDraw[r.NODE] && motionBlur && !r.clearedForMotionBlur[r.NODE] || r.clearingMotionBlur;\n  if (needMbClear[r.NODE]) {\n    r.clearedForMotionBlur[r.NODE] = true;\n  }\n  needMbClear[r.DRAG] = !needDraw[r.DRAG] && motionBlur && !r.clearedForMotionBlur[r.DRAG] || r.clearingMotionBlur;\n  if (needMbClear[r.DRAG]) {\n    r.clearedForMotionBlur[r.DRAG] = true;\n  }\n  if (needDraw[r.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r.NODE]) {\n    var useBuffer = motionBlur && !needMbClear[r.NODE] && mbPxRatio !== 1;\n    var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] : data.contexts[r.NODE]);\n    var clear = motionBlur && !useBuffer ? 'motionBlur' : undefined;\n    setContextTransform(context, clear);\n    if (hideEdges) {\n      r.drawCachedNodes(context, eles.nondrag, pixelRatio, extent);\n    } else {\n      r.drawLayeredElements(context, eles.nondrag, pixelRatio, extent);\n    }\n    if (r.debug) {\n      r.drawDebugPoints(context, eles.nondrag);\n    }\n    if (!drawAllLayers && !motionBlur) {\n      needDraw[r.NODE] = false;\n    }\n  }\n  if (!drawOnlyNodeLayer && (needDraw[r.DRAG] || drawAllLayers || needMbClear[r.DRAG])) {\n    var useBuffer = motionBlur && !needMbClear[r.DRAG] && mbPxRatio !== 1;\n    var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG] : data.contexts[r.DRAG]);\n    setContextTransform(context, motionBlur && !useBuffer ? 'motionBlur' : undefined);\n    if (hideEdges) {\n      r.drawCachedNodes(context, eles.drag, pixelRatio, extent);\n    } else {\n      r.drawCachedElements(context, eles.drag, pixelRatio, extent);\n    }\n    if (r.debug) {\n      r.drawDebugPoints(context, eles.drag);\n    }\n    if (!drawAllLayers && !motionBlur) {\n      needDraw[r.DRAG] = false;\n    }\n  }\n  this.drawSelectionRectangle(options, setContextTransform);\n\n  // motionblur: blit rendered blurry frames\n  if (motionBlur && mbPxRatio !== 1) {\n    var cxtNode = data.contexts[r.NODE];\n    var txtNode = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE];\n    var cxtDrag = data.contexts[r.DRAG];\n    var txtDrag = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG];\n    var drawMotionBlur = function drawMotionBlur(cxt, txt, needClear) {\n      cxt.setTransform(1, 0, 0, 1, 0, 0);\n      if (needClear || !motionBlurFadeEffect) {\n        cxt.clearRect(0, 0, r.canvasWidth, r.canvasHeight);\n      } else {\n        mbclear(cxt, 0, 0, r.canvasWidth, r.canvasHeight);\n      }\n      var pxr = mbPxRatio;\n      cxt.drawImage(txt,\n      // img\n      0, 0,\n      // sx, sy\n      r.canvasWidth * pxr, r.canvasHeight * pxr,\n      // sw, sh\n      0, 0,\n      // x, y\n      r.canvasWidth, r.canvasHeight // w, h\n      );\n    };\n    if (needDraw[r.NODE] || needMbClear[r.NODE]) {\n      drawMotionBlur(cxtNode, txtNode, needMbClear[r.NODE]);\n      needDraw[r.NODE] = false;\n    }\n    if (needDraw[r.DRAG] || needMbClear[r.DRAG]) {\n      drawMotionBlur(cxtDrag, txtDrag, needMbClear[r.DRAG]);\n      needDraw[r.DRAG] = false;\n    }\n  }\n  r.prevViewport = vp;\n  if (r.clearingMotionBlur) {\n    r.clearingMotionBlur = false;\n    r.motionBlurCleared = true;\n    r.motionBlur = true;\n  }\n  if (motionBlur) {\n    r.motionBlurTimeout = setTimeout(function () {\n      r.motionBlurTimeout = null;\n      r.clearedForMotionBlur[r.NODE] = false;\n      r.clearedForMotionBlur[r.DRAG] = false;\n      r.motionBlur = false;\n      r.clearingMotionBlur = !textureDraw;\n      r.mbFrames = 0;\n      needDraw[r.NODE] = true;\n      needDraw[r.DRAG] = true;\n      r.redraw();\n    }, motionBlurDelay);\n  }\n  if (!forcedContext) {\n    cy.emit('render');\n  }\n};\nvar fpsHeight;\nCRp$5.drawSelectionRectangle = function (options, setContextTransform) {\n  var r = this;\n  var cy = r.cy;\n  var data = r.data;\n  var style = cy.style();\n  var drawOnlyNodeLayer = options.drawOnlyNodeLayer;\n  var drawAllLayers = options.drawAllLayers;\n  var needDraw = data.canvasNeedsRedraw;\n  var forcedContext = options.forcedContext;\n  if (r.showFps || !drawOnlyNodeLayer && needDraw[r.SELECT_BOX] && !drawAllLayers) {\n    var context = forcedContext || data.contexts[r.SELECT_BOX];\n    setContextTransform(context);\n    if (r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting)) {\n      var zoom = r.cy.zoom();\n      var borderWidth = style.core('selection-box-border-width').value / zoom;\n      context.lineWidth = borderWidth;\n      context.fillStyle = 'rgba(' + style.core('selection-box-color').value[0] + ',' + style.core('selection-box-color').value[1] + ',' + style.core('selection-box-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';\n      context.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);\n      if (borderWidth > 0) {\n        context.strokeStyle = 'rgba(' + style.core('selection-box-border-color').value[0] + ',' + style.core('selection-box-border-color').value[1] + ',' + style.core('selection-box-border-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';\n        context.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);\n      }\n    }\n    if (data.bgActivePosistion && !r.hoverData.selecting) {\n      var zoom = r.cy.zoom();\n      var pos = data.bgActivePosistion;\n      context.fillStyle = 'rgba(' + style.core('active-bg-color').value[0] + ',' + style.core('active-bg-color').value[1] + ',' + style.core('active-bg-color').value[2] + ',' + style.core('active-bg-opacity').value + ')';\n      context.beginPath();\n      context.arc(pos.x, pos.y, style.core('active-bg-size').pfValue / zoom, 0, 2 * Math.PI);\n      context.fill();\n    }\n    var timeToRender = r.lastRedrawTime;\n    if (r.showFps && timeToRender) {\n      timeToRender = Math.round(timeToRender);\n      var fps = Math.round(1000 / timeToRender);\n      var text = '1 frame = ' + timeToRender + ' ms = ' + fps + ' fps';\n      context.setTransform(1, 0, 0, 1, 0, 0);\n      context.fillStyle = 'rgba(255, 0, 0, 0.75)';\n      context.strokeStyle = 'rgba(255, 0, 0, 0.75)';\n      // context.lineWidth = 1;\n      context.font = '30px Arial';\n      if (!fpsHeight) {\n        var dims = context.measureText(text);\n        fpsHeight = dims.actualBoundingBoxAscent;\n      }\n      context.fillText(text, 0, fpsHeight);\n      var maxFps = 60;\n      context.strokeRect(0, fpsHeight + 10, 250, 20);\n      context.fillRect(0, fpsHeight + 10, 250 * Math.min(fps / maxFps, 1), 20);\n    }\n    if (!drawAllLayers) {\n      needDraw[r.SELECT_BOX] = false;\n    }\n  }\n};\n\n/**\n * Notes:\n * - All colors have premultiplied alpha. Very important for textues and \n *   blending to work correctly.\n */\n\nfunction compileShader(gl, type, source) {\n  var shader = gl.createShader(type);\n  gl.shaderSource(shader, source);\n  gl.compileShader(shader);\n  if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n    throw new Error(gl.getShaderInfoLog(shader));\n  }\n  // console.log(gl.getShaderInfoLog(shader));\n  return shader;\n}\nfunction createProgram(gl, vertexSource, fragementSource) {\n  var vertexShader = compileShader(gl, gl.VERTEX_SHADER, vertexSource);\n  var fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, fragementSource);\n  var program = gl.createProgram();\n  gl.attachShader(program, vertexShader);\n  gl.attachShader(program, fragmentShader);\n  gl.linkProgram(program);\n  if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n    throw new Error('Could not initialize shaders');\n  }\n  return program;\n}\n\n/**\n * Creates an offscren canvas with a 2D context, for the\n * canvas renderer to use for drawing textures.\n */\nfunction createTextureCanvas(r, width, height) {\n  if (height === undefined) {\n    height = width;\n  }\n  var canvas = r.makeOffscreenCanvas(width, height);\n  var ctx = canvas.context = canvas.getContext('2d');\n  canvas.clear = function () {\n    return ctx.clearRect(0, 0, canvas.width, canvas.height);\n  };\n  canvas.clear();\n  return canvas;\n}\n\n/**\n * Returns the current pan & zoom values, scaled by the pixel ratio.\n */\nfunction getEffectivePanZoom(r) {\n  var pixelRatio = r.pixelRatio;\n  var zoom = r.cy.zoom();\n  var pan = r.cy.pan();\n  return {\n    zoom: zoom * pixelRatio,\n    pan: {\n      x: pan.x * pixelRatio,\n      y: pan.y * pixelRatio\n    }\n  };\n}\n\n/**\n * Returns the zoom value, scaled by the pixel ratio.\n */\nfunction getEffectiveZoom(r) {\n  var pixelRatio = r.pixelRatio;\n  var zoom = r.cy.zoom();\n  return zoom * pixelRatio;\n}\nfunction modelToRenderedPosition(r, pan, zoom, x, y) {\n  var rx = x * zoom + pan.x;\n  var ry = y * zoom + pan.y;\n  ry = Math.round(r.canvasHeight - ry); // adjust for webgl\n  return [rx, ry];\n}\nfunction isSimpleShape(node, renderTarget) {\n  // the actual shape is checked in ElementDrawingWebGL._getVertTypeForShape()\n  // no need to check it twice, this just checks other visual properties\n  if (renderTarget.picking) {\n    // We don't care about the border or background style for picking\n    return true;\n  } else {\n    if (node.pstyle('background-fill').value !== 'solid') return false;\n    if (node.pstyle('background-image').strValue !== 'none') return false;\n    if (node.pstyle('border-width').value === 0) return true;\n    if (node.pstyle('border-opacity').value === 0) return true;\n    // we have a border but it must be simple\n    if (node.pstyle('border-style').value !== 'solid') return false;\n    // TODO ignoring 'border-cap', 'border-join' and 'border-position' for now\n    return true;\n  }\n}\nfunction arrayEqual(a1, a2) {\n  if (a1.length !== a2.length) {\n    return false;\n  }\n  for (var i = 0; i < a1.length; i++) {\n    if (a1[i] !== a2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Takes color & opacity style values and converts them to WebGL format. \n * Alpha is premultiplied.\n */\nfunction toWebGLColor(color, opacity, outArray) {\n  var r = color[0] / 255;\n  var g = color[1] / 255;\n  var b = color[2] / 255;\n  var a = opacity;\n  var arr = outArray || new Array(4);\n  arr[0] = r * a;\n  arr[1] = g * a;\n  arr[2] = b * a;\n  arr[3] = a;\n  return arr;\n}\nfunction indexToVec4(index, outArray) {\n  var arr = outArray || new Array(4);\n  arr[0] = (index >> 0 & 0xFF) / 0xFF;\n  arr[1] = (index >> 8 & 0xFF) / 0xFF;\n  arr[2] = (index >> 16 & 0xFF) / 0xFF;\n  arr[3] = (index >> 24 & 0xFF) / 0xFF;\n  return arr;\n}\nfunction vec4ToIndex(vec4) {\n  return vec4[0] + (vec4[1] << 8) + (vec4[2] << 16) + (vec4[3] << 24);\n}\nfunction createTexture(gl, debugID) {\n  var texture = gl.createTexture();\n  texture.buffer = function (offscreenCanvas) {\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST);\n\n    // very important, this tells webgl to premultiply colors by the alpha channel\n    gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, offscreenCanvas);\n    gl.generateMipmap(gl.TEXTURE_2D);\n    gl.bindTexture(gl.TEXTURE_2D, null);\n  };\n  texture.deleteTexture = function () {\n    gl.deleteTexture(texture);\n  };\n  return texture;\n}\nfunction getTypeInfo(gl, glslType) {\n  switch (glslType) {\n    case 'float':\n      return [1, gl.FLOAT, 4];\n    case 'vec2':\n      return [2, gl.FLOAT, 4];\n    case 'vec3':\n      return [3, gl.FLOAT, 4];\n    case 'vec4':\n      return [4, gl.FLOAT, 4];\n    case 'int':\n      return [1, gl.INT, 4];\n    case 'ivec2':\n      return [2, gl.INT, 4];\n  }\n}\nfunction createTypedArray(gl, glType, dataOrSize) {\n  switch (glType) {\n    case gl.FLOAT:\n      return new Float32Array(dataOrSize);\n    case gl.INT:\n      return new Int32Array(dataOrSize);\n  }\n}\nfunction createTypedArrayView(gl, glType, array, stride, size, i) {\n  switch (glType) {\n    case gl.FLOAT:\n      return new Float32Array(array.buffer, i * stride, size);\n    case gl.INT:\n      return new Int32Array(array.buffer, i * stride, size);\n  }\n}\n\n/** @param {WebGLRenderingContext} gl */\nfunction createBufferStaticDraw(gl, type, attributeLoc, dataArray) {\n  var _getTypeInfo = getTypeInfo(gl, type),\n    _getTypeInfo2 = _slicedToArray(_getTypeInfo, 2),\n    size = _getTypeInfo2[0],\n    glType = _getTypeInfo2[1];\n  var data = createTypedArray(gl, glType, dataArray);\n  var buffer = gl.createBuffer();\n  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n  gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);\n  if (glType === gl.FLOAT) {\n    gl.vertexAttribPointer(attributeLoc, size, glType, false, 0, 0);\n  } else if (glType === gl.INT) {\n    gl.vertexAttribIPointer(attributeLoc, size, glType, 0, 0);\n  }\n  gl.enableVertexAttribArray(attributeLoc);\n  gl.bindBuffer(gl.ARRAY_BUFFER, null);\n  return buffer;\n}\n\n/** \n * Creates a float buffer with gl.DYNAMIC_DRAW.\n * The returned buffer object contains functions to easily set instance data and buffer the data before a draw call.\n * @param {WebGLRenderingContext} gl \n */\nfunction createBufferDynamicDraw(gl, instances, type, attributeLoc) {\n  var _getTypeInfo3 = getTypeInfo(gl, type),\n    _getTypeInfo4 = _slicedToArray(_getTypeInfo3, 3),\n    size = _getTypeInfo4[0],\n    glType = _getTypeInfo4[1],\n    bytes = _getTypeInfo4[2];\n  var dataArray = createTypedArray(gl, glType, instances * size);\n  var stride = size * bytes;\n  var buffer = gl.createBuffer();\n  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n  gl.bufferData(gl.ARRAY_BUFFER, instances * stride, gl.DYNAMIC_DRAW);\n  gl.enableVertexAttribArray(attributeLoc);\n  if (glType === gl.FLOAT) {\n    gl.vertexAttribPointer(attributeLoc, size, glType, false, stride, 0);\n  } else if (glType === gl.INT) {\n    gl.vertexAttribIPointer(attributeLoc, size, glType, stride, 0);\n  }\n  gl.vertexAttribDivisor(attributeLoc, 1);\n  gl.bindBuffer(gl.ARRAY_BUFFER, null);\n\n  // use array views to set values directly into the buffer array\n  var views = new Array(instances);\n  for (var i = 0; i < instances; i++) {\n    views[i] = createTypedArrayView(gl, glType, dataArray, stride, size, i);\n  }\n  buffer.dataArray = dataArray;\n  buffer.stride = stride;\n  buffer.size = size;\n  buffer.getView = function (i) {\n    return views[i];\n  };\n  buffer.setPoint = function (i, x, y) {\n    var view = views[i];\n    view[0] = x;\n    view[1] = y;\n  };\n  buffer.bufferSubData = function (count) {\n    gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n    if (count) {\n      gl.bufferSubData(gl.ARRAY_BUFFER, 0, dataArray, 0, count * size);\n    } else {\n      gl.bufferSubData(gl.ARRAY_BUFFER, 0, dataArray);\n    }\n  };\n  return buffer;\n}\n\n/** \n * Creates a buffer of 3x3 matrix data for use as attribute data.\n * @param {WebGLRenderingContext} gl \n */\nfunction create3x3MatrixBufferDynamicDraw(gl, instances, attributeLoc) {\n  var matrixSize = 9; // 3x3 matrix\n  var matrixData = new Float32Array(instances * matrixSize);\n\n  // use matrix views to set values directly into the matrixData array\n  var matrixViews = new Array(instances);\n  for (var i = 0; i < instances; i++) {\n    var byteOffset = i * matrixSize * 4; // 4 bytes per float\n    matrixViews[i] = new Float32Array(matrixData.buffer, byteOffset, matrixSize); // array view\n  }\n  var buffer = gl.createBuffer();\n  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n  gl.bufferData(gl.ARRAY_BUFFER, matrixData.byteLength, gl.DYNAMIC_DRAW);\n\n  // each row of the matrix needs to be a separate attribute\n  for (var _i = 0; _i < 3; _i++) {\n    var loc = attributeLoc + _i;\n    gl.enableVertexAttribArray(loc);\n    gl.vertexAttribPointer(loc, 3, gl.FLOAT, false, 3 * 12, _i * 12);\n    gl.vertexAttribDivisor(loc, 1);\n  }\n  gl.bindBuffer(gl.ARRAY_BUFFER, null);\n  buffer.getMatrixView = function (i) {\n    return matrixViews[i];\n  };\n\n  // TODO this is too slow, use getMatrixView and pass the view directly to the glmatrix library\n  buffer.setData = function (matrix, i) {\n    matrixViews[i].set(matrix, 0);\n  };\n  buffer.bufferSubData = function () {\n    gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n    gl.bufferSubData(gl.ARRAY_BUFFER, 0, matrixData);\n  };\n  return buffer;\n}\n\n/** \n * Creates a Frame Buffer to use for offscreen rendering.\n * @param {WebGLRenderingContext} gl \n */\nfunction createPickingFrameBuffer(gl) {\n  // Create and bind the framebuffer\n  var fb = gl.createFramebuffer();\n  gl.bindFramebuffer(gl.FRAMEBUFFER, fb);\n\n  // Create a texture to render to\n  var targetTexture = gl.createTexture();\n  gl.bindTexture(gl.TEXTURE_2D, targetTexture);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n  // attach the texture as the first color attachment\n  gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, targetTexture, 0);\n  gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n  fb.setFramebufferAttachmentSizes = function (width, height) {\n    gl.bindTexture(gl.TEXTURE_2D, targetTexture);\n    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n  };\n  return fb;\n}\n\n/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nvar ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nif (!Math.hypot) Math.hypot = function () {\n  var y = 0,\n      i = arguments.length;\n\n  while (i--) {\n    y += arguments[i] * arguments[i];\n  }\n\n  return Math.sqrt(y);\n};\n\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nfunction create() {\n  var out = new ARRAY_TYPE(9);\n\n  if (ARRAY_TYPE != Float32Array) {\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[5] = 0;\n    out[6] = 0;\n    out[7] = 0;\n  }\n\n  out[0] = 1;\n  out[4] = 1;\n  out[8] = 1;\n  return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nfunction identity(out) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 1;\n  out[5] = 0;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 1;\n  return out;\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction multiply(out, a, b) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2];\n  var a10 = a[3],\n      a11 = a[4],\n      a12 = a[5];\n  var a20 = a[6],\n      a21 = a[7],\n      a22 = a[8];\n  var b00 = b[0],\n      b01 = b[1],\n      b02 = b[2];\n  var b10 = b[3],\n      b11 = b[4],\n      b12 = b[5];\n  var b20 = b[6],\n      b21 = b[7],\n      b22 = b[8];\n  out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n  out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n  out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n  out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n  out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n  out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n  out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n  out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n  out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n  return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nfunction translate(out, a, v) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a10 = a[3],\n      a11 = a[4],\n      a12 = a[5],\n      a20 = a[6],\n      a21 = a[7],\n      a22 = a[8],\n      x = v[0],\n      y = v[1];\n  out[0] = a00;\n  out[1] = a01;\n  out[2] = a02;\n  out[3] = a10;\n  out[4] = a11;\n  out[5] = a12;\n  out[6] = x * a00 + y * a10 + a20;\n  out[7] = x * a01 + y * a11 + a21;\n  out[8] = x * a02 + y * a12 + a22;\n  return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nfunction rotate(out, a, rad) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a10 = a[3],\n      a11 = a[4],\n      a12 = a[5],\n      a20 = a[6],\n      a21 = a[7],\n      a22 = a[8],\n      s = Math.sin(rad),\n      c = Math.cos(rad);\n  out[0] = c * a00 + s * a10;\n  out[1] = c * a01 + s * a11;\n  out[2] = c * a02 + s * a12;\n  out[3] = c * a10 - s * a00;\n  out[4] = c * a11 - s * a01;\n  out[5] = c * a12 - s * a02;\n  out[6] = a20;\n  out[7] = a21;\n  out[8] = a22;\n  return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nfunction scale(out, a, v) {\n  var x = v[0],\n      y = v[1];\n  out[0] = x * a[0];\n  out[1] = x * a[1];\n  out[2] = x * a[2];\n  out[3] = y * a[3];\n  out[4] = y * a[4];\n  out[5] = y * a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nfunction projection(out, width, height) {\n  out[0] = 2 / width;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = -2 / height;\n  out[5] = 0;\n  out[6] = -1;\n  out[7] = 1;\n  out[8] = 1;\n  return out;\n}\n\n// A \"texture atlas\" is a big canvas, and sections of it are used as textures for nodes/labels.\n\n/**\n * A single square texture atlas (also known as a \"sprite sheet\").\n */\nvar Atlas = /*#__PURE__*/function () {\n  function Atlas(r, texSize, texRows, createTextureCanvas) {\n    _classCallCheck(this, Atlas);\n    this.debugID = Math.floor(Math.random() * 10000);\n    this.r = r;\n    this.texSize = texSize;\n    this.texRows = texRows;\n    this.texHeight = Math.floor(texSize / texRows);\n    this.enableWrapping = true; // hardcoded for now, can be made an option\n\n    this.locked = false; // once an atlas is locked it can no longer be drawn to\n    this.texture = null; // WebGLTexture object\n    this.needsBuffer = true;\n\n    // a \"location\" is an pointer into the atlas with a 'row' and 'x' fields\n    this.freePointer = {\n      x: 0,\n      row: 0\n    };\n\n    // map from the style key to the row/x where the texture starts\n    // if the texture wraps then there's a second location\n    this.keyToLocation = new Map(); // styleKey -> [ location, location ]\n\n    this.canvas = createTextureCanvas(r, texSize, texSize);\n    this.scratch = createTextureCanvas(r, texSize, this.texHeight, 'scratch');\n  }\n  return _createClass(Atlas, [{\n    key: \"lock\",\n    value: function lock() {\n      this.locked = true;\n    }\n  }, {\n    key: \"getKeys\",\n    value: function getKeys() {\n      return new Set(this.keyToLocation.keys());\n    }\n  }, {\n    key: \"getScale\",\n    value: function getScale(_ref) {\n      var w = _ref.w,\n        h = _ref.h;\n      var texHeight = this.texHeight,\n        maxTexWidth = this.texSize;\n      // try to fit to the height of a row\n      var scale = texHeight / h; // TODO what about pixelRatio?\n      var texW = w * scale;\n      var texH = h * scale;\n      // if the scaled width is too wide then scale to fit max width instead\n      if (texW > maxTexWidth) {\n        scale = maxTexWidth / w;\n        texW = w * scale;\n        texH = h * scale;\n      }\n      return {\n        scale: scale,\n        texW: texW,\n        texH: texH\n      };\n    }\n  }, {\n    key: \"draw\",\n    value: function draw(key, bb, doDrawing) {\n      var _this = this;\n      if (this.locked) throw new Error('can\\'t draw, atlas is locked');\n      var texSize = this.texSize,\n        texRows = this.texRows,\n        texHeight = this.texHeight;\n      var _this$getScale = this.getScale(bb),\n        scale = _this$getScale.scale,\n        texW = _this$getScale.texW,\n        texH = _this$getScale.texH;\n      var drawAt = function drawAt(location, canvas) {\n        if (doDrawing && canvas) {\n          var context = canvas.context;\n          var x = location.x,\n            row = location.row;\n          var xOffset = x;\n          var yOffset = texHeight * row;\n          context.save();\n          context.translate(xOffset, yOffset);\n          context.scale(scale, scale);\n          doDrawing(context, bb);\n          context.restore();\n        }\n      };\n      var locations = [null, null];\n      var drawNormal = function drawNormal() {\n        // don't need to wrap, draw directly on the canvas\n        drawAt(_this.freePointer, _this.canvas);\n        locations[0] = {\n          x: _this.freePointer.x,\n          y: _this.freePointer.row * texHeight,\n          w: texW,\n          h: texH\n        };\n        locations[1] = {\n          // create a second location with a width of 0, for convenience\n          x: _this.freePointer.x + texW,\n          y: _this.freePointer.row * texHeight,\n          w: 0,\n          h: texH\n        };\n\n        // move the pointer to the end of the texture\n        _this.freePointer.x += texW;\n        if (_this.freePointer.x == texSize) {\n          _this.freePointer.x = 0;\n          _this.freePointer.row++;\n        }\n      };\n      var drawWrapped = function drawWrapped() {\n        var scratch = _this.scratch,\n          canvas = _this.canvas;\n\n        // Draw to the scratch canvas\n        scratch.clear();\n        drawAt({\n          x: 0,\n          row: 0\n        }, scratch);\n        var firstTexW = texSize - _this.freePointer.x;\n        var secondTexW = texW - firstTexW;\n        var h = texHeight;\n        {\n          // copy first part of scratch to the first texture\n          var dx = _this.freePointer.x;\n          var dy = _this.freePointer.row * texHeight;\n          var w = firstTexW;\n          canvas.context.drawImage(scratch, 0, 0, w, h, dx, dy, w, h);\n          locations[0] = {\n            x: dx,\n            y: dy,\n            w: w,\n            h: texH\n          };\n        }\n        {\n          // copy second part of scratch to the second texture\n          var sx = firstTexW;\n          var _dy = (_this.freePointer.row + 1) * texHeight;\n          var _w = secondTexW;\n          if (canvas) {\n            canvas.context.drawImage(scratch, sx, 0, _w, h, 0, _dy, _w, h);\n          }\n          locations[1] = {\n            x: 0,\n            y: _dy,\n            w: _w,\n            h: texH\n          };\n        }\n        _this.freePointer.x = secondTexW;\n        _this.freePointer.row++;\n      };\n      var moveToStartOfNextRow = function moveToStartOfNextRow() {\n        _this.freePointer.x = 0;\n        _this.freePointer.row++;\n      };\n      if (this.freePointer.x + texW <= texSize) {\n        // There's enough space in the current row\n        drawNormal();\n      } else if (this.freePointer.row >= texRows - 1) {\n        // Need to move to the next row, but there are no more rows, atlas is full.\n        return false;\n      } else if (this.freePointer.x === texSize) {\n        // happen to be right at end of current row\n        moveToStartOfNextRow();\n        drawNormal();\n      } else if (this.enableWrapping) {\n        // draw part of the texture to the end of the curent row, then wrap to the next row\n        drawWrapped();\n      } else {\n        // move to the start of the next row, then draw normally\n        moveToStartOfNextRow();\n        drawNormal();\n      }\n      this.keyToLocation.set(key, locations);\n      this.needsBuffer = true;\n      return locations;\n    }\n  }, {\n    key: \"getOffsets\",\n    value: function getOffsets(key) {\n      return this.keyToLocation.get(key);\n    }\n  }, {\n    key: \"isEmpty\",\n    value: function isEmpty() {\n      return this.freePointer.x === 0 && this.freePointer.row === 0;\n    }\n  }, {\n    key: \"canFit\",\n    value: function canFit(bb) {\n      if (this.locked) return false;\n      var texSize = this.texSize,\n        texRows = this.texRows;\n      var _this$getScale2 = this.getScale(bb),\n        texW = _this$getScale2.texW;\n      if (this.freePointer.x + texW > texSize) {\n        // need to wrap\n        return this.freePointer.row < texRows - 1; // return true if there's a row to wrap to\n      }\n      return true;\n    }\n\n    // called on every frame\n  }, {\n    key: \"bufferIfNeeded\",\n    value: function bufferIfNeeded(gl) {\n      if (!this.texture) {\n        this.texture = createTexture(gl, this.debugID);\n      }\n      if (this.needsBuffer) {\n        this.texture.buffer(this.canvas);\n        this.needsBuffer = false;\n        if (this.locked) {\n          this.canvas = null;\n          this.scratch = null;\n        }\n      }\n    }\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      if (this.texture) {\n        this.texture.deleteTexture();\n        this.texture = null;\n      }\n      this.canvas = null;\n      this.scratch = null;\n      this.locked = true;\n    }\n  }]);\n}();\n\n/**\n * A collection of texture atlases, all of the same \"render type\". \n * ('node-body' is an example of a render type.)\n * An AtlasCollection can also be notified when a texture is no longer needed, \n * and it can garbage collect the unused textures.\n */\nvar AtlasCollection = /*#__PURE__*/function () {\n  function AtlasCollection(r, texSize, texRows, createTextureCanvas) {\n    _classCallCheck(this, AtlasCollection);\n    this.r = r;\n    this.texSize = texSize;\n    this.texRows = texRows;\n    this.createTextureCanvas = createTextureCanvas;\n    this.atlases = [];\n    this.styleKeyToAtlas = new Map();\n    this.markedKeys = new Set(); // marked for garbage collection\n  }\n  return _createClass(AtlasCollection, [{\n    key: \"getKeys\",\n    value: function getKeys() {\n      return new Set(this.styleKeyToAtlas.keys());\n    }\n  }, {\n    key: \"_createAtlas\",\n    value: function _createAtlas() {\n      var r = this.r,\n        texSize = this.texSize,\n        texRows = this.texRows,\n        createTextureCanvas = this.createTextureCanvas;\n      return new Atlas(r, texSize, texRows, createTextureCanvas);\n    }\n  }, {\n    key: \"_getScratchCanvas\",\n    value: function _getScratchCanvas() {\n      if (!this.scratch) {\n        var r = this.r,\n          texSize = this.texSize,\n          texRows = this.texRows,\n          createTextureCanvas = this.createTextureCanvas;\n        var texHeight = Math.floor(texSize / texRows);\n        this.scratch = createTextureCanvas(r, texSize, texHeight, 'scratch');\n      }\n      return this.scratch;\n    }\n  }, {\n    key: \"draw\",\n    value: function draw(key, bb, doDrawing) {\n      var atlas = this.styleKeyToAtlas.get(key);\n      if (!atlas) {\n        // check for space at the end of the last atlas\n        atlas = this.atlases[this.atlases.length - 1];\n        if (!atlas || !atlas.canFit(bb)) {\n          if (atlas) atlas.lock();\n          // create a new atlas\n          atlas = this._createAtlas();\n          this.atlases.push(atlas);\n        }\n        atlas.draw(key, bb, doDrawing);\n        this.styleKeyToAtlas.set(key, atlas);\n      }\n      return atlas;\n    }\n  }, {\n    key: \"getAtlas\",\n    value: function getAtlas(key) {\n      return this.styleKeyToAtlas.get(key);\n    }\n  }, {\n    key: \"hasAtlas\",\n    value: function hasAtlas(key) {\n      return this.styleKeyToAtlas.has(key);\n    }\n  }, {\n    key: \"markKeyForGC\",\n    value: function markKeyForGC(key) {\n      this.markedKeys.add(key);\n    }\n  }, {\n    key: \"gc\",\n    value: function gc() {\n      var _this2 = this;\n      var markedKeys = this.markedKeys;\n      if (markedKeys.size === 0) {\n        console.log('nothing to garbage collect');\n        return;\n      }\n      var newAtlases = [];\n      var newStyleKeyToAtlas = new Map();\n      var newAtlas = null;\n      var _iterator = _createForOfIteratorHelper(this.atlases),\n        _step;\n      try {\n        var _loop = function _loop() {\n          var atlas = _step.value;\n          var keys = atlas.getKeys();\n          var keysToCollect = intersection(markedKeys, keys);\n          if (keysToCollect.size === 0) {\n            // this atlas can still be used\n            newAtlases.push(atlas);\n            keys.forEach(function (k) {\n              return newStyleKeyToAtlas.set(k, atlas);\n            });\n            return 1; // continue\n          }\n          if (!newAtlas) {\n            newAtlas = _this2._createAtlas();\n            newAtlases.push(newAtlas);\n          }\n          var _iterator2 = _createForOfIteratorHelper(keys),\n            _step2;\n          try {\n            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n              var key = _step2.value;\n              if (!keysToCollect.has(key)) {\n                var _atlas$getOffsets = atlas.getOffsets(key),\n                  _atlas$getOffsets2 = _slicedToArray(_atlas$getOffsets, 2),\n                  s1 = _atlas$getOffsets2[0],\n                  s2 = _atlas$getOffsets2[1];\n                if (!newAtlas.canFit({\n                  w: s1.w + s2.w,\n                  h: s1.h\n                })) {\n                  newAtlas.lock();\n                  newAtlas = _this2._createAtlas();\n                  newAtlases.push(newAtlas);\n                }\n                if (atlas.canvas) {\n                  // if the texture can't be copied then it will have to be redrawn on the next frame\n                  _this2._copyTextureToNewAtlas(key, atlas, newAtlas);\n                  newStyleKeyToAtlas.set(key, newAtlas);\n                }\n              }\n            }\n          } catch (err) {\n            _iterator2.e(err);\n          } finally {\n            _iterator2.f();\n          }\n          atlas.dispose();\n        };\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          if (_loop()) continue;\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n      this.atlases = newAtlases;\n      this.styleKeyToAtlas = newStyleKeyToAtlas;\n      this.markedKeys = new Set();\n    }\n  }, {\n    key: \"_copyTextureToNewAtlas\",\n    value: function _copyTextureToNewAtlas(key, oldAtlas, newAtlas) {\n      var _oldAtlas$getOffsets = oldAtlas.getOffsets(key),\n        _oldAtlas$getOffsets2 = _slicedToArray(_oldAtlas$getOffsets, 2),\n        s1 = _oldAtlas$getOffsets2[0],\n        s2 = _oldAtlas$getOffsets2[1];\n      if (s2.w === 0) {\n        // the texture does not wrap, draw directly to new atlas\n        newAtlas.draw(key, s1, function (context) {\n          context.drawImage(oldAtlas.canvas, s1.x, s1.y, s1.w, s1.h, 0, 0, s1.w, s1.h);\n        });\n      } else {\n        // the texture wraps, first draw both parts to a scratch canvas\n        var scratch = this._getScratchCanvas();\n        scratch.clear();\n        scratch.context.drawImage(oldAtlas.canvas, s1.x, s1.y, s1.w, s1.h, 0, 0, s1.w, s1.h);\n        scratch.context.drawImage(oldAtlas.canvas, s2.x, s2.y, s2.w, s2.h, s1.w, 0, s2.w, s2.h);\n\n        // now draw the scratch to the new atlas\n        var w = s1.w + s2.w;\n        var h = s1.h;\n        newAtlas.draw(key, {\n          w: w,\n          h: h\n        }, function (context) {\n          context.drawImage(scratch, 0, 0, w, h, 0, 0, w, h // the destination context has already been translated to the correct position\n          );\n        });\n      }\n    }\n  }, {\n    key: \"getCounts\",\n    value: function getCounts() {\n      return {\n        keyCount: this.styleKeyToAtlas.size,\n        atlasCount: new Set(this.styleKeyToAtlas.values()).size\n      };\n    }\n  }]);\n}();\nfunction intersection(set1, set2) {\n  // TODO why no Set.intersection in node 16???\n  if (set1.intersection) return set1.intersection(set2);else return new Set(_toConsumableArray(set1).filter(function (x) {\n    return set2.has(x);\n  }));\n}\n\n/**\n * Used to manage batches of Atlases for drawing nodes and labels.\n * Supports different types of AtlasCollections for different render types,\n * for example 'node-body' and 'node-label' would be different render types.\n * Render types are kept separate because they will likely need to be garbage collected\n * separately and its not entierly guaranteed that their style keys won't collide.\n */\nvar AtlasManager = /*#__PURE__*/function () {\n  function AtlasManager(r, globalOptions) {\n    _classCallCheck(this, AtlasManager);\n    this.r = r;\n    this.globalOptions = globalOptions;\n    this.atlasSize = globalOptions.webglTexSize;\n    this.maxAtlasesPerBatch = globalOptions.webglTexPerBatch;\n    this.renderTypes = new Map(); // renderType:string -> renderTypeOptions\n    this.collections = new Map(); // collectionName:string -> AtlasCollection\n\n    this.typeAndIdToKey = new Map(); // [renderType,id] => Array<style key>\n  }\n  return _createClass(AtlasManager, [{\n    key: \"getAtlasSize\",\n    value: function getAtlasSize() {\n      return this.atlasSize;\n    }\n  }, {\n    key: \"addAtlasCollection\",\n    value: function addAtlasCollection(collectionName, atlasCollectionOptions) {\n      var _this$globalOptions = this.globalOptions,\n        webglTexSize = _this$globalOptions.webglTexSize,\n        createTextureCanvas = _this$globalOptions.createTextureCanvas;\n      var texRows = atlasCollectionOptions.texRows;\n      var cachedCreateTextureCanvas = this._cacheScratchCanvas(createTextureCanvas);\n      var atlasCollection = new AtlasCollection(this.r, webglTexSize, texRows, cachedCreateTextureCanvas);\n      this.collections.set(collectionName, atlasCollection);\n    }\n  }, {\n    key: \"addRenderType\",\n    value: function addRenderType(type, renderTypeOptions) {\n      var collection = renderTypeOptions.collection;\n      if (!this.collections.has(collection)) throw new Error(\"invalid atlas collection name '\".concat(collection, \"'\"));\n      var atlasCollection = this.collections.get(collection);\n      var opts = extend({\n        type: type,\n        atlasCollection: atlasCollection\n      }, renderTypeOptions);\n      this.renderTypes.set(type, opts);\n    }\n  }, {\n    key: \"getRenderTypeOpts\",\n    value: function getRenderTypeOpts(type) {\n      return this.renderTypes.get(type);\n    }\n  }, {\n    key: \"getAtlasCollection\",\n    value: function getAtlasCollection(name) {\n      return this.collections.get(name);\n    }\n  }, {\n    key: \"_cacheScratchCanvas\",\n    value: function _cacheScratchCanvas(createTextureCanvas) {\n      // all scratch canvases for the same render type will have the same width and height (ie webglTexRows option)\n      // but we'll keep track of the width and height just to be safe\n      var prevW = -1;\n      var prevH = -1;\n      var scratchCanvas = null;\n      return function (r, w, h, scratch) {\n        if (scratch) {\n          if (!scratchCanvas || w != prevW || h != prevH) {\n            prevW = w;\n            prevH = h;\n            scratchCanvas = createTextureCanvas(r, w, h);\n          }\n          return scratchCanvas;\n        } else {\n          return createTextureCanvas(r, w, h);\n        }\n      };\n    }\n  }, {\n    key: \"_key\",\n    value: function _key(renderType, id) {\n      return \"\".concat(renderType, \"-\").concat(id); // TODO not very efficient\n    }\n\n    /** Marks textues associated with the element for garbage collection. */\n  }, {\n    key: \"invalidate\",\n    value: function invalidate(eles) {\n      var _this3 = this;\n      var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        _ref2$forceRedraw = _ref2.forceRedraw,\n        forceRedraw = _ref2$forceRedraw === undefined ? false : _ref2$forceRedraw,\n        _ref2$filterEle = _ref2.filterEle,\n        filterEle = _ref2$filterEle === undefined ? function () {\n          return true;\n        } : _ref2$filterEle,\n        _ref2$filterType = _ref2.filterType,\n        filterType = _ref2$filterType === undefined ? function () {\n          return true;\n        } : _ref2$filterType;\n      var needGC = false;\n      var runGCNow = false;\n      var _iterator3 = _createForOfIteratorHelper(eles),\n        _step3;\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          var ele = _step3.value;\n          if (filterEle(ele)) {\n            var _iterator4 = _createForOfIteratorHelper(this.renderTypes.values()),\n              _step4;\n            try {\n              var _loop2 = function _loop2() {\n                var opts = _step4.value;\n                var renderType = opts.type;\n                if (filterType(renderType)) {\n                  var atlasCollection = _this3.collections.get(opts.collection);\n                  var key = opts.getKey(ele);\n                  var keyArray = Array.isArray(key) ? key : [key];\n\n                  // when a node's background image finishes loading, the style key doesn't change but still needs to be redrawn\n                  if (forceRedraw) {\n                    keyArray.forEach(function (key) {\n                      return atlasCollection.markKeyForGC(key);\n                    });\n                    runGCNow = true; // run GC to remove the old texture right now, that way we don't need to remember for the next gc \n                  } else {\n                    var id = opts.getID ? opts.getID(ele) : ele.id();\n                    var mapKey = _this3._key(renderType, id);\n                    var oldKeyArray = _this3.typeAndIdToKey.get(mapKey);\n                    if (oldKeyArray !== undefined && !arrayEqual(keyArray, oldKeyArray)) {\n                      // conservative approach, if any of the keys don't match then throw them all away\n                      needGC = true;\n                      _this3.typeAndIdToKey[\"delete\"](mapKey);\n                      oldKeyArray.forEach(function (oldKey) {\n                        return atlasCollection.markKeyForGC(oldKey);\n                      });\n                    }\n                  }\n                }\n              };\n              for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n                _loop2();\n              }\n            } catch (err) {\n              _iterator4.e(err);\n            } finally {\n              _iterator4.f();\n            }\n          }\n        }\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n      if (runGCNow) {\n        this.gc();\n        needGC = false;\n      }\n      return needGC;\n    }\n\n    /** Garbage collect */\n  }, {\n    key: \"gc\",\n    value: function gc() {\n      var _iterator5 = _createForOfIteratorHelper(this.collections.values()),\n        _step5;\n      try {\n        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n          var collection = _step5.value;\n          collection.gc();\n        }\n      } catch (err) {\n        _iterator5.e(err);\n      } finally {\n        _iterator5.f();\n      }\n    }\n  }, {\n    key: \"getOrCreateAtlas\",\n    value: function getOrCreateAtlas(ele, type, bb, styleKey) {\n      // styleKey is not an array here\n      var opts = this.renderTypes.get(type);\n      var atlasCollection = this.collections.get(opts.collection);\n\n      // draws the texture only if needed\n      var drawn = false;\n      var atlas = atlasCollection.draw(styleKey, bb, function (context) {\n        if (opts.drawClipped) {\n          context.save();\n          context.beginPath();\n          context.rect(0, 0, bb.w, bb.h);\n          context.clip();\n          opts.drawElement(context, ele, bb, true, true);\n          context.restore();\n        } else {\n          opts.drawElement(context, ele, bb, true, true);\n        }\n        drawn = true;\n      });\n      if (drawn) {\n        var id = opts.getID ? opts.getID(ele) : ele.id(); // for testing\n        var mapKey = this._key(type, id);\n        if (this.typeAndIdToKey.has(mapKey)) {\n          this.typeAndIdToKey.get(mapKey).push(styleKey);\n        } else {\n          this.typeAndIdToKey.set(mapKey, [styleKey]);\n        }\n      }\n      return atlas;\n    }\n  }, {\n    key: \"getAtlasInfo\",\n    value: function getAtlasInfo(ele, type) {\n      var _this4 = this;\n      var opts = this.renderTypes.get(type);\n      var key = opts.getKey(ele);\n      var keyArray = Array.isArray(key) ? key : [key];\n      return keyArray.map(function (styleKey) {\n        var bb = opts.getBoundingBox(ele, styleKey); // pass the key back to the getBoundingBox method\n        var atlas = _this4.getOrCreateAtlas(ele, type, bb, styleKey);\n        var _atlas$getOffsets3 = atlas.getOffsets(styleKey),\n          _atlas$getOffsets4 = _slicedToArray(_atlas$getOffsets3, 2),\n          tex1 = _atlas$getOffsets4[0],\n          tex2 = _atlas$getOffsets4[1];\n        return {\n          atlas: atlas,\n          tex: tex1,\n          tex1: tex1,\n          tex2: tex2,\n          bb: bb\n        };\n      });\n    }\n  }, {\n    key: \"getDebugInfo\",\n    value: function getDebugInfo() {\n      var debugInfo = [];\n      var _iterator6 = _createForOfIteratorHelper(this.collections),\n        _step6;\n      try {\n        for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n          var _step6$value = _slicedToArray(_step6.value, 2),\n            name = _step6$value[0],\n            collection = _step6$value[1];\n          var _collection$getCounts = collection.getCounts(),\n            keyCount = _collection$getCounts.keyCount,\n            atlasCount = _collection$getCounts.atlasCount;\n          debugInfo.push({\n            type: name,\n            keyCount: keyCount,\n            atlasCount: atlasCount\n          });\n        }\n      } catch (err) {\n        _iterator6.e(err);\n      } finally {\n        _iterator6.f();\n      }\n      return debugInfo;\n    }\n  }]);\n}();\nvar AtlasBatchManager = /*#__PURE__*/function () {\n  function AtlasBatchManager(globalOptions) {\n    _classCallCheck(this, AtlasBatchManager);\n    this.globalOptions = globalOptions;\n    this.atlasSize = globalOptions.webglTexSize;\n    this.maxAtlasesPerBatch = globalOptions.webglTexPerBatch;\n    this.batchAtlases = [];\n  }\n  return _createClass(AtlasBatchManager, [{\n    key: \"getMaxAtlasesPerBatch\",\n    value: function getMaxAtlasesPerBatch() {\n      return this.maxAtlasesPerBatch;\n    }\n  }, {\n    key: \"getAtlasSize\",\n    value: function getAtlasSize() {\n      return this.atlasSize;\n    }\n  }, {\n    key: \"getIndexArray\",\n    value: function getIndexArray() {\n      return Array.from({\n        length: this.maxAtlasesPerBatch\n      }, function (v, i) {\n        return i;\n      });\n    }\n  }, {\n    key: \"startBatch\",\n    value: function startBatch() {\n      this.batchAtlases = [];\n    }\n  }, {\n    key: \"getAtlasCount\",\n    value: function getAtlasCount() {\n      return this.batchAtlases.length;\n    }\n  }, {\n    key: \"getAtlases\",\n    value: function getAtlases() {\n      return this.batchAtlases;\n    }\n  }, {\n    key: \"canAddToCurrentBatch\",\n    value: function canAddToCurrentBatch(atlas) {\n      if (this.batchAtlases.length === this.maxAtlasesPerBatch) {\n        return this.batchAtlases.includes(atlas);\n      }\n      return true; // not full\n    }\n  }, {\n    key: \"getAtlasIndexForBatch\",\n    value: function getAtlasIndexForBatch(atlas) {\n      var atlasID = this.batchAtlases.indexOf(atlas);\n      if (atlasID < 0) {\n        if (this.batchAtlases.length === this.maxAtlasesPerBatch) {\n          throw new Error('cannot add more atlases to batch');\n        }\n        this.batchAtlases.push(atlas);\n        atlasID = this.batchAtlases.length - 1;\n      }\n      return atlasID;\n    }\n  }]);\n}();\n\n// Fragment shader functions to calculate signed distance\n// https://iquilezles.org/articles/distfunctions2d/\n// ellipse: https://www.shadertoy.com/view/4lsXDN \n\n/**\n * param p - point\n * float r - circle radius, eg 0.5 for unit circle\n */\nvar circleSD = \"\\n  float circleSD(vec2 p, float r) {\\n    return distance(vec2(0), p) - r; // signed distance\\n  }\\n\";\n\n/**\n * param p - point\n * param b - b.x = half width, b.y = half height\n */\nvar rectangleSD = \"\\n  float rectangleSD(vec2 p, vec2 b) {\\n    vec2 d = abs(p)-b;\\n    return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);\\n  }\\n\";\n\n/**\n * param p - point\n * param b - b.x = half width, b.y = half height\n * param cr - vector of corner radiuses\n */\nvar roundRectangleSD = \"\\n  float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {\\n    cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;\\n    cr.x  = (p.y > 0.0) ? cr.x  : cr.y;\\n    vec2 q = abs(p) - b + cr.x;\\n    return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;\\n  }\\n\";\n\n/**\n * param p - point\n * param ab - a.x = horizontal radius, a.y = vertical radius\n */\nvar ellipseSD = \"\\n  float ellipseSD(vec2 p, vec2 ab) {\\n    p = abs( p ); // symmetry\\n\\n    // find root with Newton solver\\n    vec2 q = ab*(p-ab);\\n    float w = (q.x<q.y)? 1.570796327 : 0.0;\\n    for( int i=0; i<5; i++ ) {\\n      vec2 cs = vec2(cos(w),sin(w));\\n      vec2 u = ab*vec2( cs.x,cs.y);\\n      vec2 v = ab*vec2(-cs.y,cs.x);\\n      w = w + dot(p-u,v)/(dot(p-u,u)+dot(v,v));\\n    }\\n    \\n    // compute final point and distance\\n    float d = length(p-ab*vec2(cos(w),sin(w)));\\n    \\n    // return signed distance\\n    return (dot(p/ab,p/ab)>1.0) ? d : -d;\\n  }\\n\";\n\n/**\n * Two render modes. Each mode has its own shader program. They are almost identical, the main difference is the output.\n * SCREEN:  output pixel colors to the screen\n * PICKING: output z-order index to an offscreen framebuffer, used to detect what's under the mouse cursor\n */\nvar RENDER_TARGET = {\n  SCREEN: {\n    name: 'screen',\n    screen: true\n  },\n  PICKING: {\n    name: 'picking',\n    picking: true\n  }\n};\n\n/**\n * Special handing for label textures in PICKING mode. See issue #3337.\n */\nvar TEX_PICKING_MODE = {\n  // render the texture just like in RENDER_TARGET.SCREEN mode\n  IGNORE: 1,\n  // don't render the texture at all\n  USE_BB: 2 // render the bounding box as an opaque rectangle\n};\n\n// Vertex types.\n// Used directly in the shaders so must be numeric.\n// There is only one shader program used for an entire frame that renders all types of elements.\n// There are if-else blocks in the shaders that do different things depending on the vertex type.\n// This allows all elements to be rendererd in large batches without switching shader programs.\nvar TEXTURE = 0;\nvar EDGE_STRAIGHT = 1;\nvar EDGE_CURVE_SEGMENT = 2;\nvar EDGE_ARROW = 3;\nvar RECTANGLE = 4;\nvar ROUND_RECTANGLE = 5;\nvar BOTTOM_ROUND_RECTANGLE = 6;\nvar ELLIPSE = 7;\nvar ElementDrawingWebGL = /*#__PURE__*/function () {\n  /**\n   * @param {WebGLRenderingContext} gl\n   */\n  function ElementDrawingWebGL(r, gl, opts) {\n    _classCallCheck(this, ElementDrawingWebGL);\n    this.r = r; // reference to the canvas renderer\n    this.gl = gl;\n    this.maxInstances = opts.webglBatchSize;\n    this.atlasSize = opts.webglTexSize;\n    this.bgColor = opts.bgColor;\n    this.debug = opts.webglDebug;\n    this.batchDebugInfo = [];\n    opts.enableWrapping = true;\n    opts.createTextureCanvas = createTextureCanvas; // Unit tests mock this\n\n    this.atlasManager = new AtlasManager(r, opts);\n    this.batchManager = new AtlasBatchManager(opts);\n    this.simpleShapeOptions = new Map();\n    this.program = this._createShaderProgram(RENDER_TARGET.SCREEN);\n    this.pickingProgram = this._createShaderProgram(RENDER_TARGET.PICKING);\n    this.vao = this._createVAO();\n  }\n\n  /**\n   * @param { string } collectionName\n   * @param {{ texRows: number }} opts\n   */\n  return _createClass(ElementDrawingWebGL, [{\n    key: \"addAtlasCollection\",\n    value: function addAtlasCollection(collectionName, opts) {\n      this.atlasManager.addAtlasCollection(collectionName, opts);\n    }\n\n    /**\n     * @typedef { Object } TextureRenderTypeOpts\n     * @property { string } collection - name of atlas collection to render textures to\n     * @property { function } getKey - returns the \"style key\" for an element, may be a single value or an array for multi-line lables\n     * @property { function } drawElement - uses a canvas renderer to draw the element to the texture atlas\n     * @property { boolean  } drawClipped - if true the context will be clipped to the bounding box before drawElement() is called, may affect performance\n     * @property { function } getBoundingBox - returns the bounding box for an element\n     * @property { function } getRotation\n     * @property { function } getRotationPoint\n     * @property { function } getRotationOffset\n     * @property { function } isVisible - an extra check for visibility in addition to ele.visible()\n     * @property { function } getTexPickingMode - returns a value from the TEX_PICKING_MODE enum\n     */\n    /**\n     * @param { string } typeName\n     * @param { TextureRenderTypeOpts } opts\n     */\n  }, {\n    key: \"addTextureAtlasRenderType\",\n    value: function addTextureAtlasRenderType(typeName, opts) {\n      this.atlasManager.addRenderType(typeName, opts);\n    }\n\n    /**\n     * @typedef { Object } SimpleShapeRenderTypeOpts\n     * @property { function } getBoundingBox - returns the bounding box for an element\n     * @property { function } isVisible - this is an extra check for visibility in addition to ele.visible()\n     * @property { function } isSimple - check if element is a simple shape, or if it needs to fall back to texture rendering\n     * @property { ShapeVisualProperties } shapeProps\n     */\n    /**\n     * @typedef { Object } ShapeVisualProperties\n     * @property { string } shape\n     * @property { string } color\n     * @property { string } opacity\n     * @property { string } padding\n     * @property { string } radius\n     * @property { boolean } border\n    */\n    /**\n     * @param { string } typeName\n     * @param { SimpleShapeRenderTypeOpts } opts\n     */\n  }, {\n    key: \"addSimpleShapeRenderType\",\n    value: function addSimpleShapeRenderType(typeName, opts) {\n      this.simpleShapeOptions.set(typeName, opts);\n    }\n\n    /**\n     * Inform the atlasManager when element style keys may have changed.\n     * The atlasManager can then mark unused textures for \"garbage collection\".\n     */\n  }, {\n    key: \"invalidate\",\n    value: function invalidate(eles) {\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        type = _ref.type;\n      var atlasManager = this.atlasManager;\n      if (type) {\n        return atlasManager.invalidate(eles, {\n          filterType: function filterType(t) {\n            return t === type;\n          },\n          forceRedraw: true\n        });\n      } else {\n        return atlasManager.invalidate(eles);\n      }\n    }\n\n    /**\n     * Run texture garbage collection.\n     */\n  }, {\n    key: \"gc\",\n    value: function gc() {\n      this.atlasManager.gc();\n    }\n  }, {\n    key: \"_createShaderProgram\",\n    value: function _createShaderProgram(renderTarget) {\n      var gl = this.gl;\n      var vertexShaderSource = \"#version 300 es\\n      precision highp float;\\n\\n      uniform mat3 uPanZoomMatrix;\\n      uniform int  uAtlasSize;\\n      \\n      // instanced\\n      in vec2 aPosition; // a vertex from the unit square\\n      \\n      in mat3 aTransform; // used to transform verticies, eg into a bounding box\\n      in int aVertType; // the type of thing we are rendering\\n\\n      // the z-index that is output when using picking mode\\n      in vec4 aIndex;\\n      \\n      // For textures\\n      in int aAtlasId; // which shader unit/atlas to use\\n      in vec4 aTex; // x/y/w/h of texture in atlas\\n\\n      // for edges\\n      in vec4 aPointAPointB;\\n      in vec4 aPointCPointD;\\n      in vec2 aLineWidth; // also used for node border width\\n\\n      // simple shapes\\n      in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left]\\n      in vec4 aColor; // also used for edges\\n      in vec4 aBorderColor; // aLineWidth is used for border width\\n\\n      // output values passed to the fragment shader\\n      out vec2 vTexCoord;\\n      out vec4 vColor;\\n      out vec2 vPosition;\\n      // flat values are not interpolated\\n      flat out int vAtlasId; \\n      flat out int vVertType;\\n      flat out vec2 vTopRight;\\n      flat out vec2 vBotLeft;\\n      flat out vec4 vCornerRadius;\\n      flat out vec4 vBorderColor;\\n      flat out vec2 vBorderWidth;\\n      flat out vec4 vIndex;\\n      \\n      void main(void) {\\n        int vid = gl_VertexID;\\n        vec2 position = aPosition; // TODO make this a vec3, simplifies some code below\\n\\n        if(aVertType == \".concat(TEXTURE, \") {\\n          float texX = aTex.x; // texture coordinates\\n          float texY = aTex.y;\\n          float texW = aTex.z;\\n          float texH = aTex.w;\\n\\n          if(vid == 1 || vid == 2 || vid == 4) {\\n            texX += texW;\\n          }\\n          if(vid == 2 || vid == 4 || vid == 5) {\\n            texY += texH;\\n          }\\n\\n          float d = float(uAtlasSize);\\n          vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1\\n\\n          gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\\n        }\\n        else if(aVertType == \").concat(RECTANGLE, \" || aVertType == \").concat(ELLIPSE, \" \\n             || aVertType == \").concat(ROUND_RECTANGLE, \" || aVertType == \").concat(BOTTOM_ROUND_RECTANGLE, \") { // simple shapes\\n\\n          // the bounding box is needed by the fragment shader\\n          vBotLeft  = (aTransform * vec3(0, 0, 1)).xy; // flat\\n          vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat\\n          vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated\\n\\n          // calculations are done in the fragment shader, just pass these along\\n          vColor = aColor;\\n          vCornerRadius = aCornerRadius;\\n          vBorderColor = aBorderColor;\\n          vBorderWidth = aLineWidth;\\n\\n          gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\\n        }\\n        else if(aVertType == \").concat(EDGE_STRAIGHT, \") {\\n          vec2 source = aPointAPointB.xy;\\n          vec2 target = aPointAPointB.zw;\\n\\n          // adjust the geometry so that the line is centered on the edge\\n          position.y = position.y - 0.5;\\n\\n          // stretch the unit square into a long skinny rectangle\\n          vec2 xBasis = target - source;\\n          vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));\\n          vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y;\\n\\n          gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);\\n          vColor = aColor;\\n        } \\n        else if(aVertType == \").concat(EDGE_CURVE_SEGMENT, \") {\\n          vec2 pointA = aPointAPointB.xy;\\n          vec2 pointB = aPointAPointB.zw;\\n          vec2 pointC = aPointCPointD.xy;\\n          vec2 pointD = aPointCPointD.zw;\\n\\n          // adjust the geometry so that the line is centered on the edge\\n          position.y = position.y - 0.5;\\n\\n          vec2 p0, p1, p2, pos;\\n          if(position.x == 0.0) { // The left side of the unit square\\n            p0 = pointA;\\n            p1 = pointB;\\n            p2 = pointC;\\n            pos = position;\\n          } else { // The right side of the unit square, use same approach but flip the geometry upside down\\n            p0 = pointD;\\n            p1 = pointC;\\n            p2 = pointB;\\n            pos = vec2(0.0, -position.y);\\n          }\\n\\n          vec2 p01 = p1 - p0;\\n          vec2 p12 = p2 - p1;\\n          vec2 p21 = p1 - p2;\\n\\n          // Find the normal vector.\\n          vec2 tangent = normalize(normalize(p12) + normalize(p01));\\n          vec2 normal = vec2(-tangent.y, tangent.x);\\n\\n          // Find the vector perpendicular to p0 -> p1.\\n          vec2 p01Norm = normalize(vec2(-p01.y, p01.x));\\n\\n          // Determine the bend direction.\\n          float sigma = sign(dot(p01 + p21, normal));\\n          float width = aLineWidth[0];\\n\\n          if(sign(pos.y) == -sigma) {\\n            // This is an intersecting vertex. Adjust the position so that there's no overlap.\\n            vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);\\n            gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\\n          } else {\\n            // This is a non-intersecting vertex. Treat it like a mitre join.\\n            vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);\\n            gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\\n          }\\n\\n          vColor = aColor;\\n        } \\n        else if(aVertType == \").concat(EDGE_ARROW, \" && vid < 3) {\\n          // massage the first triangle into an edge arrow\\n          if(vid == 0)\\n            position = vec2(-0.15, -0.3);\\n          if(vid == 1)\\n            position = vec2(  0.0,  0.0);\\n          if(vid == 2)\\n            position = vec2( 0.15, -0.3);\\n\\n          gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\\n          vColor = aColor;\\n        }\\n        else {\\n          gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space\\n        }\\n\\n        vAtlasId = aAtlasId;\\n        vVertType = aVertType;\\n        vIndex = aIndex;\\n      }\\n    \");\n      var idxs = this.batchManager.getIndexArray();\n      var fragmentShaderSource = \"#version 300 es\\n      precision highp float;\\n\\n      // declare texture unit for each texture atlas in the batch\\n      \".concat(idxs.map(function (i) {\n        return \"uniform sampler2D uTexture\".concat(i, \";\");\n      }).join('\\n\\t'), \"\\n\\n      uniform vec4 uBGColor;\\n      uniform float uZoom;\\n\\n      in vec2 vTexCoord;\\n      in vec4 vColor;\\n      in vec2 vPosition; // model coordinates\\n\\n      flat in int vAtlasId;\\n      flat in vec4 vIndex;\\n      flat in int vVertType;\\n      flat in vec2 vTopRight;\\n      flat in vec2 vBotLeft;\\n      flat in vec4 vCornerRadius;\\n      flat in vec4 vBorderColor;\\n      flat in vec2 vBorderWidth;\\n\\n      out vec4 outColor;\\n\\n      \").concat(circleSD, \"\\n      \").concat(rectangleSD, \"\\n      \").concat(roundRectangleSD, \"\\n      \").concat(ellipseSD, \"\\n\\n      vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha\\n        return vec4( \\n          top.rgb + (bot.rgb * (1.0 - top.a)),\\n          top.a   + (bot.a   * (1.0 - top.a)) \\n        );\\n      }\\n\\n      vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance\\n        // scale to the zoom level so that borders don't look blurry when zoomed in\\n        // note 1.5 is an aribitrary value chosen because it looks good\\n        return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); \\n      }\\n\\n      void main(void) {\\n        if(vVertType == \").concat(TEXTURE, \") {\\n          // look up the texel from the texture unit\\n          \").concat(idxs.map(function (i) {\n        return \"if(vAtlasId == \".concat(i, \") outColor = texture(uTexture\").concat(i, \", vTexCoord);\");\n      }).join('\\n\\telse '), \"\\n        } \\n        else if(vVertType == \").concat(EDGE_ARROW, \") {\\n          // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';\\n          outColor = blend(vColor, uBGColor);\\n          outColor.a = 1.0; // make opaque, masks out line under arrow\\n        }\\n        else if(vVertType == \").concat(RECTANGLE, \" && vBorderWidth == vec2(0.0)) { // simple rectangle with no border\\n          outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done\\n        }\\n        else if(vVertType == \").concat(RECTANGLE, \" || vVertType == \").concat(ELLIPSE, \" \\n          || vVertType == \").concat(ROUND_RECTANGLE, \" || vVertType == \").concat(BOTTOM_ROUND_RECTANGLE, \") { // use SDF\\n\\n          float outerBorder = vBorderWidth[0];\\n          float innerBorder = vBorderWidth[1];\\n          float borderPadding = outerBorder * 2.0;\\n          float w = vTopRight.x - vBotLeft.x - borderPadding;\\n          float h = vTopRight.y - vBotLeft.y - borderPadding;\\n          vec2 b = vec2(w/2.0, h/2.0); // half width, half height\\n          vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center\\n\\n          float d; // signed distance\\n          if(vVertType == \").concat(RECTANGLE, \") {\\n            d = rectangleSD(p, b);\\n          } else if(vVertType == \").concat(ELLIPSE, \" && w == h) {\\n            d = circleSD(p, b.x); // faster than ellipse\\n          } else if(vVertType == \").concat(ELLIPSE, \") {\\n            d = ellipseSD(p, b);\\n          } else {\\n            d = roundRectangleSD(p, b, vCornerRadius.wzyx);\\n          }\\n\\n          // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling\\n          // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box\\n          if(d > 0.0) {\\n            if(d > outerBorder) {\\n              discard;\\n            } else {\\n              outColor = distInterp(vBorderColor, vec4(0), d - outerBorder);\\n            }\\n          } else {\\n            if(d > innerBorder) {\\n              vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor;\\n              vec4 innerBorderColor = blend(vBorderColor, vColor);\\n              outColor = distInterp(innerBorderColor, outerColor, d);\\n            } \\n            else {\\n              vec4 outerColor;\\n              if(innerBorder == 0.0 && outerBorder == 0.0) {\\n                outerColor = vec4(0);\\n              } else if(innerBorder == 0.0) {\\n                outerColor = vBorderColor;\\n              } else {\\n                outerColor = blend(vBorderColor, vColor);\\n              }\\n              outColor = distInterp(vColor, outerColor, d - innerBorder);\\n            }\\n          }\\n        }\\n        else {\\n          outColor = vColor;\\n        }\\n\\n        \").concat(renderTarget.picking ? \"if(outColor.a == 0.0) discard;\\n             else outColor = vIndex;\" : '', \"\\n      }\\n    \");\n      var program = createProgram(gl, vertexShaderSource, fragmentShaderSource);\n\n      // instance geometry\n      program.aPosition = gl.getAttribLocation(program, 'aPosition');\n\n      // attributes\n      program.aIndex = gl.getAttribLocation(program, 'aIndex');\n      program.aVertType = gl.getAttribLocation(program, 'aVertType');\n      program.aTransform = gl.getAttribLocation(program, 'aTransform');\n      program.aAtlasId = gl.getAttribLocation(program, 'aAtlasId');\n      program.aTex = gl.getAttribLocation(program, 'aTex');\n      program.aPointAPointB = gl.getAttribLocation(program, 'aPointAPointB');\n      program.aPointCPointD = gl.getAttribLocation(program, 'aPointCPointD');\n      program.aLineWidth = gl.getAttribLocation(program, 'aLineWidth');\n      program.aColor = gl.getAttribLocation(program, 'aColor');\n      program.aCornerRadius = gl.getAttribLocation(program, 'aCornerRadius');\n      program.aBorderColor = gl.getAttribLocation(program, 'aBorderColor');\n\n      // uniforms\n      program.uPanZoomMatrix = gl.getUniformLocation(program, 'uPanZoomMatrix');\n      program.uAtlasSize = gl.getUniformLocation(program, 'uAtlasSize');\n      program.uBGColor = gl.getUniformLocation(program, 'uBGColor');\n      program.uZoom = gl.getUniformLocation(program, 'uZoom');\n      program.uTextures = [];\n      for (var i = 0; i < this.batchManager.getMaxAtlasesPerBatch(); i++) {\n        program.uTextures.push(gl.getUniformLocation(program, \"uTexture\".concat(i)));\n      }\n      return program;\n    }\n  }, {\n    key: \"_createVAO\",\n    value: function _createVAO() {\n      var unitSquare = [0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1];\n      this.vertexCount = unitSquare.length / 2;\n      var n = this.maxInstances;\n      var gl = this.gl,\n        program = this.program;\n      var vao = gl.createVertexArray();\n      gl.bindVertexArray(vao);\n      createBufferStaticDraw(gl, 'vec2', program.aPosition, unitSquare);\n\n      // Create buffers for all the attributes\n      this.transformBuffer = create3x3MatrixBufferDynamicDraw(gl, n, program.aTransform);\n      this.indexBuffer = createBufferDynamicDraw(gl, n, 'vec4', program.aIndex);\n      this.vertTypeBuffer = createBufferDynamicDraw(gl, n, 'int', program.aVertType);\n      this.atlasIdBuffer = createBufferDynamicDraw(gl, n, 'int', program.aAtlasId);\n      this.texBuffer = createBufferDynamicDraw(gl, n, 'vec4', program.aTex);\n      this.pointAPointBBuffer = createBufferDynamicDraw(gl, n, 'vec4', program.aPointAPointB);\n      this.pointCPointDBuffer = createBufferDynamicDraw(gl, n, 'vec4', program.aPointCPointD);\n      this.lineWidthBuffer = createBufferDynamicDraw(gl, n, 'vec2', program.aLineWidth);\n      this.colorBuffer = createBufferDynamicDraw(gl, n, 'vec4', program.aColor);\n      this.cornerRadiusBuffer = createBufferDynamicDraw(gl, n, 'vec4', program.aCornerRadius);\n      this.borderColorBuffer = createBufferDynamicDraw(gl, n, 'vec4', program.aBorderColor);\n      gl.bindVertexArray(null);\n      return vao;\n    }\n  }, {\n    key: \"buffers\",\n    get: function get() {\n      var _this = this;\n      if (!this._buffers) {\n        this._buffers = Object.keys(this).filter(function (k) {\n          return endsWith(k, 'Buffer');\n        }).map(function (k) {\n          return _this[k];\n        });\n      }\n      return this._buffers;\n    }\n  }, {\n    key: \"startFrame\",\n    value: function startFrame(panZoomMatrix) {\n      var renderTarget = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : RENDER_TARGET.SCREEN;\n      this.panZoomMatrix = panZoomMatrix;\n      this.renderTarget = renderTarget;\n      this.batchDebugInfo = [];\n      this.wrappedCount = 0;\n      this.simpleCount = 0;\n      this.startBatch();\n    }\n  }, {\n    key: \"startBatch\",\n    value: function startBatch() {\n      this.instanceCount = 0;\n      this.batchManager.startBatch();\n    }\n  }, {\n    key: \"endFrame\",\n    value: function endFrame() {\n      this.endBatch();\n    }\n  }, {\n    key: \"_isVisible\",\n    value: function _isVisible(ele, opts) {\n      if (ele.visible()) {\n        if (opts && opts.isVisible) {\n          return opts.isVisible(ele);\n        }\n        return true;\n      }\n      return false;\n    }\n\n    /**\n     * Draws a texture using the texture atlas.\n     */\n  }, {\n    key: \"drawTexture\",\n    value: function drawTexture(ele, eleIndex, type) {\n      var atlasManager = this.atlasManager,\n        batchManager = this.batchManager;\n      var opts = atlasManager.getRenderTypeOpts(type);\n      if (!this._isVisible(ele, opts)) {\n        return;\n      }\n\n      // Edges with invalid points could be passed here (labels), causing errors\n      // Ref: Random \"Script Error\" thrown when generating nodes and edges in newest webgl version #3365\n      // https://github.com/cytoscape/cytoscape.js/issues/3365\n      if (ele.isEdge() && !this._isValidEdge(ele)) {\n        return;\n      }\n      if (this.renderTarget.picking && opts.getTexPickingMode) {\n        var mode = opts.getTexPickingMode(ele);\n        if (mode === TEX_PICKING_MODE.IGNORE) {\n          return;\n        } else if (mode == TEX_PICKING_MODE.USE_BB) {\n          this.drawPickingRectangle(ele, eleIndex, type);\n          return;\n        }\n      }\n\n      // Get the atlas and the texture coordinates, will draw the texture if it hasn't been drawn yet\n      // May be more than one texture if for example the label has multiple lines\n      var atlasInfoArray = atlasManager.getAtlasInfo(ele, type);\n      var _iterator = _createForOfIteratorHelper(atlasInfoArray),\n        _step;\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var atlasInfo = _step.value;\n          var atlas = atlasInfo.atlas,\n            tex1 = atlasInfo.tex1,\n            tex2 = atlasInfo.tex2; // tex2 is used if the label wraps and there are two textures\n\n          if (!batchManager.canAddToCurrentBatch(atlas)) {\n            this.endBatch();\n          }\n          var atlasIndex = batchManager.getAtlasIndexForBatch(atlas);\n          for (var _i = 0, _arr = [[tex1, true], [tex2, false]]; _i < _arr.length; _i++) {\n            var _arr$_i = _slicedToArray(_arr[_i], 2),\n              tex = _arr$_i[0],\n              first = _arr$_i[1];\n            if (tex.w != 0) {\n              var instance = this.instanceCount;\n              this.vertTypeBuffer.getView(instance)[0] = TEXTURE;\n              var indexView = this.indexBuffer.getView(instance);\n              indexToVec4(eleIndex, indexView);\n\n              // Set values in the buffers using Typed Array Views for performance.\n              var atlasIdView = this.atlasIdBuffer.getView(instance);\n              atlasIdView[0] = atlasIndex;\n\n              // we have two sets of texture coordinates and transforms because textures can wrap in the atlas\n              var texView = this.texBuffer.getView(instance);\n              texView[0] = tex.x;\n              texView[1] = tex.y;\n              texView[2] = tex.w;\n              texView[3] = tex.h;\n              var matrixView = this.transformBuffer.getMatrixView(instance);\n              this.setTransformMatrix(ele, matrixView, opts, atlasInfo, first);\n              this.instanceCount++;\n              if (!first) this.wrappedCount++;\n              if (this.instanceCount >= this.maxInstances) {\n                this.endBatch();\n              }\n            }\n          }\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n    }\n\n    /**\n     * matrix is expected to be a 9 element array\n     * this function follows same pattern as CRp.drawCachedElementPortion(...)\n     */\n  }, {\n    key: \"setTransformMatrix\",\n    value: function setTransformMatrix(ele, matrix, opts, atlasInfo) {\n      var first = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n      var padding = 0;\n      if (opts.shapeProps && opts.shapeProps.padding) {\n        padding = ele.pstyle(opts.shapeProps.padding).pfValue;\n      }\n      if (atlasInfo) {\n        // we've already computed the bb and tex bounds for a texture\n        var bb = atlasInfo.bb,\n          tex1 = atlasInfo.tex1,\n          tex2 = atlasInfo.tex2;\n        // wrapped textures need separate matrix for each part\n        var ratio = tex1.w / (tex1.w + tex2.w);\n        if (!first) {\n          // first = true means its the first part of the wrapped texture\n          ratio = 1 - ratio;\n        }\n        var adjBB = this._getAdjustedBB(bb, padding, first, ratio);\n        this._applyTransformMatrix(matrix, adjBB, opts, ele);\n      } else {\n        // we don't have a texture, or we want to avoid creating a texture for simple shapes\n        var _bb = opts.getBoundingBox(ele);\n        var _adjBB = this._getAdjustedBB(_bb, padding, true, 1);\n        this._applyTransformMatrix(matrix, _adjBB, opts, ele);\n      }\n    }\n  }, {\n    key: \"_applyTransformMatrix\",\n    value: function _applyTransformMatrix(matrix, adjBB, opts, ele) {\n      var x, y;\n      identity(matrix);\n      var theta = opts.getRotation ? opts.getRotation(ele) : 0;\n      if (theta !== 0) {\n        var _opts$getRotationPoin = opts.getRotationPoint(ele),\n          sx = _opts$getRotationPoin.x,\n          sy = _opts$getRotationPoin.y;\n        translate(matrix, matrix, [sx, sy]);\n        rotate(matrix, matrix, theta);\n        var offset = opts.getRotationOffset(ele);\n        x = offset.x + (adjBB.xOffset || 0);\n        y = offset.y + (adjBB.yOffset || 0);\n      } else {\n        x = adjBB.x1;\n        y = adjBB.y1;\n      }\n      translate(matrix, matrix, [x, y]);\n      scale(matrix, matrix, [adjBB.w, adjBB.h]);\n    }\n\n    /**\n     * Adjusts a node or label BB to accomodate padding and split for wrapped textures.\n     * @param bb - the original bounding box\n     * @param padding - the padding to add to the bounding box\n     * @param first - whether this is the first part of a wrapped texture\n     * @param ratio - the ratio of the texture width of part of the text to the entire texture\n     */\n  }, {\n    key: \"_getAdjustedBB\",\n    value: function _getAdjustedBB(bb, padding, first, ratio) {\n      var x1 = bb.x1,\n        y1 = bb.y1,\n        w = bb.w,\n        h = bb.h,\n        yOffset = bb.yOffset;\n      if (padding) {\n        x1 -= padding;\n        y1 -= padding;\n        w += 2 * padding;\n        h += 2 * padding;\n      }\n      var xOffset = 0;\n      var adjW = w * ratio;\n      if (first && ratio < 1) {\n        w = adjW;\n      } else if (!first && ratio < 1) {\n        xOffset = w - adjW;\n        x1 += xOffset;\n        w = adjW;\n      }\n      return {\n        x1: x1,\n        y1: y1,\n        w: w,\n        h: h,\n        xOffset: xOffset,\n        yOffset: yOffset\n      };\n    }\n\n    /**\n     * Draw a solid opaque rectangle matching the element's Bounding Box.\n     * Used by the PICKING mode to make the entire BB of a label clickable.\n     */\n  }, {\n    key: \"drawPickingRectangle\",\n    value: function drawPickingRectangle(ele, eleIndex, type) {\n      var opts = this.atlasManager.getRenderTypeOpts(type);\n      var instance = this.instanceCount;\n      this.vertTypeBuffer.getView(instance)[0] = RECTANGLE;\n      var indexView = this.indexBuffer.getView(instance);\n      indexToVec4(eleIndex, indexView);\n      var colorView = this.colorBuffer.getView(instance);\n      toWebGLColor([0, 0, 0], 1, colorView); // opaque, so entire label BB is clickable\n\n      var matrixView = this.transformBuffer.getMatrixView(instance);\n      this.setTransformMatrix(ele, matrixView, opts);\n      this.simpleCount++;\n      this.instanceCount++;\n      if (this.instanceCount >= this.maxInstances) {\n        this.endBatch();\n      }\n    }\n\n    /**\n     * Draw a node using either a texture or a \"simple shape\".\n     */\n  }, {\n    key: \"drawNode\",\n    value: function drawNode(node, eleIndex, type) {\n      var opts = this.simpleShapeOptions.get(type);\n      if (!this._isVisible(node, opts)) {\n        return;\n      }\n      var props = opts.shapeProps;\n\n      // Check if we have to use a texture\n      var vertType = this._getVertTypeForShape(node, props.shape);\n      if (vertType === undefined || opts.isSimple && !opts.isSimple(node, this.renderTarget)) {\n        this.drawTexture(node, eleIndex, type);\n        return;\n      }\n\n      // Render a \"simple shape\" using SDF (signed distance fields)\n      var instance = this.instanceCount;\n      this.vertTypeBuffer.getView(instance)[0] = vertType;\n      if (vertType === ROUND_RECTANGLE || vertType === BOTTOM_ROUND_RECTANGLE) {\n        // get corner radius\n        var bb = opts.getBoundingBox(node);\n        var radius = this._getCornerRadius(node, props.radius, bb);\n        var radiusView = this.cornerRadiusBuffer.getView(instance);\n        radiusView[0] = radius; // top-right\n        radiusView[1] = radius; // bottom-right\n        radiusView[2] = radius; // top-left\n        radiusView[3] = radius; // bottom-left\n        if (vertType === BOTTOM_ROUND_RECTANGLE) {\n          radiusView[0] = 0;\n          radiusView[2] = 0;\n        }\n      }\n      var indexView = this.indexBuffer.getView(instance);\n      indexToVec4(eleIndex, indexView);\n\n      // Nodes should still be clickable if they pass the visibility check but\n      // have background-opacity: 0\n      // Also: everything but node-body is exempt from effective opacity inheritence/stacking\n      var opacity = this.renderTarget.picking ? 1 : type === 'node-body' ? node.effectiveOpacity() : 1;\n      var bgOpacity = this.renderTarget.picking ? 1 : node.pstyle(props.opacity).value * opacity;\n      var color = node.pstyle(props.color).value;\n      var colorView = this.colorBuffer.getView(instance);\n      toWebGLColor(color, bgOpacity, colorView);\n      var lineWidthView = this.lineWidthBuffer.getView(instance); // reuse edge line width attribute for node border\n      lineWidthView[0] = 0;\n      lineWidthView[1] = 0;\n      if (props.border) {\n        var borderWidth = node.pstyle('border-width').value;\n        if (borderWidth > 0) {\n          var borderColor = node.pstyle('border-color').value;\n          var borderOpacity = opacity * node.pstyle('border-opacity').value;\n          var borderColorView = this.borderColorBuffer.getView(instance);\n          toWebGLColor(borderColor, borderOpacity, borderColorView);\n\n          // SDF distance is negative inside the shape and positive outside\n          var borderPos = node.pstyle('border-position').value;\n          if (borderPos === 'inside') {\n            lineWidthView[0] = 0;\n            lineWidthView[1] = -borderWidth;\n          } else if (borderPos === 'outside') {\n            lineWidthView[0] = borderWidth;\n            lineWidthView[1] = 0;\n          } else {\n            // 'center'\n            var halfWidth = borderWidth / 2;\n            lineWidthView[0] = halfWidth;\n            lineWidthView[1] = -halfWidth;\n          }\n        }\n      }\n      var matrixView = this.transformBuffer.getMatrixView(instance);\n      this.setTransformMatrix(node, matrixView, opts);\n      this.simpleCount++;\n      this.instanceCount++;\n      if (this.instanceCount >= this.maxInstances) {\n        this.endBatch();\n      }\n    }\n  }, {\n    key: \"_getVertTypeForShape\",\n    value: function _getVertTypeForShape(node, shapeProp) {\n      var shape = node.pstyle(shapeProp).value;\n      switch (shape) {\n        case 'rectangle':\n          return RECTANGLE;\n        case 'ellipse':\n          return ELLIPSE;\n        case 'roundrectangle':\n        case 'round-rectangle':\n          return ROUND_RECTANGLE;\n        case 'bottom-round-rectangle':\n          return BOTTOM_ROUND_RECTANGLE;\n        default:\n          return undefined;\n      }\n    }\n  }, {\n    key: \"_getCornerRadius\",\n    value: function _getCornerRadius(node, radiusProp, _ref2) {\n      var w = _ref2.w,\n        h = _ref2.h;\n      // see CRp.drawRoundRectanglePath\n      if (node.pstyle(radiusProp).value === 'auto') {\n        return getRoundRectangleRadius(w, h);\n      } else {\n        var radius = node.pstyle(radiusProp).pfValue;\n        var halfWidth = w / 2;\n        var halfHeight = h / 2;\n        return Math.min(radius, halfHeight, halfWidth);\n      }\n    }\n\n    /**\n     * Only supports drawing triangles at the moment.\n     */\n  }, {\n    key: \"drawEdgeArrow\",\n    value: function drawEdgeArrow(edge, eleIndex, prefix) {\n      if (!edge.visible()) {\n        return;\n      }\n      // Edge points and arrow angles etc are calculated by the base renderer and cached in the rscratch object.\n      var rs = edge._private.rscratch;\n      var x, y, angle;\n      if (prefix === 'source') {\n        x = rs.arrowStartX;\n        y = rs.arrowStartY;\n        angle = rs.srcArrowAngle;\n      } else {\n        x = rs.arrowEndX;\n        y = rs.arrowEndY;\n        angle = rs.tgtArrowAngle;\n      }\n\n      // taken from CRp.drawArrowhead\n      if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) {\n        return;\n      }\n\n      // check shape after the x/y check because pstyle() is a bit slow\n      var arrowShape = edge.pstyle(prefix + '-arrow-shape').value;\n      if (arrowShape === 'none') {\n        return;\n      }\n      var color = edge.pstyle(prefix + '-arrow-color').value;\n      var baseOpacity = edge.pstyle('opacity').value;\n      var lineOpacity = edge.pstyle('line-opacity').value;\n      var opacity = baseOpacity * lineOpacity;\n      var lineWidth = edge.pstyle('width').pfValue;\n      var scale$1 = edge.pstyle('arrow-scale').value;\n      var size = this.r.getArrowWidth(lineWidth, scale$1);\n      var instance = this.instanceCount;\n      var transform = this.transformBuffer.getMatrixView(instance);\n      identity(transform);\n      translate(transform, transform, [x, y]);\n      scale(transform, transform, [size, size]);\n      rotate(transform, transform, angle);\n      this.vertTypeBuffer.getView(instance)[0] = EDGE_ARROW;\n      var indexView = this.indexBuffer.getView(instance);\n      indexToVec4(eleIndex, indexView);\n      var colorView = this.colorBuffer.getView(instance);\n      toWebGLColor(color, opacity, colorView);\n      this.instanceCount++;\n      if (this.instanceCount >= this.maxInstances) {\n        this.endBatch();\n      }\n    }\n\n    /**\n     * Draw straight-line or bezier curve edges.\n     */\n  }, {\n    key: \"drawEdgeLine\",\n    value: function drawEdgeLine(edge, eleIndex) {\n      if (!edge.visible()) {\n        return;\n      }\n      var points = this._getEdgePoints(edge);\n      if (!points) {\n        return;\n      }\n\n      // line style\n      var baseOpacity = edge.pstyle('opacity').value;\n      var lineOpacity = edge.pstyle('line-opacity').value;\n      var width = edge.pstyle('width').pfValue;\n      var color = edge.pstyle('line-color').value;\n      var opacity = baseOpacity * lineOpacity;\n      if (points.length / 2 + this.instanceCount > this.maxInstances) {\n        this.endBatch();\n      }\n      if (points.length == 4) {\n        // straight line\n        var instance = this.instanceCount;\n        this.vertTypeBuffer.getView(instance)[0] = EDGE_STRAIGHT;\n        var indexView = this.indexBuffer.getView(instance);\n        indexToVec4(eleIndex, indexView);\n        var colorView = this.colorBuffer.getView(instance);\n        toWebGLColor(color, opacity, colorView);\n        var lineWidthBuffer = this.lineWidthBuffer.getView(instance);\n        lineWidthBuffer[0] = width;\n        var sourceTargetView = this.pointAPointBBuffer.getView(instance);\n        sourceTargetView[0] = points[0]; // source x\n        sourceTargetView[1] = points[1]; // source y\n        sourceTargetView[2] = points[2]; // target x\n        sourceTargetView[3] = points[3]; // target y\n\n        this.instanceCount++;\n        if (this.instanceCount >= this.maxInstances) {\n          this.endBatch();\n        }\n      } else {\n        // curved line\n        for (var i = 0; i < points.length - 2; i += 2) {\n          var _instance = this.instanceCount;\n          this.vertTypeBuffer.getView(_instance)[0] = EDGE_CURVE_SEGMENT;\n          var _indexView = this.indexBuffer.getView(_instance);\n          indexToVec4(eleIndex, _indexView);\n          var _colorView = this.colorBuffer.getView(_instance);\n          toWebGLColor(color, opacity, _colorView);\n          var _lineWidthBuffer = this.lineWidthBuffer.getView(_instance);\n          _lineWidthBuffer[0] = width;\n          var pAx = points[i - 2],\n            pAy = points[i - 1];\n          var pBx = points[i],\n            pBy = points[i + 1];\n          var pCx = points[i + 2],\n            pCy = points[i + 3];\n          var pDx = points[i + 4],\n            pDy = points[i + 5];\n\n          // make phantom points for the first and last segments\n          // TODO adding 0.001 to avoid division by zero in the shader (I think), need a better solution\n          if (i == 0) {\n            pAx = 2 * pBx - pCx + 0.001;\n            pAy = 2 * pBy - pCy + 0.001;\n          }\n          if (i == points.length - 4) {\n            pDx = 2 * pCx - pBx + 0.001;\n            pDy = 2 * pCy - pBy + 0.001;\n          }\n          var pointABView = this.pointAPointBBuffer.getView(_instance);\n          pointABView[0] = pAx;\n          pointABView[1] = pAy;\n          pointABView[2] = pBx;\n          pointABView[3] = pBy;\n          var pointCDView = this.pointCPointDBuffer.getView(_instance);\n          pointCDView[0] = pCx;\n          pointCDView[1] = pCy;\n          pointCDView[2] = pDx;\n          pointCDView[3] = pDy;\n          this.instanceCount++;\n          if (this.instanceCount >= this.maxInstances) {\n            this.endBatch();\n          }\n        }\n      }\n    }\n  }, {\n    key: \"_isValidEdge\",\n    value: function _isValidEdge(edge) {\n      var rs = edge._private.rscratch;\n      if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) {\n        // isNaN in case edge is impossible and browser bugs (e.g. safari)\n        return false;\n      }\n      return true;\n    }\n  }, {\n    key: \"_getEdgePoints\",\n    value: function _getEdgePoints(edge) {\n      var rs = edge._private.rscratch;\n\n      // if bezier ctrl pts can not be calculated, then die\n      if (!this._isValidEdge(edge)) {\n        // isNaN in case edge is impossible and browser bugs (e.g. safari)\n        return;\n      }\n      var controlPoints = rs.allpts;\n      if (controlPoints.length == 4) {\n        return controlPoints;\n      }\n      var numSegments = this._getNumSegments(edge);\n      return this._getCurveSegmentPoints(controlPoints, numSegments);\n    }\n  }, {\n    key: \"_getNumSegments\",\n    value: function _getNumSegments(edge) {\n      // TODO Need a heuristic that decides how many segments to use. Factors to consider:\n      // - edge width/length\n      // - edge curvature (the more the curvature, the more segments)\n      // - zoom level (more segments when zoomed in)\n      // - number of visible edges (more segments when there are fewer edges)\n      // - performance (fewer segments when performance is a concern)\n      // - user configurable option(s)\n      // note: number of segments must be less than the max number of instances\n      // note: segments don't need to be evenly spaced out, it might make sense to have shorter segments nearer to the control points\n      var numSegments = 15;\n      return Math.min(Math.max(numSegments, 5), this.maxInstances);\n    }\n  }, {\n    key: \"_getCurveSegmentPoints\",\n    value: function _getCurveSegmentPoints(controlPoints, segments) {\n      if (controlPoints.length == 4) {\n        return controlPoints; // straight line\n      }\n      var curvePoints = Array((segments + 1) * 2);\n      for (var i = 0; i <= segments; i++) {\n        // the first and last points are the same as the first and last control points\n        if (i == 0) {\n          curvePoints[0] = controlPoints[0];\n          curvePoints[1] = controlPoints[1];\n        } else if (i == segments) {\n          curvePoints[i * 2] = controlPoints[controlPoints.length - 2];\n          curvePoints[i * 2 + 1] = controlPoints[controlPoints.length - 1];\n        } else {\n          var t = i / segments; // segments have equal length, its not strictly necessary to do it this way\n          // pass in curvePoints to set the values in the array directly\n          this._setCurvePoint(controlPoints, t, curvePoints, i * 2);\n        }\n      }\n      return curvePoints;\n    }\n  }, {\n    key: \"_setCurvePoint\",\n    value: function _setCurvePoint(points, t, curvePoints, cpi) {\n      if (points.length <= 2) {\n        curvePoints[cpi] = points[0];\n        curvePoints[cpi + 1] = points[1];\n      } else {\n        var newpoints = Array(points.length - 2);\n        for (var i = 0; i < newpoints.length; i += 2) {\n          var x = (1 - t) * points[i] + t * points[i + 2];\n          var y = (1 - t) * points[i + 1] + t * points[i + 3];\n          newpoints[i] = x;\n          newpoints[i + 1] = y;\n        }\n        return this._setCurvePoint(newpoints, t, curvePoints, cpi);\n      }\n    }\n  }, {\n    key: \"endBatch\",\n    value: function endBatch() {\n      var gl = this.gl,\n        vao = this.vao,\n        vertexCount = this.vertexCount,\n        count = this.instanceCount;\n      if (count === 0) return;\n      var program = this.renderTarget.picking ? this.pickingProgram : this.program;\n      gl.useProgram(program);\n      gl.bindVertexArray(vao);\n\n      // buffer the attribute data\n      var _iterator2 = _createForOfIteratorHelper(this.buffers),\n        _step2;\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var buffer = _step2.value;\n          buffer.bufferSubData(count);\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n      var atlases = this.batchManager.getAtlases();\n      // must buffer before activating texture units\n      for (var i = 0; i < atlases.length; i++) {\n        atlases[i].bufferIfNeeded(gl);\n      }\n      // Activate all the texture units that we need\n      for (var _i2 = 0; _i2 < atlases.length; _i2++) {\n        gl.activeTexture(gl.TEXTURE0 + _i2);\n        gl.bindTexture(gl.TEXTURE_2D, atlases[_i2].texture);\n        gl.uniform1i(program.uTextures[_i2], _i2);\n      }\n\n      // Set the uniforms\n      gl.uniform1f(program.uZoom, getEffectiveZoom(this.r));\n      gl.uniformMatrix3fv(program.uPanZoomMatrix, false, this.panZoomMatrix);\n      gl.uniform1i(program.uAtlasSize, this.batchManager.getAtlasSize());\n      // set background color, needed for edge arrow color blending\n      var webglBgColor = toWebGLColor(this.bgColor, 1);\n      gl.uniform4fv(program.uBGColor, webglBgColor);\n\n      // draw!\n      gl.drawArraysInstanced(gl.TRIANGLES, 0, vertexCount, count);\n      gl.bindVertexArray(null);\n      gl.bindTexture(gl.TEXTURE_2D, null); // TODO is this right when having multiple texture units?\n\n      if (this.debug) {\n        this.batchDebugInfo.push({\n          count: count,\n          // instance count\n          atlasCount: atlases.length\n        });\n      }\n\n      // start the next batch, even if not needed\n      this.startBatch();\n    }\n  }, {\n    key: \"getDebugInfo\",\n    value: function getDebugInfo() {\n      var atlasInfo = this.atlasManager.getDebugInfo();\n      var totalAtlases = atlasInfo.reduce(function (count, info) {\n        return count + info.atlasCount;\n      }, 0);\n      var batchInfo = this.batchDebugInfo;\n      var totalInstances = batchInfo.reduce(function (count, info) {\n        return count + info.count;\n      }, 0);\n      return {\n        atlasInfo: atlasInfo,\n        totalAtlases: totalAtlases,\n        wrappedCount: this.wrappedCount,\n        simpleCount: this.simpleCount,\n        batchCount: batchInfo.length,\n        batchInfo: batchInfo,\n        totalInstances: totalInstances\n      };\n    }\n  }]);\n}();\n\nvar CRp$4 = {};\n\n/**\n * Initialize the WebGL rendering mode after the Canvas renderer has been initialized.\n */\nCRp$4.initWebgl = function (opts, fns) {\n  var r = this;\n  var gl = r.data.contexts[r.WEBGL];\n\n  // Set defaults and limits for configuration options.\n  opts.bgColor = getBGColor(r);\n  opts.webglTexSize = Math.min(opts.webglTexSize, gl.getParameter(gl.MAX_TEXTURE_SIZE));\n  opts.webglTexRows = Math.min(opts.webglTexRows, 54);\n  opts.webglTexRowsNodes = Math.min(opts.webglTexRowsNodes, 54);\n  opts.webglBatchSize = Math.min(opts.webglBatchSize, 16384);\n  opts.webglTexPerBatch = Math.min(opts.webglTexPerBatch, gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS));\n\n  // Turn debug mode on or off.\n  r.webglDebug = opts.webglDebug;\n  r.webglDebugShowAtlases = opts.webglDebugShowAtlases;\n\n  // Create offscreen framebuffer that stores the results when RENDER_TARGET.PICKING is enabled.\n  // This is used to store the topmost element z-index for each pixel, which is used to tell whats under the mouse cursor point.\n  r.pickingFrameBuffer = createPickingFrameBuffer(gl);\n  r.pickingFrameBuffer.needsDraw = true;\n\n  // Create an ElementDrawingWebGL instance wich is used to do the actual WebGL rendering.\n  // This instance needs to be configured to draw various types of elements.\n  r.drawing = new ElementDrawingWebGL(r, gl, opts);\n\n  // Some functions that are used to configure ElementDrawingWebGL\n  var getLabelRotation = function getLabelRotation(prop) {\n    return function (ele) {\n      return r.getTextAngle(ele, prop);\n    };\n  };\n  var isLabelVisible = function isLabelVisible(prop) {\n    return function (ele) {\n      var label = ele.pstyle(prop);\n      return label && label.value;\n    };\n  };\n  var isLayerVisible = function isLayerVisible(prefix) {\n    return function (node) {\n      // prefix is 'overlay' or 'underlay'\n      return node.pstyle(\"\".concat(prefix, \"-opacity\")).value > 0;\n    };\n  };\n  var getTexPickingMode = function getTexPickingMode(ele) {\n    // tells when a label should be clickable\n    var enabled = ele.pstyle('text-events').strValue === 'yes';\n    return enabled ? TEX_PICKING_MODE.USE_BB : TEX_PICKING_MODE.IGNORE;\n  };\n  var getBBForSimpleShape = function getBBForSimpleShape(node) {\n    // \"simple\" shapes need their BB to include border and padding\n    var _node$position = node.position(),\n      x = _node$position.x,\n      y = _node$position.y;\n    var w = node.outerWidth(); // includes border and padding\n    var h = node.outerHeight();\n    return {\n      w: w,\n      h: h,\n      x1: x - w / 2,\n      y1: y - h / 2\n    };\n  };\n\n  // An AtlasCollection is a collection of Atlases that have the same configuraiton options.\n  // Create one for node bodies and one for all types of labels.\n  r.drawing.addAtlasCollection('node', {\n    texRows: opts.webglTexRowsNodes\n  });\n  r.drawing.addAtlasCollection('label', {\n    texRows: opts.webglTexRows\n  });\n\n  // Configure the different types of elements that can be rendered.\n\n  // Node bodies can be rendered as textures or as \"simple shapes\". \n  // Simple shapes are preferred because they do not use texture memory.\n  // Textures are required if the node body uses complex styles. \n  r.drawing.addTextureAtlasRenderType('node-body', {\n    collection: 'node',\n    getKey: fns.getStyleKey,\n    getBoundingBox: fns.getElementBox,\n    drawElement: fns.drawElement\n  });\n  r.drawing.addSimpleShapeRenderType('node-body', {\n    getBoundingBox: getBBForSimpleShape,\n    isSimple: isSimpleShape,\n    shapeProps: {\n      shape: 'shape',\n      color: 'background-color',\n      opacity: 'background-opacity',\n      radius: 'corner-radius',\n      border: true\n    }\n  });\n  r.drawing.addSimpleShapeRenderType('node-overlay', {\n    getBoundingBox: getBBForSimpleShape,\n    isVisible: isLayerVisible('overlay'),\n    shapeProps: {\n      shape: 'overlay-shape',\n      color: 'overlay-color',\n      opacity: 'overlay-opacity',\n      padding: 'overlay-padding',\n      radius: 'overlay-corner-radius'\n    }\n  });\n  r.drawing.addSimpleShapeRenderType('node-underlay', {\n    getBoundingBox: getBBForSimpleShape,\n    isVisible: isLayerVisible('underlay'),\n    shapeProps: {\n      shape: 'underlay-shape',\n      color: 'underlay-color',\n      opacity: 'underlay-opacity',\n      padding: 'underlay-padding',\n      radius: 'underlay-corner-radius'\n    }\n  });\n  r.drawing.addTextureAtlasRenderType('label', {\n    // node label or edge mid label\n    collection: 'label',\n    getTexPickingMode: getTexPickingMode,\n    getKey: getStyleKeysForLabel(fns.getLabelKey, null),\n    getBoundingBox: getBoundingBoxForLabel(fns.getLabelBox, null),\n    drawClipped: true,\n    drawElement: fns.drawLabel,\n    getRotation: getLabelRotation(null),\n    getRotationPoint: fns.getLabelRotationPoint,\n    getRotationOffset: fns.getLabelRotationOffset,\n    isVisible: isLabelVisible('label')\n  });\n  r.drawing.addTextureAtlasRenderType('edge-source-label', {\n    collection: 'label',\n    getTexPickingMode: getTexPickingMode,\n    getKey: getStyleKeysForLabel(fns.getSourceLabelKey, 'source'),\n    getBoundingBox: getBoundingBoxForLabel(fns.getSourceLabelBox, 'source'),\n    drawClipped: true,\n    drawElement: fns.drawSourceLabel,\n    getRotation: getLabelRotation('source'),\n    getRotationPoint: fns.getSourceLabelRotationPoint,\n    getRotationOffset: fns.getSourceLabelRotationOffset,\n    isVisible: isLabelVisible('source-label')\n  });\n  r.drawing.addTextureAtlasRenderType('edge-target-label', {\n    collection: 'label',\n    getTexPickingMode: getTexPickingMode,\n    getKey: getStyleKeysForLabel(fns.getTargetLabelKey, 'target'),\n    getBoundingBox: getBoundingBoxForLabel(fns.getTargetLabelBox, 'target'),\n    drawClipped: true,\n    drawElement: fns.drawTargetLabel,\n    getRotation: getLabelRotation('target'),\n    getRotationPoint: fns.getTargetLabelRotationPoint,\n    getRotationOffset: fns.getTargetLabelRotationOffset,\n    isVisible: isLabelVisible('target-label')\n  });\n\n  // Very simplistic way of triggering garbage collection, just use a timer.\n  var setGCFlag = debounce(function () {\n    console.log('garbage collect flag set');\n    r.data.gc = true;\n  }, 10000);\n\n  // Event listener checks if style keys are no longer in use.\n  r.onUpdateEleCalcs(function (willDraw, eles) {\n    var gcNeeded = false;\n    if (eles && eles.length > 0) {\n      gcNeeded |= r.drawing.invalidate(eles);\n    }\n    if (gcNeeded) {\n      setGCFlag();\n    }\n  });\n\n  // \"Override\" certain functions in canvas and base renderer\n  overrideCanvasRendererFunctions(r);\n};\nfunction getBGColor(r) {\n  var container = r.cy.container();\n  var cssColor = container && container.style && container.style.backgroundColor || 'white';\n  return color2tuple(cssColor);\n}\nfunction getLabelLines(ele, prefix) {\n  var rs = ele._private.rscratch;\n  return getPrefixedProperty(rs, 'labelWrapCachedLines', prefix) || [];\n}\n\n/** \n * Handle multi-line labels by rendering each line as a seperate texture.\n * That means each line needs its own style key.\n */\nvar getStyleKeysForLabel = function getStyleKeysForLabel(getKey, prefix) {\n  return function (ele) {\n    var key = getKey(ele);\n    var lines = getLabelLines(ele, prefix);\n    if (lines.length > 1) {\n      return lines.map(function (line, index) {\n        return \"\".concat(key, \"_\").concat(index);\n      });\n    }\n    return key;\n  };\n};\n\n/**\n * Need to create a separate bounding box for each line of a multi-line label.\n * Note that 'drawClipped: true' should be used with this.\n */\nvar getBoundingBoxForLabel = function getBoundingBoxForLabel(getBoundingBox, prefix) {\n  return function (ele, styleKey) {\n    var bb = getBoundingBox(ele);\n    if (typeof styleKey === 'string') {\n      var ui = styleKey.indexOf('_');\n      if (ui > 0) {\n        var lineIndex = Number(styleKey.substring(ui + 1));\n        var lines = getLabelLines(ele, prefix);\n        // Adjust the height and Y coordinate for one line of the label.\n        var h = bb.h / lines.length;\n        var yOffset = h * lineIndex;\n        var y1 = bb.y1 + yOffset;\n        // the yOffset is needed when rotating the label\n        return {\n          x1: bb.x1,\n          w: bb.w,\n          y1: y1,\n          h: h,\n          yOffset: yOffset\n        };\n      }\n    }\n    return bb;\n  };\n};\n\n/**\n * Plug into the canvas renderer by dynamically overriding some of its functions.\n * This requires minimal changes to the canvas rendrerer.\n */\nfunction overrideCanvasRendererFunctions(r) {\n  {\n    // Override the render function to call the webgl render function if the zoom level is appropriate\n    var renderCanvas = r.render;\n    r.render = function (options) {\n      options = options || {};\n      var cy = r.cy;\n      if (r.webgl) {\n        // If the zoom level is greater than the max zoom level, then disable webgl and switch back to \n        // the canvas renderer.\n        if (cy.zoom() > maxZoom$1) {\n          clearWebgl(r);\n          renderCanvas.call(r, options);\n        } else {\n          clearCanvas(r);\n          renderWebgl(r, options, RENDER_TARGET.SCREEN);\n        }\n      }\n    };\n  }\n  {\n    // Override the matchCanvasSize function to update the picking frame buffer size\n    var baseFunc = r.matchCanvasSize;\n    r.matchCanvasSize = function (container) {\n      baseFunc.call(r, container);\n      r.pickingFrameBuffer.setFramebufferAttachmentSizes(r.canvasWidth, r.canvasHeight);\n      r.pickingFrameBuffer.needsDraw = true;\n    };\n  }\n  {\n    // Override function to call the webgl version for picking.\n    // Don't override r.getAllInBox() selction box picking, its not accurate enough with webgl\n    r.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) {\n      // the canvas version of this function is very slow on large graphs\n      return findNearestElementsWebgl(r, x, y);\n    };\n  }\n  {\n    // need to know when the cached elements have changed so we can invalidate our caches\n    var _baseFunc = r.invalidateCachedZSortedEles;\n    r.invalidateCachedZSortedEles = function () {\n      _baseFunc.call(r);\n      r.pickingFrameBuffer.needsDraw = true;\n    };\n  }\n  {\n    // need to know when the cached elements have changed so we can invalidate our caches\n    var _baseFunc2 = r.notify;\n    r.notify = function (eventName, eles) {\n      _baseFunc2.call(r, eventName, eles);\n      if (eventName === 'viewport' || eventName === 'bounds') {\n        r.pickingFrameBuffer.needsDraw = true;\n      } else if (eventName === 'background') {\n        // background image finished loading, need to redraw\n        r.drawing.invalidate(eles, {\n          type: 'node-body'\n        });\n      }\n    };\n  }\n}\nfunction clearWebgl(r) {\n  var gl = r.data.contexts[r.WEBGL];\n  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n}\nfunction clearCanvas(r) {\n  // the CRp.clearCanvas() function doesn't take the transform into account\n  var clear = function clear(context) {\n    context.save();\n    context.setTransform(1, 0, 0, 1, 0, 0);\n    context.clearRect(0, 0, r.canvasWidth, r.canvasHeight);\n    context.restore();\n  };\n  clear(r.data.contexts[r.NODE]);\n  clear(r.data.contexts[r.DRAG]);\n}\nfunction createPanZoomMatrix(r) {\n  var width = r.canvasWidth;\n  var height = r.canvasHeight;\n  var _util$getEffectivePan = getEffectivePanZoom(r),\n    pan = _util$getEffectivePan.pan,\n    zoom = _util$getEffectivePan.zoom;\n  var transform = create();\n  translate(transform, transform, [pan.x, pan.y]);\n  scale(transform, transform, [zoom, zoom]);\n  var projection$1 = create();\n  projection(projection$1, width, height);\n  var product = create();\n  multiply(product, projection$1, transform);\n  return product;\n}\nfunction setContextTransform(r, context) {\n  var width = r.canvasWidth;\n  var height = r.canvasHeight;\n  var _util$getEffectivePan2 = getEffectivePanZoom(r),\n    pan = _util$getEffectivePan2.pan,\n    zoom = _util$getEffectivePan2.zoom;\n  context.setTransform(1, 0, 0, 1, 0, 0);\n  context.clearRect(0, 0, width, height);\n  context.translate(pan.x, pan.y);\n  context.scale(zoom, zoom);\n}\nfunction drawSelectionRectangle(r, options) {\n  r.drawSelectionRectangle(options, function (context) {\n    return setContextTransform(r, context);\n  });\n}\nfunction drawAxes(r) {\n  // for debgging\n  var context = r.data.contexts[r.NODE];\n  context.save();\n  setContextTransform(r, context);\n  context.strokeStyle = 'rgba(0, 0, 0, 0.3)';\n  context.beginPath();\n  context.moveTo(-1e3, 0);\n  context.lineTo(1000, 0);\n  context.stroke();\n  context.beginPath();\n  context.moveTo(0, -1e3);\n  context.lineTo(0, 1000);\n  context.stroke();\n  context.restore();\n}\nfunction drawAtlases(r) {\n  // For debugging the atlases, this doesn't work for Atlases that are locked\n  var draw = function draw(drawing, name, row) {\n    var collection = drawing.atlasManager.getAtlasCollection(name);\n    var context = r.data.contexts[r.NODE];\n    var atlases = collection.atlases;\n    for (var _i = 0; _i < atlases.length; _i++) {\n      var atlas = atlases[_i];\n      var canvas = atlas.canvas;\n      if (canvas) {\n        var w = canvas.width;\n        var h = canvas.height;\n        var x = w * _i;\n        var y = canvas.height * row;\n        var scale = 0.4;\n        context.save();\n        context.scale(scale, scale);\n        context.drawImage(canvas, x, y);\n        context.strokeStyle = 'black';\n        context.rect(x, y, w, h);\n        context.stroke();\n        context.restore();\n      }\n    }\n  };\n  var i = 0;\n  draw(r.drawing, 'node', i++);\n  draw(r.drawing, 'label', i++);\n}\n\n/**\n * Returns the z-order index of elments under or very close to the mouse cursor point.\n * Arguments are in model coordinates.\n * (x1, y1) is top left corner\n * (x2, y2) is bottom right corner (optional)\n * Returns a Set of indexes.\n */\nfunction getPickingIndexes(r, mX1, mY1, mX2, mY2) {\n  var x, y, w, h;\n  var _util$getEffectivePan3 = getEffectivePanZoom(r),\n    pan = _util$getEffectivePan3.pan,\n    zoom = _util$getEffectivePan3.zoom;\n  {\n    var _util$modelToRendered = modelToRenderedPosition(r, pan, zoom, mX1, mY1),\n      _util$modelToRendered2 = _slicedToArray(_util$modelToRendered, 2),\n      cX1 = _util$modelToRendered2[0],\n      cY1 = _util$modelToRendered2[1];\n    var t = 6; // should be even\n    x = cX1 - t / 2;\n    y = cY1 - t / 2;\n    w = t;\n    h = t;\n  }\n  if (w === 0 || h === 0) {\n    return [];\n  }\n  var gl = r.data.contexts[r.WEBGL];\n  gl.bindFramebuffer(gl.FRAMEBUFFER, r.pickingFrameBuffer);\n  if (r.pickingFrameBuffer.needsDraw) {\n    // Draw element z-indexes to the picking framebuffer\n    gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);\n    renderWebgl(r, null, RENDER_TARGET.PICKING);\n    r.pickingFrameBuffer.needsDraw = false;\n  }\n  var n = w * h; // number of pixels to read\n  var data = new Uint8Array(n * 4); // 4 bytes per pixel\n  gl.readPixels(x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, data);\n  gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n  var indexes = new Set();\n  for (var i = 0; i < n; i++) {\n    var pixel = data.slice(i * 4, i * 4 + 4);\n    var index = vec4ToIndex(pixel) - 1; // The framebuffer is cleared with 0s, so z-indexes are offset by 1\n    if (index >= 0) {\n      indexes.add(index);\n    }\n  }\n  return indexes;\n}\n\n/**\n * Cy.js: model coordinate y axis goes down\n */\nfunction findNearestElementsWebgl(r, x, y) {\n  // model coordinates\n  var indexes = getPickingIndexes(r, x, y);\n  var eles = r.getCachedZSortedEles();\n  var node, edge;\n  var _iterator = _createForOfIteratorHelper(indexes),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var index = _step.value;\n      var ele = eles[index];\n      if (!node && ele.isNode()) {\n        node = ele;\n      }\n      if (!edge && ele.isEdge()) {\n        edge = ele;\n      }\n      if (node && edge) {\n        break;\n      }\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n  return [node, edge].filter(Boolean);\n}\n\n/**\n * Draw one node or edge. \n */\nfunction drawEle(r, index, ele) {\n  var drawing = r.drawing;\n  index += 1; // 0 is used to clear the background, need to offset all z-indexes by one\n  if (ele.isNode()) {\n    drawing.drawNode(ele, index, 'node-underlay');\n    drawing.drawNode(ele, index, 'node-body');\n    drawing.drawTexture(ele, index, 'label');\n    drawing.drawNode(ele, index, 'node-overlay');\n  } else {\n    drawing.drawEdgeLine(ele, index);\n    drawing.drawEdgeArrow(ele, index, 'source');\n    drawing.drawEdgeArrow(ele, index, 'target');\n    drawing.drawTexture(ele, index, 'label');\n    drawing.drawTexture(ele, index, 'edge-source-label');\n    drawing.drawTexture(ele, index, 'edge-target-label');\n  }\n}\n\n/**\n * Render one frame.\n */\nfunction renderWebgl(r, options, renderTarget) {\n  var start;\n  if (r.webglDebug) {\n    start = performance.now(); // eslint-disable-line no-undef\n  }\n  var drawing = r.drawing;\n  var eleCount = 0;\n  if (renderTarget.screen) {\n    if (r.data.canvasNeedsRedraw[r.SELECT_BOX]) {\n      drawSelectionRectangle(r, options);\n    }\n  }\n\n  // see drawing-elements.js drawCachedElement()\n  if (r.data.canvasNeedsRedraw[r.NODE] || renderTarget.picking) {\n    var gl = r.data.contexts[r.WEBGL];\n    if (renderTarget.screen) {\n      gl.clearColor(0, 0, 0, 0); // background color\n      gl.enable(gl.BLEND); // enable alpha blending of colors\n      gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); // webgl colors use premultiplied alpha\n    } else {\n      gl.disable(gl.BLEND); // don't blend z-order index values! they are not colors\n    }\n    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n    gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);\n    var panZoomMatrix = createPanZoomMatrix(r);\n    var eles = r.getCachedZSortedEles();\n    eleCount = eles.length;\n    drawing.startFrame(panZoomMatrix, renderTarget);\n    if (renderTarget.screen) {\n      for (var i = 0; i < eles.nondrag.length; i++) {\n        drawEle(r, i, eles.nondrag[i]);\n      }\n      for (var _i2 = 0; _i2 < eles.drag.length; _i2++) {\n        drawEle(r, _i2, eles.drag[_i2]);\n      }\n    } else if (renderTarget.picking) {\n      for (var _i3 = 0; _i3 < eles.length; _i3++) {\n        drawEle(r, _i3, eles[_i3]);\n      }\n    }\n    drawing.endFrame();\n    if (renderTarget.screen && r.webglDebugShowAtlases) {\n      drawAxes(r);\n      drawAtlases(r);\n    }\n    r.data.canvasNeedsRedraw[r.NODE] = false;\n    r.data.canvasNeedsRedraw[r.DRAG] = false;\n  }\n  if (r.webglDebug) {\n    // eslint-disable-next-line no-undef\n    var end = performance.now();\n    var compact = false;\n    var time = Math.ceil(end - start);\n    var debugInfo = drawing.getDebugInfo();\n    var report = [\"\".concat(eleCount, \" elements\"), \"\".concat(debugInfo.totalInstances, \" instances\"), \"\".concat(debugInfo.batchCount, \" batches\"), \"\".concat(debugInfo.totalAtlases, \" atlases\"), \"\".concat(debugInfo.wrappedCount, \" wrapped textures\"), \"\".concat(debugInfo.simpleCount, \" simple shapes\")].join(', ');\n    if (compact) {\n      console.log(\"WebGL (\".concat(renderTarget.name, \") - time \").concat(time, \"ms, \").concat(report));\n    } else {\n      console.log(\"WebGL (\".concat(renderTarget.name, \") - frame time \").concat(time, \"ms\"));\n      console.log('Totals:');\n      console.log(\"  \".concat(report));\n      console.log('Texture Atlases Used:');\n      var atlasInfo = debugInfo.atlasInfo;\n      var _iterator2 = _createForOfIteratorHelper(atlasInfo),\n        _step2;\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var info = _step2.value;\n          console.log(\"  \".concat(info.type, \": \").concat(info.keyCount, \" keys, \").concat(info.atlasCount, \" atlases\"));\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n      console.log('');\n    }\n  }\n  if (r.data.gc) {\n    console.log('Garbage Collect!');\n    r.data.gc = false;\n    drawing.gc();\n  }\n}\n\nvar CRp$3 = {};\n\n// @O Polygon drawing\nCRp$3.drawPolygonPath = function (context, x, y, width, height, points) {\n  var halfW = width / 2;\n  var halfH = height / 2;\n  if (context.beginPath) {\n    context.beginPath();\n  }\n  context.moveTo(x + halfW * points[0], y + halfH * points[1]);\n  for (var i = 1; i < points.length / 2; i++) {\n    context.lineTo(x + halfW * points[i * 2], y + halfH * points[i * 2 + 1]);\n  }\n  context.closePath();\n};\nCRp$3.drawRoundPolygonPath = function (context, x, y, width, height, points, corners) {\n  corners.forEach(function (corner) {\n    return drawPreparedRoundCorner(context, corner);\n  });\n  context.closePath();\n};\n\n// Round rectangle drawing\nCRp$3.drawRoundRectanglePath = function (context, x, y, width, height, radius) {\n  var halfWidth = width / 2;\n  var halfHeight = height / 2;\n  var cornerRadius = radius === 'auto' ? getRoundRectangleRadius(width, height) : Math.min(radius, halfHeight, halfWidth);\n  if (context.beginPath) {\n    context.beginPath();\n  }\n\n  // Start at top middle\n  context.moveTo(x, y - halfHeight);\n  // Arc from middle top to right side\n  context.arcTo(x + halfWidth, y - halfHeight, x + halfWidth, y, cornerRadius);\n  // Arc from right side to bottom\n  context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius);\n  // Arc from bottom to left side\n  context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius);\n  // Arc from left side to topBorder\n  context.arcTo(x - halfWidth, y - halfHeight, x, y - halfHeight, cornerRadius);\n  // Join line\n  context.lineTo(x, y - halfHeight);\n  context.closePath();\n};\nCRp$3.drawBottomRoundRectanglePath = function (context, x, y, width, height, radius) {\n  var halfWidth = width / 2;\n  var halfHeight = height / 2;\n  var cornerRadius = radius === 'auto' ? getRoundRectangleRadius(width, height) : radius;\n  if (context.beginPath) {\n    context.beginPath();\n  }\n\n  // Start at top middle\n  context.moveTo(x, y - halfHeight);\n  context.lineTo(x + halfWidth, y - halfHeight);\n  context.lineTo(x + halfWidth, y);\n  context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius);\n  context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius);\n  context.lineTo(x - halfWidth, y - halfHeight);\n  context.lineTo(x, y - halfHeight);\n  context.closePath();\n};\nCRp$3.drawCutRectanglePath = function (context, x, y, width, height, points, corners) {\n  var halfWidth = width / 2;\n  var halfHeight = height / 2;\n  var cornerLength = corners === 'auto' ? getCutRectangleCornerLength() : corners;\n  if (context.beginPath) {\n    context.beginPath();\n  }\n  context.moveTo(x - halfWidth + cornerLength, y - halfHeight);\n  context.lineTo(x + halfWidth - cornerLength, y - halfHeight);\n  context.lineTo(x + halfWidth, y - halfHeight + cornerLength);\n  context.lineTo(x + halfWidth, y + halfHeight - cornerLength);\n  context.lineTo(x + halfWidth - cornerLength, y + halfHeight);\n  context.lineTo(x - halfWidth + cornerLength, y + halfHeight);\n  context.lineTo(x - halfWidth, y + halfHeight - cornerLength);\n  context.lineTo(x - halfWidth, y - halfHeight + cornerLength);\n  context.closePath();\n};\nCRp$3.drawBarrelPath = function (context, x, y, width, height) {\n  var halfWidth = width / 2;\n  var halfHeight = height / 2;\n  var xBegin = x - halfWidth;\n  var xEnd = x + halfWidth;\n  var yBegin = y - halfHeight;\n  var yEnd = y + halfHeight;\n  var barrelCurveConstants = getBarrelCurveConstants(width, height);\n  var wOffset = barrelCurveConstants.widthOffset;\n  var hOffset = barrelCurveConstants.heightOffset;\n  var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset;\n  if (context.beginPath) {\n    context.beginPath();\n  }\n  context.moveTo(xBegin, yBegin + hOffset);\n  context.lineTo(xBegin, yEnd - hOffset);\n  context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd);\n  context.lineTo(xEnd - wOffset, yEnd);\n  context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset);\n  context.lineTo(xEnd, yBegin + hOffset);\n  context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin);\n  context.lineTo(xBegin + wOffset, yBegin);\n  context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset);\n  context.closePath();\n};\nvar sin0 = Math.sin(0);\nvar cos0 = Math.cos(0);\nvar sin = {};\nvar cos = {};\nvar ellipseStepSize = Math.PI / 40;\nfor (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {\n  sin[i] = Math.sin(i);\n  cos[i] = Math.cos(i);\n}\nCRp$3.drawEllipsePath = function (context, centerX, centerY, width, height) {\n  if (context.beginPath) {\n    context.beginPath();\n  }\n  if (context.ellipse) {\n    context.ellipse(centerX, centerY, width / 2, height / 2, 0, 0, 2 * Math.PI);\n  } else {\n    var xPos, yPos;\n    var rw = width / 2;\n    var rh = height / 2;\n    for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {\n      xPos = centerX - rw * sin[i] * sin0 + rw * cos[i] * cos0;\n      yPos = centerY + rh * cos[i] * sin0 + rh * sin[i] * cos0;\n      if (i === 0) {\n        context.moveTo(xPos, yPos);\n      } else {\n        context.lineTo(xPos, yPos);\n      }\n    }\n  }\n  context.closePath();\n};\n\n/* global atob, ArrayBuffer, Uint8Array, Blob */\n\nvar CRp$2 = {};\nCRp$2.createBuffer = function (w, h) {\n  var buffer = document.createElement('canvas'); // eslint-disable-line no-undef\n  buffer.width = w;\n  buffer.height = h;\n  return [buffer, buffer.getContext('2d')];\n};\nCRp$2.bufferCanvasImage = function (options) {\n  var cy = this.cy;\n  var eles = cy.mutableElements();\n  var bb = eles.boundingBox();\n  var ctrRect = this.findContainerClientCoords();\n  var width = options.full ? Math.ceil(bb.w) : ctrRect[2];\n  var height = options.full ? Math.ceil(bb.h) : ctrRect[3];\n  var specdMaxDims = number$1(options.maxWidth) || number$1(options.maxHeight);\n  var pxRatio = this.getPixelRatio();\n  var scale = 1;\n  if (options.scale !== undefined) {\n    width *= options.scale;\n    height *= options.scale;\n    scale = options.scale;\n  } else if (specdMaxDims) {\n    var maxScaleW = Infinity;\n    var maxScaleH = Infinity;\n    if (number$1(options.maxWidth)) {\n      maxScaleW = scale * options.maxWidth / width;\n    }\n    if (number$1(options.maxHeight)) {\n      maxScaleH = scale * options.maxHeight / height;\n    }\n    scale = Math.min(maxScaleW, maxScaleH);\n    width *= scale;\n    height *= scale;\n  }\n  if (!specdMaxDims) {\n    width *= pxRatio;\n    height *= pxRatio;\n    scale *= pxRatio;\n  }\n  var buffCanvas = document.createElement('canvas'); // eslint-disable-line no-undef\n\n  buffCanvas.width = width;\n  buffCanvas.height = height;\n  buffCanvas.style.width = width + 'px';\n  buffCanvas.style.height = height + 'px';\n  var buffCxt = buffCanvas.getContext('2d');\n\n  // Rasterize the layers, but only if container has nonzero size\n  if (width > 0 && height > 0) {\n    buffCxt.clearRect(0, 0, width, height);\n    buffCxt.globalCompositeOperation = 'source-over';\n    var zsortedEles = this.getCachedZSortedEles();\n    if (options.full) {\n      // draw the full bounds of the graph\n      buffCxt.translate(-bb.x1 * scale, -bb.y1 * scale);\n      buffCxt.scale(scale, scale);\n      this.drawElements(buffCxt, zsortedEles);\n      buffCxt.scale(1 / scale, 1 / scale);\n      buffCxt.translate(bb.x1 * scale, bb.y1 * scale);\n    } else {\n      // draw the current view\n      var pan = cy.pan();\n      var translation = {\n        x: pan.x * scale,\n        y: pan.y * scale\n      };\n      scale *= cy.zoom();\n      buffCxt.translate(translation.x, translation.y);\n      buffCxt.scale(scale, scale);\n      this.drawElements(buffCxt, zsortedEles);\n      buffCxt.scale(1 / scale, 1 / scale);\n      buffCxt.translate(-translation.x, -translation.y);\n    }\n\n    // need to fill bg at end like this in order to fill cleared transparent pixels in jpgs\n    if (options.bg) {\n      buffCxt.globalCompositeOperation = 'destination-over';\n      buffCxt.fillStyle = options.bg;\n      buffCxt.rect(0, 0, width, height);\n      buffCxt.fill();\n    }\n  }\n  return buffCanvas;\n};\nfunction b64ToBlob(b64, mimeType) {\n  var bytes = atob(b64);\n  var buff = new ArrayBuffer(bytes.length);\n  var buffUint8 = new Uint8Array(buff);\n  for (var i = 0; i < bytes.length; i++) {\n    buffUint8[i] = bytes.charCodeAt(i);\n  }\n  return new Blob([buff], {\n    type: mimeType\n  });\n}\nfunction b64UriToB64(b64uri) {\n  var i = b64uri.indexOf(',');\n  return b64uri.substr(i + 1);\n}\nfunction output(options, canvas, mimeType) {\n  var getB64Uri = function getB64Uri() {\n    return canvas.toDataURL(mimeType, options.quality);\n  };\n  switch (options.output) {\n    case 'blob-promise':\n      return new Promise$1(function (resolve, reject) {\n        try {\n          canvas.toBlob(function (blob) {\n            if (blob != null) {\n              resolve(blob);\n            } else {\n              reject(new Error('`canvas.toBlob()` sent a null value in its callback'));\n            }\n          }, mimeType, options.quality);\n        } catch (err) {\n          reject(err);\n        }\n      });\n    case 'blob':\n      return b64ToBlob(b64UriToB64(getB64Uri()), mimeType);\n    case 'base64':\n      return b64UriToB64(getB64Uri());\n    case 'base64uri':\n    default:\n      return getB64Uri();\n  }\n}\nCRp$2.png = function (options) {\n  return output(options, this.bufferCanvasImage(options), 'image/png');\n};\nCRp$2.jpg = function (options) {\n  return output(options, this.bufferCanvasImage(options), 'image/jpeg');\n};\n\nvar CRp$1 = {};\nCRp$1.nodeShapeImpl = function (name, context, centerX, centerY, width, height, points, corners) {\n  switch (name) {\n    case 'ellipse':\n      return this.drawEllipsePath(context, centerX, centerY, width, height);\n    case 'polygon':\n      return this.drawPolygonPath(context, centerX, centerY, width, height, points);\n    case 'round-polygon':\n      return this.drawRoundPolygonPath(context, centerX, centerY, width, height, points, corners);\n    case 'roundrectangle':\n    case 'round-rectangle':\n      return this.drawRoundRectanglePath(context, centerX, centerY, width, height, corners);\n    case 'cutrectangle':\n    case 'cut-rectangle':\n      return this.drawCutRectanglePath(context, centerX, centerY, width, height, points, corners);\n    case 'bottomroundrectangle':\n    case 'bottom-round-rectangle':\n      return this.drawBottomRoundRectanglePath(context, centerX, centerY, width, height, corners);\n    case 'barrel':\n      return this.drawBarrelPath(context, centerX, centerY, width, height);\n  }\n};\n\nvar CR = CanvasRenderer;\nvar CRp = CanvasRenderer.prototype;\nCRp.CANVAS_LAYERS = 3;\n//\nCRp.SELECT_BOX = 0;\nCRp.DRAG = 1;\nCRp.NODE = 2;\nCRp.WEBGL = 3;\nCRp.CANVAS_TYPES = ['2d', '2d', '2d', 'webgl2'];\nCRp.BUFFER_COUNT = 3;\n//\nCRp.TEXTURE_BUFFER = 0;\nCRp.MOTIONBLUR_BUFFER_NODE = 1;\nCRp.MOTIONBLUR_BUFFER_DRAG = 2;\nfunction CanvasRenderer(options) {\n  var r = this;\n  var containerWindow = r.cy.window();\n  var document = containerWindow.document;\n  if (options.webgl) {\n    CRp.CANVAS_LAYERS = r.CANVAS_LAYERS = 4;\n    console.log('webgl rendering enabled');\n  }\n  r.data = {\n    canvases: new Array(CRp.CANVAS_LAYERS),\n    contexts: new Array(CRp.CANVAS_LAYERS),\n    canvasNeedsRedraw: new Array(CRp.CANVAS_LAYERS),\n    bufferCanvases: new Array(CRp.BUFFER_COUNT),\n    bufferContexts: new Array(CRp.CANVAS_LAYERS)\n  };\n  var tapHlOffAttr = '-webkit-tap-highlight-color';\n  var tapHlOffStyle = 'rgba(0,0,0,0)';\n  r.data.canvasContainer = document.createElement('div'); // eslint-disable-line no-undef\n  var containerStyle = r.data.canvasContainer.style;\n  r.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle;\n  containerStyle.position = 'relative';\n  containerStyle.zIndex = '0';\n  containerStyle.overflow = 'hidden';\n  var container = options.cy.container();\n  container.appendChild(r.data.canvasContainer);\n  container.style[tapHlOffAttr] = tapHlOffStyle;\n  var styleMap = {\n    '-webkit-user-select': 'none',\n    '-moz-user-select': '-moz-none',\n    'user-select': 'none',\n    '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n    'outline-style': 'none'\n  };\n  if (ms()) {\n    styleMap['-ms-touch-action'] = 'none';\n    styleMap['touch-action'] = 'none';\n  }\n  for (var i = 0; i < CRp.CANVAS_LAYERS; i++) {\n    var canvas = r.data.canvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef\n    var type = CRp.CANVAS_TYPES[i];\n    r.data.contexts[i] = canvas.getContext(type);\n    if (!r.data.contexts[i]) {\n      error('Could not create canvas of type ' + type);\n    }\n    Object.keys(styleMap).forEach(function (k) {\n      canvas.style[k] = styleMap[k];\n    });\n    canvas.style.position = 'absolute';\n    canvas.setAttribute('data-id', 'layer' + i);\n    canvas.style.zIndex = String(CRp.CANVAS_LAYERS - i);\n    r.data.canvasContainer.appendChild(canvas);\n    r.data.canvasNeedsRedraw[i] = false;\n  }\n  r.data.topCanvas = r.data.canvases[0];\n  r.data.canvases[CRp.NODE].setAttribute('data-id', 'layer' + CRp.NODE + '-node');\n  r.data.canvases[CRp.SELECT_BOX].setAttribute('data-id', 'layer' + CRp.SELECT_BOX + '-selectbox');\n  r.data.canvases[CRp.DRAG].setAttribute('data-id', 'layer' + CRp.DRAG + '-drag');\n  if (r.data.canvases[CRp.WEBGL]) {\n    r.data.canvases[CRp.WEBGL].setAttribute('data-id', 'layer' + CRp.WEBGL + '-webgl');\n  }\n  for (var i = 0; i < CRp.BUFFER_COUNT; i++) {\n    r.data.bufferCanvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef\n    r.data.bufferContexts[i] = r.data.bufferCanvases[i].getContext('2d');\n    r.data.bufferCanvases[i].style.position = 'absolute';\n    r.data.bufferCanvases[i].setAttribute('data-id', 'buffer' + i);\n    r.data.bufferCanvases[i].style.zIndex = String(-i - 1);\n    r.data.bufferCanvases[i].style.visibility = 'hidden';\n    //r.data.canvasContainer.appendChild(r.data.bufferCanvases[i]);\n  }\n  r.pathsEnabled = true;\n  var emptyBb = makeBoundingBox();\n  var getBoxCenter = function getBoxCenter(bb) {\n    return {\n      x: (bb.x1 + bb.x2) / 2,\n      y: (bb.y1 + bb.y2) / 2\n    };\n  };\n  var getCenterOffset = function getCenterOffset(bb) {\n    return {\n      x: -bb.w / 2,\n      y: -bb.h / 2\n    };\n  };\n  var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) {\n    var _p = ele[0]._private;\n    var same = _p.oldBackgroundTimestamp === _p.backgroundTimestamp;\n    return !same;\n  };\n  var getStyleKey = function getStyleKey(ele) {\n    return ele[0]._private.nodeKey;\n  };\n  var getLabelKey = function getLabelKey(ele) {\n    return ele[0]._private.labelStyleKey;\n  };\n  var getSourceLabelKey = function getSourceLabelKey(ele) {\n    return ele[0]._private.sourceLabelStyleKey;\n  };\n  var getTargetLabelKey = function getTargetLabelKey(ele) {\n    return ele[0]._private.targetLabelStyleKey;\n  };\n  var drawElement = function drawElement(context, ele, bb, scaledLabelShown, useEleOpacity) {\n    return r.drawElement(context, ele, bb, false, false, useEleOpacity);\n  };\n  var drawLabel = function drawLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n    return r.drawElementText(context, ele, bb, scaledLabelShown, 'main', useEleOpacity);\n  };\n  var drawSourceLabel = function drawSourceLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n    return r.drawElementText(context, ele, bb, scaledLabelShown, 'source', useEleOpacity);\n  };\n  var drawTargetLabel = function drawTargetLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n    return r.drawElementText(context, ele, bb, scaledLabelShown, 'target', useEleOpacity);\n  };\n  var getElementBox = function getElementBox(ele) {\n    ele.boundingBox();\n    return ele[0]._private.bodyBounds;\n  };\n  var getLabelBox = function getLabelBox(ele) {\n    ele.boundingBox();\n    return ele[0]._private.labelBounds.main || emptyBb;\n  };\n  var getSourceLabelBox = function getSourceLabelBox(ele) {\n    ele.boundingBox();\n    return ele[0]._private.labelBounds.source || emptyBb;\n  };\n  var getTargetLabelBox = function getTargetLabelBox(ele) {\n    ele.boundingBox();\n    return ele[0]._private.labelBounds.target || emptyBb;\n  };\n  var isLabelVisibleAtScale = function isLabelVisibleAtScale(ele, scaledLabelShown) {\n    return scaledLabelShown;\n  };\n  var getElementRotationPoint = function getElementRotationPoint(ele) {\n    return getBoxCenter(getElementBox(ele));\n  };\n  var addTextMargin = function addTextMargin(prefix, pt, ele) {\n    var pre = prefix ? prefix + '-' : '';\n    return {\n      x: pt.x + ele.pstyle(pre + 'text-margin-x').pfValue,\n      y: pt.y + ele.pstyle(pre + 'text-margin-y').pfValue\n    };\n  };\n  var getRsPt = function getRsPt(ele, x, y) {\n    var rs = ele[0]._private.rscratch;\n    return {\n      x: rs[x],\n      y: rs[y]\n    };\n  };\n  var getLabelRotationPoint = function getLabelRotationPoint(ele) {\n    return addTextMargin('', getRsPt(ele, 'labelX', 'labelY'), ele);\n  };\n  var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) {\n    return addTextMargin('source', getRsPt(ele, 'sourceLabelX', 'sourceLabelY'), ele);\n  };\n  var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) {\n    return addTextMargin('target', getRsPt(ele, 'targetLabelX', 'targetLabelY'), ele);\n  };\n  var getElementRotationOffset = function getElementRotationOffset(ele) {\n    return getCenterOffset(getElementBox(ele));\n  };\n  var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) {\n    return getCenterOffset(getSourceLabelBox(ele));\n  };\n  var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) {\n    return getCenterOffset(getTargetLabelBox(ele));\n  };\n  var getLabelRotationOffset = function getLabelRotationOffset(ele) {\n    var bb = getLabelBox(ele);\n    var p = getCenterOffset(getLabelBox(ele));\n    if (ele.isNode()) {\n      switch (ele.pstyle('text-halign').value) {\n        case 'left':\n          p.x = -bb.w - (bb.leftPad || 0);\n          break;\n        case 'right':\n          p.x = -(bb.rightPad || 0);\n          break;\n      }\n      switch (ele.pstyle('text-valign').value) {\n        case 'top':\n          p.y = -bb.h - (bb.topPad || 0);\n          break;\n        case 'bottom':\n          p.y = -(bb.botPad || 0);\n          break;\n      }\n    }\n    return p;\n  };\n  var eleTxrCache = r.data.eleTxrCache = new ElementTextureCache(r, {\n    getKey: getStyleKey,\n    doesEleInvalidateKey: backgroundTimestampHasChanged,\n    drawElement: drawElement,\n    getBoundingBox: getElementBox,\n    getRotationPoint: getElementRotationPoint,\n    getRotationOffset: getElementRotationOffset,\n    allowEdgeTxrCaching: false,\n    allowParentTxrCaching: false\n  });\n  var lblTxrCache = r.data.lblTxrCache = new ElementTextureCache(r, {\n    getKey: getLabelKey,\n    drawElement: drawLabel,\n    getBoundingBox: getLabelBox,\n    getRotationPoint: getLabelRotationPoint,\n    getRotationOffset: getLabelRotationOffset,\n    isVisible: isLabelVisibleAtScale\n  });\n  var slbTxrCache = r.data.slbTxrCache = new ElementTextureCache(r, {\n    getKey: getSourceLabelKey,\n    drawElement: drawSourceLabel,\n    getBoundingBox: getSourceLabelBox,\n    getRotationPoint: getSourceLabelRotationPoint,\n    getRotationOffset: getSourceLabelRotationOffset,\n    isVisible: isLabelVisibleAtScale\n  });\n  var tlbTxrCache = r.data.tlbTxrCache = new ElementTextureCache(r, {\n    getKey: getTargetLabelKey,\n    drawElement: drawTargetLabel,\n    getBoundingBox: getTargetLabelBox,\n    getRotationPoint: getTargetLabelRotationPoint,\n    getRotationOffset: getTargetLabelRotationOffset,\n    isVisible: isLabelVisibleAtScale\n  });\n  var lyrTxrCache = r.data.lyrTxrCache = new LayeredTextureCache(r);\n  r.onUpdateEleCalcs(function invalidateTextureCaches(willDraw, eles) {\n    // each cache should check for sub-key diff to see that the update affects that cache particularly\n    eleTxrCache.invalidateElements(eles);\n    lblTxrCache.invalidateElements(eles);\n    slbTxrCache.invalidateElements(eles);\n    tlbTxrCache.invalidateElements(eles);\n\n    // any change invalidates the layers\n    lyrTxrCache.invalidateElements(eles);\n\n    // update the old bg timestamp so diffs can be done in the ele txr caches\n    for (var _i = 0; _i < eles.length; _i++) {\n      var _p = eles[_i]._private;\n      _p.oldBackgroundTimestamp = _p.backgroundTimestamp;\n    }\n  });\n  var refineInLayers = function refineInLayers(reqs) {\n    for (var i = 0; i < reqs.length; i++) {\n      lyrTxrCache.enqueueElementRefinement(reqs[i].ele);\n    }\n  };\n  eleTxrCache.onDequeue(refineInLayers);\n  lblTxrCache.onDequeue(refineInLayers);\n  slbTxrCache.onDequeue(refineInLayers);\n  tlbTxrCache.onDequeue(refineInLayers);\n  if (options.webgl) {\n    r.initWebgl(options, {\n      getStyleKey: getStyleKey,\n      getLabelKey: getLabelKey,\n      getSourceLabelKey: getSourceLabelKey,\n      getTargetLabelKey: getTargetLabelKey,\n      drawElement: drawElement,\n      drawLabel: drawLabel,\n      drawSourceLabel: drawSourceLabel,\n      drawTargetLabel: drawTargetLabel,\n      getElementBox: getElementBox,\n      getLabelBox: getLabelBox,\n      getSourceLabelBox: getSourceLabelBox,\n      getTargetLabelBox: getTargetLabelBox,\n      getElementRotationPoint: getElementRotationPoint,\n      getElementRotationOffset: getElementRotationOffset,\n      getLabelRotationPoint: getLabelRotationPoint,\n      getSourceLabelRotationPoint: getSourceLabelRotationPoint,\n      getTargetLabelRotationPoint: getTargetLabelRotationPoint,\n      getLabelRotationOffset: getLabelRotationOffset,\n      getSourceLabelRotationOffset: getSourceLabelRotationOffset,\n      getTargetLabelRotationOffset: getTargetLabelRotationOffset\n    });\n  }\n}\nCRp.redrawHint = function (group, bool) {\n  var r = this;\n  switch (group) {\n    case 'eles':\n      r.data.canvasNeedsRedraw[CRp.NODE] = bool;\n      break;\n    case 'drag':\n      r.data.canvasNeedsRedraw[CRp.DRAG] = bool;\n      break;\n    case 'select':\n      r.data.canvasNeedsRedraw[CRp.SELECT_BOX] = bool;\n      break;\n    case 'gc':\n      r.data.gc = true;\n      break;\n  }\n};\n\n// whether to use Path2D caching for drawing\nvar pathsImpld = typeof Path2D !== 'undefined';\nCRp.path2dEnabled = function (on) {\n  if (on === undefined) {\n    return this.pathsEnabled;\n  }\n  this.pathsEnabled = on ? true : false;\n};\nCRp.usePaths = function () {\n  return pathsImpld && this.pathsEnabled;\n};\nCRp.setImgSmoothing = function (context, bool) {\n  if (context.imageSmoothingEnabled != null) {\n    context.imageSmoothingEnabled = bool;\n  } else {\n    context.webkitImageSmoothingEnabled = bool;\n    context.mozImageSmoothingEnabled = bool;\n    context.msImageSmoothingEnabled = bool;\n  }\n};\nCRp.getImgSmoothing = function (context) {\n  if (context.imageSmoothingEnabled != null) {\n    return context.imageSmoothingEnabled;\n  } else {\n    return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled;\n  }\n};\nCRp.makeOffscreenCanvas = function (width, height) {\n  var canvas;\n  if ((typeof OffscreenCanvas === \"undefined\" ? \"undefined\" : _typeof(OffscreenCanvas)) !== (\"undefined\" )) {\n    canvas = new OffscreenCanvas(width, height);\n  } else {\n    var containerWindow = this.cy.window();\n    var document = containerWindow.document;\n    canvas = document.createElement('canvas'); // eslint-disable-line no-undef\n    canvas.width = width;\n    canvas.height = height;\n  }\n  return canvas;\n};\n[CRp$b, CRp$a, CRp$9, CRp$8, CRp$7, CRp$6, CRp$5, CRp$4, CRp$3, CRp$2, CRp$1].forEach(function (props) {\n  extend(CRp, props);\n});\n\nvar renderer = [{\n  name: 'null',\n  impl: NullRenderer\n}, {\n  name: 'base',\n  impl: BR\n}, {\n  name: 'canvas',\n  impl: CR\n}];\n\nvar incExts = [{\n  type: 'layout',\n  extensions: layout\n}, {\n  type: 'renderer',\n  extensions: renderer\n}];\n\n// registered extensions to cytoscape, indexed by name\nvar extensions = {};\n\n// registered modules for extensions, indexed by name\nvar modules = {};\nfunction setExtension(type, name, registrant) {\n  var ext = registrant;\n  var overrideErr = function overrideErr(field) {\n    warn('Can not register `' + name + '` for `' + type + '` since `' + field + '` already exists in the prototype and can not be overridden');\n  };\n  if (type === 'core') {\n    if (Core.prototype[name]) {\n      return overrideErr(name);\n    } else {\n      Core.prototype[name] = registrant;\n    }\n  } else if (type === 'collection') {\n    if (Collection.prototype[name]) {\n      return overrideErr(name);\n    } else {\n      Collection.prototype[name] = registrant;\n    }\n  } else if (type === 'layout') {\n    // fill in missing layout functions in the prototype\n\n    var Layout = function Layout(options) {\n      this.options = options;\n      registrant.call(this, options);\n\n      // make sure layout has _private for use w/ std apis like .on()\n      if (!plainObject(this._private)) {\n        this._private = {};\n      }\n      this._private.cy = options.cy;\n      this._private.listeners = [];\n      this.createEmitter();\n    };\n    var layoutProto = Layout.prototype = Object.create(registrant.prototype);\n    var optLayoutFns = [];\n    for (var i = 0; i < optLayoutFns.length; i++) {\n      var fnName = optLayoutFns[i];\n      layoutProto[fnName] = layoutProto[fnName] || function () {\n        return this;\n      };\n    }\n\n    // either .start() or .run() is defined, so autogen the other\n    if (layoutProto.start && !layoutProto.run) {\n      layoutProto.run = function () {\n        this.start();\n        return this;\n      };\n    } else if (!layoutProto.start && layoutProto.run) {\n      layoutProto.start = function () {\n        this.run();\n        return this;\n      };\n    }\n    var regStop = registrant.prototype.stop;\n    layoutProto.stop = function () {\n      var opts = this.options;\n      if (opts && opts.animate) {\n        var anis = this.animations;\n        if (anis) {\n          for (var _i = 0; _i < anis.length; _i++) {\n            anis[_i].stop();\n          }\n        }\n      }\n      if (regStop) {\n        regStop.call(this);\n      } else {\n        this.emit('layoutstop');\n      }\n      return this;\n    };\n    if (!layoutProto.destroy) {\n      layoutProto.destroy = function () {\n        return this;\n      };\n    }\n    layoutProto.cy = function () {\n      return this._private.cy;\n    };\n    var getCy = function getCy(layout) {\n      return layout._private.cy;\n    };\n    var emitterOpts = {\n      addEventFields: function addEventFields(layout, evt) {\n        evt.layout = layout;\n        evt.cy = getCy(layout);\n        evt.target = layout;\n      },\n      bubble: function bubble() {\n        return true;\n      },\n      parent: function parent(layout) {\n        return getCy(layout);\n      }\n    };\n    extend(layoutProto, {\n      createEmitter: function createEmitter() {\n        this._private.emitter = new Emitter(emitterOpts, this);\n        return this;\n      },\n      emitter: function emitter() {\n        return this._private.emitter;\n      },\n      on: function on(evt, cb) {\n        this.emitter().on(evt, cb);\n        return this;\n      },\n      one: function one(evt, cb) {\n        this.emitter().one(evt, cb);\n        return this;\n      },\n      once: function once(evt, cb) {\n        this.emitter().one(evt, cb);\n        return this;\n      },\n      removeListener: function removeListener(evt, cb) {\n        this.emitter().removeListener(evt, cb);\n        return this;\n      },\n      removeAllListeners: function removeAllListeners() {\n        this.emitter().removeAllListeners();\n        return this;\n      },\n      emit: function emit(evt, params) {\n        this.emitter().emit(evt, params);\n        return this;\n      }\n    });\n    define.eventAliasesOn(layoutProto);\n    ext = Layout; // replace with our wrapped layout\n  } else if (type === 'renderer' && name !== 'null' && name !== 'base') {\n    // user registered renderers inherit from base\n\n    var BaseRenderer = getExtension('renderer', 'base');\n    var bProto = BaseRenderer.prototype;\n    var RegistrantRenderer = registrant;\n    var rProto = registrant.prototype;\n    var Renderer = function Renderer() {\n      BaseRenderer.apply(this, arguments);\n      RegistrantRenderer.apply(this, arguments);\n    };\n    var proto = Renderer.prototype;\n    for (var pName in bProto) {\n      var pVal = bProto[pName];\n      var existsInR = rProto[pName] != null;\n      if (existsInR) {\n        return overrideErr(pName);\n      }\n      proto[pName] = pVal; // take impl from base\n    }\n    for (var _pName in rProto) {\n      proto[_pName] = rProto[_pName]; // take impl from registrant\n    }\n    bProto.clientFunctions.forEach(function (name) {\n      proto[name] = proto[name] || function () {\n        error('Renderer does not implement `renderer.' + name + '()` on its prototype');\n      };\n    });\n    ext = Renderer;\n  } else if (type === '__proto__' || type === 'constructor' || type === 'prototype') {\n    // to avoid potential prototype pollution\n    return error(type + ' is an illegal type to be registered, possibly lead to prototype pollutions');\n  }\n  return setMap({\n    map: extensions,\n    keys: [type, name],\n    value: ext\n  });\n}\nfunction getExtension(type, name) {\n  return getMap({\n    map: extensions,\n    keys: [type, name]\n  });\n}\nfunction setModule(type, name, moduleType, moduleName, registrant) {\n  return setMap({\n    map: modules,\n    keys: [type, name, moduleType, moduleName],\n    value: registrant\n  });\n}\nfunction getModule(type, name, moduleType, moduleName) {\n  return getMap({\n    map: modules,\n    keys: [type, name, moduleType, moduleName]\n  });\n}\nvar extension = function extension() {\n  // e.g. extension('renderer', 'svg')\n  if (arguments.length === 2) {\n    return getExtension.apply(null, arguments);\n  }\n\n  // e.g. extension('renderer', 'svg', { ... })\n  else if (arguments.length === 3) {\n    return setExtension.apply(null, arguments);\n  }\n\n  // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse')\n  else if (arguments.length === 4) {\n    return getModule.apply(null, arguments);\n  }\n\n  // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse', { ... })\n  else if (arguments.length === 5) {\n    return setModule.apply(null, arguments);\n  } else {\n    error('Invalid extension access syntax');\n  }\n};\n\n// allows a core instance to access extensions internally\nCore.prototype.extension = extension;\n\n// included extensions\nincExts.forEach(function (group) {\n  group.extensions.forEach(function (ext) {\n    setExtension(group.type, ext.name, ext.impl);\n  });\n});\n\n// a dummy stylesheet object that doesn't need a reference to the core\n// (useful for init)\nvar _Stylesheet = function Stylesheet() {\n  if (!(this instanceof _Stylesheet)) {\n    return new _Stylesheet();\n  }\n  this.length = 0;\n};\nvar sheetfn = _Stylesheet.prototype;\nsheetfn.instanceString = function () {\n  return 'stylesheet';\n};\n\n// just store the selector to be parsed later\nsheetfn.selector = function (selector) {\n  var i = this.length++;\n  this[i] = {\n    selector: selector,\n    properties: []\n  };\n  return this; // chaining\n};\n\n// just store the property to be parsed later\nsheetfn.css = function (name, value) {\n  var i = this.length - 1;\n  if (string(name)) {\n    this[i].properties.push({\n      name: name,\n      value: value\n    });\n  } else if (plainObject(name)) {\n    var map = name;\n    var propNames = Object.keys(map);\n    for (var j = 0; j < propNames.length; j++) {\n      var key = propNames[j];\n      var mapVal = map[key];\n      if (mapVal == null) {\n        continue;\n      }\n      var prop = _Style.properties[key] || _Style.properties[dash2camel(key)];\n      if (prop == null) {\n        continue;\n      }\n      var _name = prop.name;\n      var _value = mapVal;\n      this[i].properties.push({\n        name: _name,\n        value: _value\n      });\n    }\n  }\n  return this; // chaining\n};\nsheetfn.style = sheetfn.css;\n\n// generate a real style object from the dummy stylesheet\nsheetfn.generateStyle = function (cy) {\n  var style = new _Style(cy);\n  return this.appendToStyle(style);\n};\n\n// append a dummy stylesheet object on a real style object\nsheetfn.appendToStyle = function (style) {\n  for (var i = 0; i < this.length; i++) {\n    var context = this[i];\n    var selector = context.selector;\n    var props = context.properties;\n    style.selector(selector); // apply selector\n\n    for (var j = 0; j < props.length; j++) {\n      var prop = props[j];\n      style.css(prop.name, prop.value); // apply property\n    }\n  }\n  return style;\n};\n\nvar version = \"3.33.4\";\n\nvar cytoscape = function cytoscape(options) {\n  // if no options specified, use default\n  if (options === undefined) {\n    options = {};\n  }\n\n  // create instance\n  if (plainObject(options)) {\n    return new Core(options);\n  }\n\n  // allow for registration of extensions\n  else if (string(options)) {\n    return extension.apply(extension, arguments);\n  }\n};\n\n// e.g. cytoscape.use( require('cytoscape-foo'), bar )\ncytoscape.use = function (ext) {\n  var args = Array.prototype.slice.call(arguments, 1); // args to pass to ext\n\n  args.unshift(cytoscape); // cytoscape is first arg to ext\n\n  ext.apply(null, args);\n  return this;\n};\ncytoscape.warnings = function (bool) {\n  return warnings(bool);\n};\n\n// replaced by build system\ncytoscape.version = version;\n\n// expose public apis (mostly for extensions)\ncytoscape.stylesheet = cytoscape.Stylesheet = _Stylesheet;\n\nexport { cytoscape as default };\n","(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[\"layoutBase\"] = factory();\n\telse\n\t\troot[\"layoutBase\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 26);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LayoutConstants() {}\n\n/**\r\n * Layout Quality: 0:draft, 1:default, 2:proof\r\n */\nLayoutConstants.QUALITY = 1;\n\n/**\r\n * Default parameters\r\n */\nLayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false;\nLayoutConstants.DEFAULT_INCREMENTAL = false;\nLayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true;\nLayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false;\nLayoutConstants.DEFAULT_ANIMATION_PERIOD = 50;\nLayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false;\n\n// -----------------------------------------------------------------------------\n// Section: General other constants\n// -----------------------------------------------------------------------------\n/*\r\n * Margins of a graph to be applied on bouding rectangle of its contents. We\r\n * assume margins on all four sides to be uniform.\r\n */\nLayoutConstants.DEFAULT_GRAPH_MARGIN = 15;\n\n/*\r\n * Whether to consider labels in node dimensions or not\r\n */\nLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_SIZE = 40;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2;\n\n/*\r\n * Empty compound node size. When a compound node is empty, its both\r\n * dimensions should be of this value.\r\n */\nLayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40;\n\n/*\r\n * Minimum length that an edge should take during layout\r\n */\nLayoutConstants.MIN_EDGE_LENGTH = 1;\n\n/*\r\n * World boundaries that layout operates on\r\n */\nLayoutConstants.WORLD_BOUNDARY = 1000000;\n\n/*\r\n * World boundaries that random positioning can be performed with\r\n */\nLayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000;\n\n/*\r\n * Coordinates of the world center\r\n */\nLayoutConstants.WORLD_CENTER_X = 1200;\nLayoutConstants.WORLD_CENTER_Y = 900;\n\nmodule.exports = LayoutConstants;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction LEdge(source, target, vEdge) {\n  LGraphObject.call(this, vEdge);\n\n  this.isOverlapingSourceAndTarget = false;\n  this.vGraphObject = vEdge;\n  this.bendpoints = [];\n  this.source = source;\n  this.target = target;\n}\n\nLEdge.prototype = Object.create(LGraphObject.prototype);\n\nfor (var prop in LGraphObject) {\n  LEdge[prop] = LGraphObject[prop];\n}\n\nLEdge.prototype.getSource = function () {\n  return this.source;\n};\n\nLEdge.prototype.getTarget = function () {\n  return this.target;\n};\n\nLEdge.prototype.isInterGraph = function () {\n  return this.isInterGraph;\n};\n\nLEdge.prototype.getLength = function () {\n  return this.length;\n};\n\nLEdge.prototype.isOverlapingSourceAndTarget = function () {\n  return this.isOverlapingSourceAndTarget;\n};\n\nLEdge.prototype.getBendpoints = function () {\n  return this.bendpoints;\n};\n\nLEdge.prototype.getLca = function () {\n  return this.lca;\n};\n\nLEdge.prototype.getSourceInLca = function () {\n  return this.sourceInLca;\n};\n\nLEdge.prototype.getTargetInLca = function () {\n  return this.targetInLca;\n};\n\nLEdge.prototype.getOtherEnd = function (node) {\n  if (this.source === node) {\n    return this.target;\n  } else if (this.target === node) {\n    return this.source;\n  } else {\n    throw \"Node is not incident with this edge\";\n  }\n};\n\nLEdge.prototype.getOtherEndInGraph = function (node, graph) {\n  var otherEnd = this.getOtherEnd(node);\n  var root = graph.getGraphManager().getRoot();\n\n  while (true) {\n    if (otherEnd.getOwner() == graph) {\n      return otherEnd;\n    }\n\n    if (otherEnd.getOwner() == root) {\n      break;\n    }\n\n    otherEnd = otherEnd.getOwner().getParent();\n  }\n\n  return null;\n};\n\nLEdge.prototype.updateLength = function () {\n  var clipPointCoordinates = new Array(4);\n\n  this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates);\n\n  if (!this.isOverlapingSourceAndTarget) {\n    this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2];\n    this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3];\n\n    if (Math.abs(this.lengthX) < 1.0) {\n      this.lengthX = IMath.sign(this.lengthX);\n    }\n\n    if (Math.abs(this.lengthY) < 1.0) {\n      this.lengthY = IMath.sign(this.lengthY);\n    }\n\n    this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n  }\n};\n\nLEdge.prototype.updateLengthSimple = function () {\n  this.lengthX = this.target.getCenterX() - this.source.getCenterX();\n  this.lengthY = this.target.getCenterY() - this.source.getCenterY();\n\n  if (Math.abs(this.lengthX) < 1.0) {\n    this.lengthX = IMath.sign(this.lengthX);\n  }\n\n  if (Math.abs(this.lengthY) < 1.0) {\n    this.lengthY = IMath.sign(this.lengthY);\n  }\n\n  this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n};\n\nmodule.exports = LEdge;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LGraphObject(vGraphObject) {\n  this.vGraphObject = vGraphObject;\n}\n\nmodule.exports = LGraphObject;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar RectangleD = __webpack_require__(13);\nvar LayoutConstants = __webpack_require__(0);\nvar RandomSeed = __webpack_require__(16);\nvar PointD = __webpack_require__(4);\n\nfunction LNode(gm, loc, size, vNode) {\n  //Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode)\n  if (size == null && vNode == null) {\n    vNode = loc;\n  }\n\n  LGraphObject.call(this, vNode);\n\n  //Alternative constructor 2 : LNode(Layout layout, Object vNode)\n  if (gm.graphManager != null) gm = gm.graphManager;\n\n  this.estimatedSize = Integer.MIN_VALUE;\n  this.inclusionTreeDepth = Integer.MAX_VALUE;\n  this.vGraphObject = vNode;\n  this.edges = [];\n  this.graphManager = gm;\n\n  if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD();\n}\n\nLNode.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n  LNode[prop] = LGraphObject[prop];\n}\n\nLNode.prototype.getEdges = function () {\n  return this.edges;\n};\n\nLNode.prototype.getChild = function () {\n  return this.child;\n};\n\nLNode.prototype.getOwner = function () {\n  //  if (this.owner != null) {\n  //    if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) {\n  //      throw \"assert failed\";\n  //    }\n  //  }\n\n  return this.owner;\n};\n\nLNode.prototype.getWidth = function () {\n  return this.rect.width;\n};\n\nLNode.prototype.setWidth = function (width) {\n  this.rect.width = width;\n};\n\nLNode.prototype.getHeight = function () {\n  return this.rect.height;\n};\n\nLNode.prototype.setHeight = function (height) {\n  this.rect.height = height;\n};\n\nLNode.prototype.getCenterX = function () {\n  return this.rect.x + this.rect.width / 2;\n};\n\nLNode.prototype.getCenterY = function () {\n  return this.rect.y + this.rect.height / 2;\n};\n\nLNode.prototype.getCenter = function () {\n  return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2);\n};\n\nLNode.prototype.getLocation = function () {\n  return new PointD(this.rect.x, this.rect.y);\n};\n\nLNode.prototype.getRect = function () {\n  return this.rect;\n};\n\nLNode.prototype.getDiagonal = function () {\n  return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height);\n};\n\n/**\n * This method returns half the diagonal length of this node.\n */\nLNode.prototype.getHalfTheDiagonal = function () {\n  return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2;\n};\n\nLNode.prototype.setRect = function (upperLeft, dimension) {\n  this.rect.x = upperLeft.x;\n  this.rect.y = upperLeft.y;\n  this.rect.width = dimension.width;\n  this.rect.height = dimension.height;\n};\n\nLNode.prototype.setCenter = function (cx, cy) {\n  this.rect.x = cx - this.rect.width / 2;\n  this.rect.y = cy - this.rect.height / 2;\n};\n\nLNode.prototype.setLocation = function (x, y) {\n  this.rect.x = x;\n  this.rect.y = y;\n};\n\nLNode.prototype.moveBy = function (dx, dy) {\n  this.rect.x += dx;\n  this.rect.y += dy;\n};\n\nLNode.prototype.getEdgeListToNode = function (to) {\n  var edgeList = [];\n  var edge;\n  var self = this;\n\n  self.edges.forEach(function (edge) {\n\n    if (edge.target == to) {\n      if (edge.source != self) throw \"Incorrect edge source!\";\n\n      edgeList.push(edge);\n    }\n  });\n\n  return edgeList;\n};\n\nLNode.prototype.getEdgesBetween = function (other) {\n  var edgeList = [];\n  var edge;\n\n  var self = this;\n  self.edges.forEach(function (edge) {\n\n    if (!(edge.source == self || edge.target == self)) throw \"Incorrect edge source and/or target\";\n\n    if (edge.target == other || edge.source == other) {\n      edgeList.push(edge);\n    }\n  });\n\n  return edgeList;\n};\n\nLNode.prototype.getNeighborsList = function () {\n  var neighbors = new Set();\n\n  var self = this;\n  self.edges.forEach(function (edge) {\n\n    if (edge.source == self) {\n      neighbors.add(edge.target);\n    } else {\n      if (edge.target != self) {\n        throw \"Incorrect incidency!\";\n      }\n\n      neighbors.add(edge.source);\n    }\n  });\n\n  return neighbors;\n};\n\nLNode.prototype.withChildren = function () {\n  var withNeighborsList = new Set();\n  var childNode;\n  var children;\n\n  withNeighborsList.add(this);\n\n  if (this.child != null) {\n    var nodes = this.child.getNodes();\n    for (var i = 0; i < nodes.length; i++) {\n      childNode = nodes[i];\n      children = childNode.withChildren();\n      children.forEach(function (node) {\n        withNeighborsList.add(node);\n      });\n    }\n  }\n\n  return withNeighborsList;\n};\n\nLNode.prototype.getNoOfChildren = function () {\n  var noOfChildren = 0;\n  var childNode;\n\n  if (this.child == null) {\n    noOfChildren = 1;\n  } else {\n    var nodes = this.child.getNodes();\n    for (var i = 0; i < nodes.length; i++) {\n      childNode = nodes[i];\n\n      noOfChildren += childNode.getNoOfChildren();\n    }\n  }\n\n  if (noOfChildren == 0) {\n    noOfChildren = 1;\n  }\n  return noOfChildren;\n};\n\nLNode.prototype.getEstimatedSize = function () {\n  if (this.estimatedSize == Integer.MIN_VALUE) {\n    throw \"assert failed\";\n  }\n  return this.estimatedSize;\n};\n\nLNode.prototype.calcEstimatedSize = function () {\n  if (this.child == null) {\n    return this.estimatedSize = (this.rect.width + this.rect.height) / 2;\n  } else {\n    this.estimatedSize = this.child.calcEstimatedSize();\n    this.rect.width = this.estimatedSize;\n    this.rect.height = this.estimatedSize;\n\n    return this.estimatedSize;\n  }\n};\n\nLNode.prototype.scatter = function () {\n  var randomCenterX;\n  var randomCenterY;\n\n  var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n  var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n  randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX;\n\n  var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n  var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n  randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY;\n\n  this.rect.x = randomCenterX;\n  this.rect.y = randomCenterY;\n};\n\nLNode.prototype.updateBounds = function () {\n  if (this.getChild() == null) {\n    throw \"assert failed\";\n  }\n  if (this.getChild().getNodes().length != 0) {\n    // wrap the children nodes by re-arranging the boundaries\n    var childGraph = this.getChild();\n    childGraph.updateBounds(true);\n\n    this.rect.x = childGraph.getLeft();\n    this.rect.y = childGraph.getTop();\n\n    this.setWidth(childGraph.getRight() - childGraph.getLeft());\n    this.setHeight(childGraph.getBottom() - childGraph.getTop());\n\n    // Update compound bounds considering its label properties    \n    if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n      var width = childGraph.getRight() - childGraph.getLeft();\n      var height = childGraph.getBottom() - childGraph.getTop();\n\n      if (this.labelWidth > width) {\n        this.rect.x -= (this.labelWidth - width) / 2;\n        this.setWidth(this.labelWidth);\n      }\n\n      if (this.labelHeight > height) {\n        if (this.labelPos == \"center\") {\n          this.rect.y -= (this.labelHeight - height) / 2;\n        } else if (this.labelPos == \"top\") {\n          this.rect.y -= this.labelHeight - height;\n        }\n        this.setHeight(this.labelHeight);\n      }\n    }\n  }\n};\n\nLNode.prototype.getInclusionTreeDepth = function () {\n  if (this.inclusionTreeDepth == Integer.MAX_VALUE) {\n    throw \"assert failed\";\n  }\n  return this.inclusionTreeDepth;\n};\n\nLNode.prototype.transform = function (trans) {\n  var left = this.rect.x;\n\n  if (left > LayoutConstants.WORLD_BOUNDARY) {\n    left = LayoutConstants.WORLD_BOUNDARY;\n  } else if (left < -LayoutConstants.WORLD_BOUNDARY) {\n    left = -LayoutConstants.WORLD_BOUNDARY;\n  }\n\n  var top = this.rect.y;\n\n  if (top > LayoutConstants.WORLD_BOUNDARY) {\n    top = LayoutConstants.WORLD_BOUNDARY;\n  } else if (top < -LayoutConstants.WORLD_BOUNDARY) {\n    top = -LayoutConstants.WORLD_BOUNDARY;\n  }\n\n  var leftTop = new PointD(left, top);\n  var vLeftTop = trans.inverseTransformPoint(leftTop);\n\n  this.setLocation(vLeftTop.x, vLeftTop.y);\n};\n\nLNode.prototype.getLeft = function () {\n  return this.rect.x;\n};\n\nLNode.prototype.getRight = function () {\n  return this.rect.x + this.rect.width;\n};\n\nLNode.prototype.getTop = function () {\n  return this.rect.y;\n};\n\nLNode.prototype.getBottom = function () {\n  return this.rect.y + this.rect.height;\n};\n\nLNode.prototype.getParent = function () {\n  if (this.owner == null) {\n    return null;\n  }\n\n  return this.owner.getParent();\n};\n\nmodule.exports = LNode;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction PointD(x, y) {\n  if (x == null && y == null) {\n    this.x = 0;\n    this.y = 0;\n  } else {\n    this.x = x;\n    this.y = y;\n  }\n}\n\nPointD.prototype.getX = function () {\n  return this.x;\n};\n\nPointD.prototype.getY = function () {\n  return this.y;\n};\n\nPointD.prototype.setX = function (x) {\n  this.x = x;\n};\n\nPointD.prototype.setY = function (y) {\n  this.y = y;\n};\n\nPointD.prototype.getDifference = function (pt) {\n  return new DimensionD(this.x - pt.x, this.y - pt.y);\n};\n\nPointD.prototype.getCopy = function () {\n  return new PointD(this.x, this.y);\n};\n\nPointD.prototype.translate = function (dim) {\n  this.x += dim.width;\n  this.y += dim.height;\n  return this;\n};\n\nmodule.exports = PointD;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(6);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar RectangleD = __webpack_require__(13);\nvar Point = __webpack_require__(12);\nvar LinkedList = __webpack_require__(11);\n\nfunction LGraph(parent, obj2, vGraph) {\n  LGraphObject.call(this, vGraph);\n  this.estimatedSize = Integer.MIN_VALUE;\n  this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN;\n  this.edges = [];\n  this.nodes = [];\n  this.isConnected = false;\n  this.parent = parent;\n\n  if (obj2 != null && obj2 instanceof LGraphManager) {\n    this.graphManager = obj2;\n  } else if (obj2 != null && obj2 instanceof Layout) {\n    this.graphManager = obj2.graphManager;\n  }\n}\n\nLGraph.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n  LGraph[prop] = LGraphObject[prop];\n}\n\nLGraph.prototype.getNodes = function () {\n  return this.nodes;\n};\n\nLGraph.prototype.getEdges = function () {\n  return this.edges;\n};\n\nLGraph.prototype.getGraphManager = function () {\n  return this.graphManager;\n};\n\nLGraph.prototype.getParent = function () {\n  return this.parent;\n};\n\nLGraph.prototype.getLeft = function () {\n  return this.left;\n};\n\nLGraph.prototype.getRight = function () {\n  return this.right;\n};\n\nLGraph.prototype.getTop = function () {\n  return this.top;\n};\n\nLGraph.prototype.getBottom = function () {\n  return this.bottom;\n};\n\nLGraph.prototype.isConnected = function () {\n  return this.isConnected;\n};\n\nLGraph.prototype.add = function (obj1, sourceNode, targetNode) {\n  if (sourceNode == null && targetNode == null) {\n    var newNode = obj1;\n    if (this.graphManager == null) {\n      throw \"Graph has no graph mgr!\";\n    }\n    if (this.getNodes().indexOf(newNode) > -1) {\n      throw \"Node already in graph!\";\n    }\n    newNode.owner = this;\n    this.getNodes().push(newNode);\n\n    return newNode;\n  } else {\n    var newEdge = obj1;\n    if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) {\n      throw \"Source or target not in graph!\";\n    }\n\n    if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) {\n      throw \"Both owners must be this graph!\";\n    }\n\n    if (sourceNode.owner != targetNode.owner) {\n      return null;\n    }\n\n    // set source and target\n    newEdge.source = sourceNode;\n    newEdge.target = targetNode;\n\n    // set as intra-graph edge\n    newEdge.isInterGraph = false;\n\n    // add to graph edge list\n    this.getEdges().push(newEdge);\n\n    // add to incidency lists\n    sourceNode.edges.push(newEdge);\n\n    if (targetNode != sourceNode) {\n      targetNode.edges.push(newEdge);\n    }\n\n    return newEdge;\n  }\n};\n\nLGraph.prototype.remove = function (obj) {\n  var node = obj;\n  if (obj instanceof LNode) {\n    if (node == null) {\n      throw \"Node is null!\";\n    }\n    if (!(node.owner != null && node.owner == this)) {\n      throw \"Owner graph is invalid!\";\n    }\n    if (this.graphManager == null) {\n      throw \"Owner graph manager is invalid!\";\n    }\n    // remove incident edges first (make a copy to do it safely)\n    var edgesToBeRemoved = node.edges.slice();\n    var edge;\n    var s = edgesToBeRemoved.length;\n    for (var i = 0; i < s; i++) {\n      edge = edgesToBeRemoved[i];\n\n      if (edge.isInterGraph) {\n        this.graphManager.remove(edge);\n      } else {\n        edge.source.owner.remove(edge);\n      }\n    }\n\n    // now the node itself\n    var index = this.nodes.indexOf(node);\n    if (index == -1) {\n      throw \"Node not in owner node list!\";\n    }\n\n    this.nodes.splice(index, 1);\n  } else if (obj instanceof LEdge) {\n    var edge = obj;\n    if (edge == null) {\n      throw \"Edge is null!\";\n    }\n    if (!(edge.source != null && edge.target != null)) {\n      throw \"Source and/or target is null!\";\n    }\n    if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) {\n      throw \"Source and/or target owner is invalid!\";\n    }\n\n    var sourceIndex = edge.source.edges.indexOf(edge);\n    var targetIndex = edge.target.edges.indexOf(edge);\n    if (!(sourceIndex > -1 && targetIndex > -1)) {\n      throw \"Source and/or target doesn't know this edge!\";\n    }\n\n    edge.source.edges.splice(sourceIndex, 1);\n\n    if (edge.target != edge.source) {\n      edge.target.edges.splice(targetIndex, 1);\n    }\n\n    var index = edge.source.owner.getEdges().indexOf(edge);\n    if (index == -1) {\n      throw \"Not in owner's edge list!\";\n    }\n\n    edge.source.owner.getEdges().splice(index, 1);\n  }\n};\n\nLGraph.prototype.updateLeftTop = function () {\n  var top = Integer.MAX_VALUE;\n  var left = Integer.MAX_VALUE;\n  var nodeTop;\n  var nodeLeft;\n  var margin;\n\n  var nodes = this.getNodes();\n  var s = nodes.length;\n\n  for (var i = 0; i < s; i++) {\n    var lNode = nodes[i];\n    nodeTop = lNode.getTop();\n    nodeLeft = lNode.getLeft();\n\n    if (top > nodeTop) {\n      top = nodeTop;\n    }\n\n    if (left > nodeLeft) {\n      left = nodeLeft;\n    }\n  }\n\n  // Do we have any nodes in this graph?\n  if (top == Integer.MAX_VALUE) {\n    return null;\n  }\n\n  if (nodes[0].getParent().paddingLeft != undefined) {\n    margin = nodes[0].getParent().paddingLeft;\n  } else {\n    margin = this.margin;\n  }\n\n  this.left = left - margin;\n  this.top = top - margin;\n\n  // Apply the margins and return the result\n  return new Point(this.left, this.top);\n};\n\nLGraph.prototype.updateBounds = function (recursive) {\n  // calculate bounds\n  var left = Integer.MAX_VALUE;\n  var right = -Integer.MAX_VALUE;\n  var top = Integer.MAX_VALUE;\n  var bottom = -Integer.MAX_VALUE;\n  var nodeLeft;\n  var nodeRight;\n  var nodeTop;\n  var nodeBottom;\n  var margin;\n\n  var nodes = this.nodes;\n  var s = nodes.length;\n  for (var i = 0; i < s; i++) {\n    var lNode = nodes[i];\n\n    if (recursive && lNode.child != null) {\n      lNode.updateBounds();\n    }\n    nodeLeft = lNode.getLeft();\n    nodeRight = lNode.getRight();\n    nodeTop = lNode.getTop();\n    nodeBottom = lNode.getBottom();\n\n    if (left > nodeLeft) {\n      left = nodeLeft;\n    }\n\n    if (right < nodeRight) {\n      right = nodeRight;\n    }\n\n    if (top > nodeTop) {\n      top = nodeTop;\n    }\n\n    if (bottom < nodeBottom) {\n      bottom = nodeBottom;\n    }\n  }\n\n  var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n  if (left == Integer.MAX_VALUE) {\n    this.left = this.parent.getLeft();\n    this.right = this.parent.getRight();\n    this.top = this.parent.getTop();\n    this.bottom = this.parent.getBottom();\n  }\n\n  if (nodes[0].getParent().paddingLeft != undefined) {\n    margin = nodes[0].getParent().paddingLeft;\n  } else {\n    margin = this.margin;\n  }\n\n  this.left = boundingRect.x - margin;\n  this.right = boundingRect.x + boundingRect.width + margin;\n  this.top = boundingRect.y - margin;\n  this.bottom = boundingRect.y + boundingRect.height + margin;\n};\n\nLGraph.calculateBounds = function (nodes) {\n  var left = Integer.MAX_VALUE;\n  var right = -Integer.MAX_VALUE;\n  var top = Integer.MAX_VALUE;\n  var bottom = -Integer.MAX_VALUE;\n  var nodeLeft;\n  var nodeRight;\n  var nodeTop;\n  var nodeBottom;\n\n  var s = nodes.length;\n\n  for (var i = 0; i < s; i++) {\n    var lNode = nodes[i];\n    nodeLeft = lNode.getLeft();\n    nodeRight = lNode.getRight();\n    nodeTop = lNode.getTop();\n    nodeBottom = lNode.getBottom();\n\n    if (left > nodeLeft) {\n      left = nodeLeft;\n    }\n\n    if (right < nodeRight) {\n      right = nodeRight;\n    }\n\n    if (top > nodeTop) {\n      top = nodeTop;\n    }\n\n    if (bottom < nodeBottom) {\n      bottom = nodeBottom;\n    }\n  }\n\n  var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n\n  return boundingRect;\n};\n\nLGraph.prototype.getInclusionTreeDepth = function () {\n  if (this == this.graphManager.getRoot()) {\n    return 1;\n  } else {\n    return this.parent.getInclusionTreeDepth();\n  }\n};\n\nLGraph.prototype.getEstimatedSize = function () {\n  if (this.estimatedSize == Integer.MIN_VALUE) {\n    throw \"assert failed\";\n  }\n  return this.estimatedSize;\n};\n\nLGraph.prototype.calcEstimatedSize = function () {\n  var size = 0;\n  var nodes = this.nodes;\n  var s = nodes.length;\n\n  for (var i = 0; i < s; i++) {\n    var lNode = nodes[i];\n    size += lNode.calcEstimatedSize();\n  }\n\n  if (size == 0) {\n    this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE;\n  } else {\n    this.estimatedSize = size / Math.sqrt(this.nodes.length);\n  }\n\n  return this.estimatedSize;\n};\n\nLGraph.prototype.updateConnected = function () {\n  var self = this;\n  if (this.nodes.length == 0) {\n    this.isConnected = true;\n    return;\n  }\n\n  var queue = new LinkedList();\n  var visited = new Set();\n  var currentNode = this.nodes[0];\n  var neighborEdges;\n  var currentNeighbor;\n  var childrenOfNode = currentNode.withChildren();\n  childrenOfNode.forEach(function (node) {\n    queue.push(node);\n    visited.add(node);\n  });\n\n  while (queue.length !== 0) {\n    currentNode = queue.shift();\n\n    // Traverse all neighbors of this node\n    neighborEdges = currentNode.getEdges();\n    var size = neighborEdges.length;\n    for (var i = 0; i < size; i++) {\n      var neighborEdge = neighborEdges[i];\n      currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this);\n\n      // Add unvisited neighbors to the list to visit\n      if (currentNeighbor != null && !visited.has(currentNeighbor)) {\n        var childrenOfNeighbor = currentNeighbor.withChildren();\n\n        childrenOfNeighbor.forEach(function (node) {\n          queue.push(node);\n          visited.add(node);\n        });\n      }\n    }\n  }\n\n  this.isConnected = false;\n\n  if (visited.size >= this.nodes.length) {\n    var noOfVisitedInThisGraph = 0;\n\n    visited.forEach(function (visitedNode) {\n      if (visitedNode.owner == self) {\n        noOfVisitedInThisGraph++;\n      }\n    });\n\n    if (noOfVisitedInThisGraph == this.nodes.length) {\n      this.isConnected = true;\n    }\n  }\n};\n\nmodule.exports = LGraph;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraph;\nvar LEdge = __webpack_require__(1);\n\nfunction LGraphManager(layout) {\n  LGraph = __webpack_require__(5); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now.\n  this.layout = layout;\n\n  this.graphs = [];\n  this.edges = [];\n}\n\nLGraphManager.prototype.addRoot = function () {\n  var ngraph = this.layout.newGraph();\n  var nnode = this.layout.newNode(null);\n  var root = this.add(ngraph, nnode);\n  this.setRootGraph(root);\n  return this.rootGraph;\n};\n\nLGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) {\n  //there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge\n  if (newEdge == null && sourceNode == null && targetNode == null) {\n    if (newGraph == null) {\n      throw \"Graph is null!\";\n    }\n    if (parentNode == null) {\n      throw \"Parent node is null!\";\n    }\n    if (this.graphs.indexOf(newGraph) > -1) {\n      throw \"Graph already in this graph mgr!\";\n    }\n\n    this.graphs.push(newGraph);\n\n    if (newGraph.parent != null) {\n      throw \"Already has a parent!\";\n    }\n    if (parentNode.child != null) {\n      throw \"Already has a child!\";\n    }\n\n    newGraph.parent = parentNode;\n    parentNode.child = newGraph;\n\n    return newGraph;\n  } else {\n    //change the order of the parameters\n    targetNode = newEdge;\n    sourceNode = parentNode;\n    newEdge = newGraph;\n    var sourceGraph = sourceNode.getOwner();\n    var targetGraph = targetNode.getOwner();\n\n    if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) {\n      throw \"Source not in this graph mgr!\";\n    }\n    if (!(targetGraph != null && targetGraph.getGraphManager() == this)) {\n      throw \"Target not in this graph mgr!\";\n    }\n\n    if (sourceGraph == targetGraph) {\n      newEdge.isInterGraph = false;\n      return sourceGraph.add(newEdge, sourceNode, targetNode);\n    } else {\n      newEdge.isInterGraph = true;\n\n      // set source and target\n      newEdge.source = sourceNode;\n      newEdge.target = targetNode;\n\n      // add edge to inter-graph edge list\n      if (this.edges.indexOf(newEdge) > -1) {\n        throw \"Edge already in inter-graph edge list!\";\n      }\n\n      this.edges.push(newEdge);\n\n      // add edge to source and target incidency lists\n      if (!(newEdge.source != null && newEdge.target != null)) {\n        throw \"Edge source and/or target is null!\";\n      }\n\n      if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) {\n        throw \"Edge already in source and/or target incidency list!\";\n      }\n\n      newEdge.source.edges.push(newEdge);\n      newEdge.target.edges.push(newEdge);\n\n      return newEdge;\n    }\n  }\n};\n\nLGraphManager.prototype.remove = function (lObj) {\n  if (lObj instanceof LGraph) {\n    var graph = lObj;\n    if (graph.getGraphManager() != this) {\n      throw \"Graph not in this graph mgr\";\n    }\n    if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) {\n      throw \"Invalid parent node!\";\n    }\n\n    // first the edges (make a copy to do it safely)\n    var edgesToBeRemoved = [];\n\n    edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges());\n\n    var edge;\n    var s = edgesToBeRemoved.length;\n    for (var i = 0; i < s; i++) {\n      edge = edgesToBeRemoved[i];\n      graph.remove(edge);\n    }\n\n    // then the nodes (make a copy to do it safely)\n    var nodesToBeRemoved = [];\n\n    nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes());\n\n    var node;\n    s = nodesToBeRemoved.length;\n    for (var i = 0; i < s; i++) {\n      node = nodesToBeRemoved[i];\n      graph.remove(node);\n    }\n\n    // check if graph is the root\n    if (graph == this.rootGraph) {\n      this.setRootGraph(null);\n    }\n\n    // now remove the graph itself\n    var index = this.graphs.indexOf(graph);\n    this.graphs.splice(index, 1);\n\n    // also reset the parent of the graph\n    graph.parent = null;\n  } else if (lObj instanceof LEdge) {\n    edge = lObj;\n    if (edge == null) {\n      throw \"Edge is null!\";\n    }\n    if (!edge.isInterGraph) {\n      throw \"Not an inter-graph edge!\";\n    }\n    if (!(edge.source != null && edge.target != null)) {\n      throw \"Source and/or target is null!\";\n    }\n\n    // remove edge from source and target nodes' incidency lists\n\n    if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) {\n      throw \"Source and/or target doesn't know this edge!\";\n    }\n\n    var index = edge.source.edges.indexOf(edge);\n    edge.source.edges.splice(index, 1);\n    index = edge.target.edges.indexOf(edge);\n    edge.target.edges.splice(index, 1);\n\n    // remove edge from owner graph manager's inter-graph edge list\n\n    if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) {\n      throw \"Edge owner graph or owner graph manager is null!\";\n    }\n    if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) {\n      throw \"Not in owner graph manager's edge list!\";\n    }\n\n    var index = edge.source.owner.getGraphManager().edges.indexOf(edge);\n    edge.source.owner.getGraphManager().edges.splice(index, 1);\n  }\n};\n\nLGraphManager.prototype.updateBounds = function () {\n  this.rootGraph.updateBounds(true);\n};\n\nLGraphManager.prototype.getGraphs = function () {\n  return this.graphs;\n};\n\nLGraphManager.prototype.getAllNodes = function () {\n  if (this.allNodes == null) {\n    var nodeList = [];\n    var graphs = this.getGraphs();\n    var s = graphs.length;\n    for (var i = 0; i < s; i++) {\n      nodeList = nodeList.concat(graphs[i].getNodes());\n    }\n    this.allNodes = nodeList;\n  }\n  return this.allNodes;\n};\n\nLGraphManager.prototype.resetAllNodes = function () {\n  this.allNodes = null;\n};\n\nLGraphManager.prototype.resetAllEdges = function () {\n  this.allEdges = null;\n};\n\nLGraphManager.prototype.resetAllNodesToApplyGravitation = function () {\n  this.allNodesToApplyGravitation = null;\n};\n\nLGraphManager.prototype.getAllEdges = function () {\n  if (this.allEdges == null) {\n    var edgeList = [];\n    var graphs = this.getGraphs();\n    var s = graphs.length;\n    for (var i = 0; i < graphs.length; i++) {\n      edgeList = edgeList.concat(graphs[i].getEdges());\n    }\n\n    edgeList = edgeList.concat(this.edges);\n\n    this.allEdges = edgeList;\n  }\n  return this.allEdges;\n};\n\nLGraphManager.prototype.getAllNodesToApplyGravitation = function () {\n  return this.allNodesToApplyGravitation;\n};\n\nLGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) {\n  if (this.allNodesToApplyGravitation != null) {\n    throw \"assert failed\";\n  }\n\n  this.allNodesToApplyGravitation = nodeList;\n};\n\nLGraphManager.prototype.getRoot = function () {\n  return this.rootGraph;\n};\n\nLGraphManager.prototype.setRootGraph = function (graph) {\n  if (graph.getGraphManager() != this) {\n    throw \"Root not in this graph mgr!\";\n  }\n\n  this.rootGraph = graph;\n  // root graph must have a root node associated with it for convenience\n  if (graph.parent == null) {\n    graph.parent = this.layout.newNode(\"Root node\");\n  }\n};\n\nLGraphManager.prototype.getLayout = function () {\n  return this.layout;\n};\n\nLGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) {\n  if (!(firstNode != null && secondNode != null)) {\n    throw \"assert failed\";\n  }\n\n  if (firstNode == secondNode) {\n    return true;\n  }\n  // Is second node an ancestor of the first one?\n  var ownerGraph = firstNode.getOwner();\n  var parentNode;\n\n  do {\n    parentNode = ownerGraph.getParent();\n\n    if (parentNode == null) {\n      break;\n    }\n\n    if (parentNode == secondNode) {\n      return true;\n    }\n\n    ownerGraph = parentNode.getOwner();\n    if (ownerGraph == null) {\n      break;\n    }\n  } while (true);\n  // Is first node an ancestor of the second one?\n  ownerGraph = secondNode.getOwner();\n\n  do {\n    parentNode = ownerGraph.getParent();\n\n    if (parentNode == null) {\n      break;\n    }\n\n    if (parentNode == firstNode) {\n      return true;\n    }\n\n    ownerGraph = parentNode.getOwner();\n    if (ownerGraph == null) {\n      break;\n    }\n  } while (true);\n\n  return false;\n};\n\nLGraphManager.prototype.calcLowestCommonAncestors = function () {\n  var edge;\n  var sourceNode;\n  var targetNode;\n  var sourceAncestorGraph;\n  var targetAncestorGraph;\n\n  var edges = this.getAllEdges();\n  var s = edges.length;\n  for (var i = 0; i < s; i++) {\n    edge = edges[i];\n\n    sourceNode = edge.source;\n    targetNode = edge.target;\n    edge.lca = null;\n    edge.sourceInLca = sourceNode;\n    edge.targetInLca = targetNode;\n\n    if (sourceNode == targetNode) {\n      edge.lca = sourceNode.getOwner();\n      continue;\n    }\n\n    sourceAncestorGraph = sourceNode.getOwner();\n\n    while (edge.lca == null) {\n      edge.targetInLca = targetNode;\n      targetAncestorGraph = targetNode.getOwner();\n\n      while (edge.lca == null) {\n        if (targetAncestorGraph == sourceAncestorGraph) {\n          edge.lca = targetAncestorGraph;\n          break;\n        }\n\n        if (targetAncestorGraph == this.rootGraph) {\n          break;\n        }\n\n        if (edge.lca != null) {\n          throw \"assert failed\";\n        }\n        edge.targetInLca = targetAncestorGraph.getParent();\n        targetAncestorGraph = edge.targetInLca.getOwner();\n      }\n\n      if (sourceAncestorGraph == this.rootGraph) {\n        break;\n      }\n\n      if (edge.lca == null) {\n        edge.sourceInLca = sourceAncestorGraph.getParent();\n        sourceAncestorGraph = edge.sourceInLca.getOwner();\n      }\n    }\n\n    if (edge.lca == null) {\n      throw \"assert failed\";\n    }\n  }\n};\n\nLGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) {\n  if (firstNode == secondNode) {\n    return firstNode.getOwner();\n  }\n  var firstOwnerGraph = firstNode.getOwner();\n\n  do {\n    if (firstOwnerGraph == null) {\n      break;\n    }\n    var secondOwnerGraph = secondNode.getOwner();\n\n    do {\n      if (secondOwnerGraph == null) {\n        break;\n      }\n\n      if (secondOwnerGraph == firstOwnerGraph) {\n        return secondOwnerGraph;\n      }\n      secondOwnerGraph = secondOwnerGraph.getParent().getOwner();\n    } while (true);\n\n    firstOwnerGraph = firstOwnerGraph.getParent().getOwner();\n  } while (true);\n\n  return firstOwnerGraph;\n};\n\nLGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) {\n  if (graph == null && depth == null) {\n    graph = this.rootGraph;\n    depth = 1;\n  }\n  var node;\n\n  var nodes = graph.getNodes();\n  var s = nodes.length;\n  for (var i = 0; i < s; i++) {\n    node = nodes[i];\n    node.inclusionTreeDepth = depth;\n\n    if (node.child != null) {\n      this.calcInclusionTreeDepths(node.child, depth + 1);\n    }\n  }\n};\n\nLGraphManager.prototype.includesInvalidEdge = function () {\n  var edge;\n\n  var s = this.edges.length;\n  for (var i = 0; i < s; i++) {\n    edge = this.edges[i];\n\n    if (this.isOneAncestorOfOther(edge.source, edge.target)) {\n      return true;\n    }\n  }\n  return false;\n};\n\nmodule.exports = LGraphManager;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LayoutConstants = __webpack_require__(0);\n\nfunction FDLayoutConstants() {}\n\n//FDLayoutConstants inherits static props in LayoutConstants\nfor (var prop in LayoutConstants) {\n  FDLayoutConstants[prop] = LayoutConstants[prop];\n}\n\nFDLayoutConstants.MAX_ITERATIONS = 2500;\n\nFDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;\nFDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45;\nFDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0;\nFDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0;\nFDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5;\nFDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true;\nFDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true;\nFDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3;\nFDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33;\nFDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000;\nFDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3;\nFDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;\nFDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100;\nFDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1;\nFDLayoutConstants.MIN_EDGE_LENGTH = 1;\nFDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10;\n\nmodule.exports = FDLayoutConstants;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * This class maintains a list of static geometry related utility methods.\n *\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar Point = __webpack_require__(12);\n\nfunction IGeometry() {}\n\n/**\n * This method calculates *half* the amount in x and y directions of the two\n * input rectangles needed to separate them keeping their respective\n * positioning, and returns the result in the input array. An input\n * separation buffer added to the amount in both directions. We assume that\n * the two rectangles do intersect.\n */\nIGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) {\n  if (!rectA.intersects(rectB)) {\n    throw \"assert failed\";\n  }\n\n  var directions = new Array(2);\n\n  this.decideDirectionsForOverlappingNodes(rectA, rectB, directions);\n\n  overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x);\n  overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y);\n\n  // update the overlapping amounts for the following cases:\n  if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) {\n    /* Case x.1:\n    *\n    * rectA\n    * \t|                       |\n    * \t|        _________      |\n    * \t|        |       |      |\n    * \t|________|_______|______|\n    * \t\t\t |       |\n    *           |       |\n    *        rectB\n    */\n    overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight());\n  } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) {\n    /* Case x.2:\n    *\n    * rectB\n    * \t|                       |\n    * \t|        _________      |\n    * \t|        |       |      |\n    * \t|________|_______|______|\n    * \t\t\t |       |\n    *           |       |\n    *        rectA\n    */\n    overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight());\n  }\n  if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) {\n    /* Case y.1:\n     *          ________ rectA\n     *         |\n     *         |\n     *   ______|____  rectB\n     *         |    |\n     *         |    |\n     *   ______|____|\n     *         |\n     *         |\n     *         |________\n     *\n     */\n    overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom());\n  } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) {\n    /* Case y.2:\n    *          ________ rectB\n    *         |\n    *         |\n    *   ______|____  rectA\n    *         |    |\n    *         |    |\n    *   ______|____|\n    *         |\n    *         |\n    *         |________\n    *\n    */\n    overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom());\n  }\n\n  // find slope of the line passes two centers\n  var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX()));\n  // if centers are overlapped\n  if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) {\n    // assume the slope is 1 (45 degree)\n    slope = 1.0;\n  }\n\n  var moveByY = slope * overlapAmount[0];\n  var moveByX = overlapAmount[1] / slope;\n  if (overlapAmount[0] < moveByX) {\n    moveByX = overlapAmount[0];\n  } else {\n    moveByY = overlapAmount[1];\n  }\n  // return half the amount so that if each rectangle is moved by these\n  // amounts in opposite directions, overlap will be resolved\n  overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer);\n  overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer);\n};\n\n/**\n * This method decides the separation direction of overlapping nodes\n *\n * if directions[0] = -1, then rectA goes left\n * if directions[0] = 1,  then rectA goes right\n * if directions[1] = -1, then rectA goes up\n * if directions[1] = 1,  then rectA goes down\n */\nIGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) {\n  if (rectA.getCenterX() < rectB.getCenterX()) {\n    directions[0] = -1;\n  } else {\n    directions[0] = 1;\n  }\n\n  if (rectA.getCenterY() < rectB.getCenterY()) {\n    directions[1] = -1;\n  } else {\n    directions[1] = 1;\n  }\n};\n\n/**\n * This method calculates the intersection (clipping) points of the two\n * input rectangles with line segment defined by the centers of these two\n * rectangles. The clipping points are saved in the input double array and\n * whether or not the two rectangles overlap is returned.\n */\nIGeometry.getIntersection2 = function (rectA, rectB, result) {\n  //result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB\n  var p1x = rectA.getCenterX();\n  var p1y = rectA.getCenterY();\n  var p2x = rectB.getCenterX();\n  var p2y = rectB.getCenterY();\n\n  //if two rectangles intersect, then clipping points are centers\n  if (rectA.intersects(rectB)) {\n    result[0] = p1x;\n    result[1] = p1y;\n    result[2] = p2x;\n    result[3] = p2y;\n    return true;\n  }\n  //variables for rectA\n  var topLeftAx = rectA.getX();\n  var topLeftAy = rectA.getY();\n  var topRightAx = rectA.getRight();\n  var bottomLeftAx = rectA.getX();\n  var bottomLeftAy = rectA.getBottom();\n  var bottomRightAx = rectA.getRight();\n  var halfWidthA = rectA.getWidthHalf();\n  var halfHeightA = rectA.getHeightHalf();\n  //variables for rectB\n  var topLeftBx = rectB.getX();\n  var topLeftBy = rectB.getY();\n  var topRightBx = rectB.getRight();\n  var bottomLeftBx = rectB.getX();\n  var bottomLeftBy = rectB.getBottom();\n  var bottomRightBx = rectB.getRight();\n  var halfWidthB = rectB.getWidthHalf();\n  var halfHeightB = rectB.getHeightHalf();\n\n  //flag whether clipping points are found\n  var clipPointAFound = false;\n  var clipPointBFound = false;\n\n  // line is vertical\n  if (p1x === p2x) {\n    if (p1y > p2y) {\n      result[0] = p1x;\n      result[1] = topLeftAy;\n      result[2] = p2x;\n      result[3] = bottomLeftBy;\n      return false;\n    } else if (p1y < p2y) {\n      result[0] = p1x;\n      result[1] = bottomLeftAy;\n      result[2] = p2x;\n      result[3] = topLeftBy;\n      return false;\n    } else {\n      //not line, return null;\n    }\n  }\n  // line is horizontal\n  else if (p1y === p2y) {\n      if (p1x > p2x) {\n        result[0] = topLeftAx;\n        result[1] = p1y;\n        result[2] = topRightBx;\n        result[3] = p2y;\n        return false;\n      } else if (p1x < p2x) {\n        result[0] = topRightAx;\n        result[1] = p1y;\n        result[2] = topLeftBx;\n        result[3] = p2y;\n        return false;\n      } else {\n        //not valid line, return null;\n      }\n    } else {\n      //slopes of rectA's and rectB's diagonals\n      var slopeA = rectA.height / rectA.width;\n      var slopeB = rectB.height / rectB.width;\n\n      //slope of line between center of rectA and center of rectB\n      var slopePrime = (p2y - p1y) / (p2x - p1x);\n      var cardinalDirectionA = void 0;\n      var cardinalDirectionB = void 0;\n      var tempPointAx = void 0;\n      var tempPointAy = void 0;\n      var tempPointBx = void 0;\n      var tempPointBy = void 0;\n\n      //determine whether clipping point is the corner of nodeA\n      if (-slopeA === slopePrime) {\n        if (p1x > p2x) {\n          result[0] = bottomLeftAx;\n          result[1] = bottomLeftAy;\n          clipPointAFound = true;\n        } else {\n          result[0] = topRightAx;\n          result[1] = topLeftAy;\n          clipPointAFound = true;\n        }\n      } else if (slopeA === slopePrime) {\n        if (p1x > p2x) {\n          result[0] = topLeftAx;\n          result[1] = topLeftAy;\n          clipPointAFound = true;\n        } else {\n          result[0] = bottomRightAx;\n          result[1] = bottomLeftAy;\n          clipPointAFound = true;\n        }\n      }\n\n      //determine whether clipping point is the corner of nodeB\n      if (-slopeB === slopePrime) {\n        if (p2x > p1x) {\n          result[2] = bottomLeftBx;\n          result[3] = bottomLeftBy;\n          clipPointBFound = true;\n        } else {\n          result[2] = topRightBx;\n          result[3] = topLeftBy;\n          clipPointBFound = true;\n        }\n      } else if (slopeB === slopePrime) {\n        if (p2x > p1x) {\n          result[2] = topLeftBx;\n          result[3] = topLeftBy;\n          clipPointBFound = true;\n        } else {\n          result[2] = bottomRightBx;\n          result[3] = bottomLeftBy;\n          clipPointBFound = true;\n        }\n      }\n\n      //if both clipping points are corners\n      if (clipPointAFound && clipPointBFound) {\n        return false;\n      }\n\n      //determine Cardinal Direction of rectangles\n      if (p1x > p2x) {\n        if (p1y > p2y) {\n          cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4);\n          cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2);\n        } else {\n          cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3);\n          cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1);\n        }\n      } else {\n        if (p1y > p2y) {\n          cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1);\n          cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3);\n        } else {\n          cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2);\n          cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4);\n        }\n      }\n      //calculate clipping Point if it is not found before\n      if (!clipPointAFound) {\n        switch (cardinalDirectionA) {\n          case 1:\n            tempPointAy = topLeftAy;\n            tempPointAx = p1x + -halfHeightA / slopePrime;\n            result[0] = tempPointAx;\n            result[1] = tempPointAy;\n            break;\n          case 2:\n            tempPointAx = bottomRightAx;\n            tempPointAy = p1y + halfWidthA * slopePrime;\n            result[0] = tempPointAx;\n            result[1] = tempPointAy;\n            break;\n          case 3:\n            tempPointAy = bottomLeftAy;\n            tempPointAx = p1x + halfHeightA / slopePrime;\n            result[0] = tempPointAx;\n            result[1] = tempPointAy;\n            break;\n          case 4:\n            tempPointAx = bottomLeftAx;\n            tempPointAy = p1y + -halfWidthA * slopePrime;\n            result[0] = tempPointAx;\n            result[1] = tempPointAy;\n            break;\n        }\n      }\n      if (!clipPointBFound) {\n        switch (cardinalDirectionB) {\n          case 1:\n            tempPointBy = topLeftBy;\n            tempPointBx = p2x + -halfHeightB / slopePrime;\n            result[2] = tempPointBx;\n            result[3] = tempPointBy;\n            break;\n          case 2:\n            tempPointBx = bottomRightBx;\n            tempPointBy = p2y + halfWidthB * slopePrime;\n            result[2] = tempPointBx;\n            result[3] = tempPointBy;\n            break;\n          case 3:\n            tempPointBy = bottomLeftBy;\n            tempPointBx = p2x + halfHeightB / slopePrime;\n            result[2] = tempPointBx;\n            result[3] = tempPointBy;\n            break;\n          case 4:\n            tempPointBx = bottomLeftBx;\n            tempPointBy = p2y + -halfWidthB * slopePrime;\n            result[2] = tempPointBx;\n            result[3] = tempPointBy;\n            break;\n        }\n      }\n    }\n  return false;\n};\n\n/**\n * This method returns in which cardinal direction does input point stays\n * 1: North\n * 2: East\n * 3: South\n * 4: West\n */\nIGeometry.getCardinalDirection = function (slope, slopePrime, line) {\n  if (slope > slopePrime) {\n    return line;\n  } else {\n    return 1 + line % 4;\n  }\n};\n\n/**\n * This method calculates the intersection of the two lines defined by\n * point pairs (s1,s2) and (f1,f2).\n */\nIGeometry.getIntersection = function (s1, s2, f1, f2) {\n  if (f2 == null) {\n    return this.getIntersection2(s1, s2, f1);\n  }\n\n  var x1 = s1.x;\n  var y1 = s1.y;\n  var x2 = s2.x;\n  var y2 = s2.y;\n  var x3 = f1.x;\n  var y3 = f1.y;\n  var x4 = f2.x;\n  var y4 = f2.y;\n  var x = void 0,\n      y = void 0; // intersection point\n  var a1 = void 0,\n      a2 = void 0,\n      b1 = void 0,\n      b2 = void 0,\n      c1 = void 0,\n      c2 = void 0; // coefficients of line eqns.\n  var denom = void 0;\n\n  a1 = y2 - y1;\n  b1 = x1 - x2;\n  c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 }\n\n  a2 = y4 - y3;\n  b2 = x3 - x4;\n  c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 }\n\n  denom = a1 * b2 - a2 * b1;\n\n  if (denom === 0) {\n    return null;\n  }\n\n  x = (b1 * c2 - b2 * c1) / denom;\n  y = (a2 * c1 - a1 * c2) / denom;\n\n  return new Point(x, y);\n};\n\n/**\n * This method finds and returns the angle of the vector from the + x-axis\n * in clockwise direction (compatible w/ Java coordinate system!).\n */\nIGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) {\n  var C_angle = void 0;\n\n  if (Cx !== Nx) {\n    C_angle = Math.atan((Ny - Cy) / (Nx - Cx));\n\n    if (Nx < Cx) {\n      C_angle += Math.PI;\n    } else if (Ny < Cy) {\n      C_angle += this.TWO_PI;\n    }\n  } else if (Ny < Cy) {\n    C_angle = this.ONE_AND_HALF_PI; // 270 degrees\n  } else {\n    C_angle = this.HALF_PI; // 90 degrees\n  }\n\n  return C_angle;\n};\n\n/**\n * This method checks whether the given two line segments (one with point\n * p1 and p2, the other with point p3 and p4) intersect at a point other\n * than these points.\n */\nIGeometry.doIntersect = function (p1, p2, p3, p4) {\n  var a = p1.x;\n  var b = p1.y;\n  var c = p2.x;\n  var d = p2.y;\n  var p = p3.x;\n  var q = p3.y;\n  var r = p4.x;\n  var s = p4.y;\n  var det = (c - a) * (s - q) - (r - p) * (d - b);\n\n  if (det === 0) {\n    return false;\n  } else {\n    var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det;\n    var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det;\n    return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1;\n  }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Class Constants\n// -----------------------------------------------------------------------------\n/**\n * Some useful pre-calculated constants\n */\nIGeometry.HALF_PI = 0.5 * Math.PI;\nIGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI;\nIGeometry.TWO_PI = 2.0 * Math.PI;\nIGeometry.THREE_PI = 3.0 * Math.PI;\n\nmodule.exports = IGeometry;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction IMath() {}\n\n/**\n * This method returns the sign of the input value.\n */\nIMath.sign = function (value) {\n  if (value > 0) {\n    return 1;\n  } else if (value < 0) {\n    return -1;\n  } else {\n    return 0;\n  }\n};\n\nIMath.floor = function (value) {\n  return value < 0 ? Math.ceil(value) : Math.floor(value);\n};\n\nIMath.ceil = function (value) {\n  return value < 0 ? Math.floor(value) : Math.ceil(value);\n};\n\nmodule.exports = IMath;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Integer() {}\n\nInteger.MAX_VALUE = 2147483647;\nInteger.MIN_VALUE = -2147483648;\n\nmodule.exports = Integer;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar nodeFrom = function nodeFrom(value) {\n  return { value: value, next: null, prev: null };\n};\n\nvar add = function add(prev, node, next, list) {\n  if (prev !== null) {\n    prev.next = node;\n  } else {\n    list.head = node;\n  }\n\n  if (next !== null) {\n    next.prev = node;\n  } else {\n    list.tail = node;\n  }\n\n  node.prev = prev;\n  node.next = next;\n\n  list.length++;\n\n  return node;\n};\n\nvar _remove = function _remove(node, list) {\n  var prev = node.prev,\n      next = node.next;\n\n\n  if (prev !== null) {\n    prev.next = next;\n  } else {\n    list.head = next;\n  }\n\n  if (next !== null) {\n    next.prev = prev;\n  } else {\n    list.tail = prev;\n  }\n\n  node.prev = node.next = null;\n\n  list.length--;\n\n  return node;\n};\n\nvar LinkedList = function () {\n  function LinkedList(vals) {\n    var _this = this;\n\n    _classCallCheck(this, LinkedList);\n\n    this.length = 0;\n    this.head = null;\n    this.tail = null;\n\n    if (vals != null) {\n      vals.forEach(function (v) {\n        return _this.push(v);\n      });\n    }\n  }\n\n  _createClass(LinkedList, [{\n    key: \"size\",\n    value: function size() {\n      return this.length;\n    }\n  }, {\n    key: \"insertBefore\",\n    value: function insertBefore(val, otherNode) {\n      return add(otherNode.prev, nodeFrom(val), otherNode, this);\n    }\n  }, {\n    key: \"insertAfter\",\n    value: function insertAfter(val, otherNode) {\n      return add(otherNode, nodeFrom(val), otherNode.next, this);\n    }\n  }, {\n    key: \"insertNodeBefore\",\n    value: function insertNodeBefore(newNode, otherNode) {\n      return add(otherNode.prev, newNode, otherNode, this);\n    }\n  }, {\n    key: \"insertNodeAfter\",\n    value: function insertNodeAfter(newNode, otherNode) {\n      return add(otherNode, newNode, otherNode.next, this);\n    }\n  }, {\n    key: \"push\",\n    value: function push(val) {\n      return add(this.tail, nodeFrom(val), null, this);\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(val) {\n      return add(null, nodeFrom(val), this.head, this);\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(node) {\n      return _remove(node, this);\n    }\n  }, {\n    key: \"pop\",\n    value: function pop() {\n      return _remove(this.tail, this).value;\n    }\n  }, {\n    key: \"popNode\",\n    value: function popNode() {\n      return _remove(this.tail, this);\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      return _remove(this.head, this).value;\n    }\n  }, {\n    key: \"shiftNode\",\n    value: function shiftNode() {\n      return _remove(this.head, this);\n    }\n  }, {\n    key: \"get_object_at\",\n    value: function get_object_at(index) {\n      if (index <= this.length()) {\n        var i = 1;\n        var current = this.head;\n        while (i < index) {\n          current = current.next;\n          i++;\n        }\n        return current.value;\n      }\n    }\n  }, {\n    key: \"set_object_at\",\n    value: function set_object_at(index, value) {\n      if (index <= this.length()) {\n        var i = 1;\n        var current = this.head;\n        while (i < index) {\n          current = current.next;\n          i++;\n        }\n        current.value = value;\n      }\n    }\n  }]);\n\n  return LinkedList;\n}();\n\nmodule.exports = LinkedList;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\r\n *This class is the javascript implementation of the Point.java class in jdk\r\n */\nfunction Point(x, y, p) {\n  this.x = null;\n  this.y = null;\n  if (x == null && y == null && p == null) {\n    this.x = 0;\n    this.y = 0;\n  } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n    this.x = x;\n    this.y = y;\n  } else if (x.constructor.name == 'Point' && y == null && p == null) {\n    p = x;\n    this.x = p.x;\n    this.y = p.y;\n  }\n}\n\nPoint.prototype.getX = function () {\n  return this.x;\n};\n\nPoint.prototype.getY = function () {\n  return this.y;\n};\n\nPoint.prototype.getLocation = function () {\n  return new Point(this.x, this.y);\n};\n\nPoint.prototype.setLocation = function (x, y, p) {\n  if (x.constructor.name == 'Point' && y == null && p == null) {\n    p = x;\n    this.setLocation(p.x, p.y);\n  } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n    //if both parameters are integer just move (x,y) location\n    if (parseInt(x) == x && parseInt(y) == y) {\n      this.move(x, y);\n    } else {\n      this.x = Math.floor(x + 0.5);\n      this.y = Math.floor(y + 0.5);\n    }\n  }\n};\n\nPoint.prototype.move = function (x, y) {\n  this.x = x;\n  this.y = y;\n};\n\nPoint.prototype.translate = function (dx, dy) {\n  this.x += dx;\n  this.y += dy;\n};\n\nPoint.prototype.equals = function (obj) {\n  if (obj.constructor.name == \"Point\") {\n    var pt = obj;\n    return this.x == pt.x && this.y == pt.y;\n  }\n  return this == obj;\n};\n\nPoint.prototype.toString = function () {\n  return new Point().constructor.name + \"[x=\" + this.x + \",y=\" + this.y + \"]\";\n};\n\nmodule.exports = Point;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RectangleD(x, y, width, height) {\n  this.x = 0;\n  this.y = 0;\n  this.width = 0;\n  this.height = 0;\n\n  if (x != null && y != null && width != null && height != null) {\n    this.x = x;\n    this.y = y;\n    this.width = width;\n    this.height = height;\n  }\n}\n\nRectangleD.prototype.getX = function () {\n  return this.x;\n};\n\nRectangleD.prototype.setX = function (x) {\n  this.x = x;\n};\n\nRectangleD.prototype.getY = function () {\n  return this.y;\n};\n\nRectangleD.prototype.setY = function (y) {\n  this.y = y;\n};\n\nRectangleD.prototype.getWidth = function () {\n  return this.width;\n};\n\nRectangleD.prototype.setWidth = function (width) {\n  this.width = width;\n};\n\nRectangleD.prototype.getHeight = function () {\n  return this.height;\n};\n\nRectangleD.prototype.setHeight = function (height) {\n  this.height = height;\n};\n\nRectangleD.prototype.getRight = function () {\n  return this.x + this.width;\n};\n\nRectangleD.prototype.getBottom = function () {\n  return this.y + this.height;\n};\n\nRectangleD.prototype.intersects = function (a) {\n  if (this.getRight() < a.x) {\n    return false;\n  }\n\n  if (this.getBottom() < a.y) {\n    return false;\n  }\n\n  if (a.getRight() < this.x) {\n    return false;\n  }\n\n  if (a.getBottom() < this.y) {\n    return false;\n  }\n\n  return true;\n};\n\nRectangleD.prototype.getCenterX = function () {\n  return this.x + this.width / 2;\n};\n\nRectangleD.prototype.getMinX = function () {\n  return this.getX();\n};\n\nRectangleD.prototype.getMaxX = function () {\n  return this.getX() + this.width;\n};\n\nRectangleD.prototype.getCenterY = function () {\n  return this.y + this.height / 2;\n};\n\nRectangleD.prototype.getMinY = function () {\n  return this.getY();\n};\n\nRectangleD.prototype.getMaxY = function () {\n  return this.getY() + this.height;\n};\n\nRectangleD.prototype.getWidthHalf = function () {\n  return this.width / 2;\n};\n\nRectangleD.prototype.getHeightHalf = function () {\n  return this.height / 2;\n};\n\nmodule.exports = RectangleD;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _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\nfunction UniqueIDGeneretor() {}\n\nUniqueIDGeneretor.lastID = 0;\n\nUniqueIDGeneretor.createID = function (obj) {\n  if (UniqueIDGeneretor.isPrimitive(obj)) {\n    return obj;\n  }\n  if (obj.uniqueID != null) {\n    return obj.uniqueID;\n  }\n  obj.uniqueID = UniqueIDGeneretor.getString();\n  UniqueIDGeneretor.lastID++;\n  return obj.uniqueID;\n};\n\nUniqueIDGeneretor.getString = function (id) {\n  if (id == null) id = UniqueIDGeneretor.lastID;\n  return \"Object#\" + id + \"\";\n};\n\nUniqueIDGeneretor.isPrimitive = function (arg) {\n  var type = typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg);\n  return arg == null || type != \"object\" && type != \"function\";\n};\n\nmodule.exports = UniqueIDGeneretor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _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\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(6);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar LGraph = __webpack_require__(5);\nvar PointD = __webpack_require__(4);\nvar Transform = __webpack_require__(17);\nvar Emitter = __webpack_require__(27);\n\nfunction Layout(isRemoteUse) {\n  Emitter.call(this);\n\n  //Layout Quality: 0:draft, 1:default, 2:proof\n  this.layoutQuality = LayoutConstants.QUALITY;\n  //Whether layout should create bendpoints as needed or not\n  this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n  //Whether layout should be incremental or not\n  this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n  //Whether we animate from before to after layout node positions\n  this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n  //Whether we animate the layout process or not\n  this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n  //Number iterations that should be done between two successive animations\n  this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n  /**\r\n   * Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When\r\n   * they are, both spring and repulsion forces between two leaf nodes can be\r\n   * calculated without the expensive clipping point calculations, resulting\r\n   * in major speed-up.\r\n   */\n  this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n  /**\r\n   * This is used for creation of bendpoints by using dummy nodes and edges.\r\n   * Maps an LEdge to its dummy bendpoint path.\r\n   */\n  this.edgeToDummyNodes = new Map();\n  this.graphManager = new LGraphManager(this);\n  this.isLayoutFinished = false;\n  this.isSubLayout = false;\n  this.isRemoteUse = false;\n\n  if (isRemoteUse != null) {\n    this.isRemoteUse = isRemoteUse;\n  }\n}\n\nLayout.RANDOM_SEED = 1;\n\nLayout.prototype = Object.create(Emitter.prototype);\n\nLayout.prototype.getGraphManager = function () {\n  return this.graphManager;\n};\n\nLayout.prototype.getAllNodes = function () {\n  return this.graphManager.getAllNodes();\n};\n\nLayout.prototype.getAllEdges = function () {\n  return this.graphManager.getAllEdges();\n};\n\nLayout.prototype.getAllNodesToApplyGravitation = function () {\n  return this.graphManager.getAllNodesToApplyGravitation();\n};\n\nLayout.prototype.newGraphManager = function () {\n  var gm = new LGraphManager(this);\n  this.graphManager = gm;\n  return gm;\n};\n\nLayout.prototype.newGraph = function (vGraph) {\n  return new LGraph(null, this.graphManager, vGraph);\n};\n\nLayout.prototype.newNode = function (vNode) {\n  return new LNode(this.graphManager, vNode);\n};\n\nLayout.prototype.newEdge = function (vEdge) {\n  return new LEdge(null, null, vEdge);\n};\n\nLayout.prototype.checkLayoutSuccess = function () {\n  return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge();\n};\n\nLayout.prototype.runLayout = function () {\n  this.isLayoutFinished = false;\n\n  if (this.tilingPreLayout) {\n    this.tilingPreLayout();\n  }\n\n  this.initParameters();\n  var isLayoutSuccessfull;\n\n  if (this.checkLayoutSuccess()) {\n    isLayoutSuccessfull = false;\n  } else {\n    isLayoutSuccessfull = this.layout();\n  }\n\n  if (LayoutConstants.ANIMATE === 'during') {\n    // If this is a 'during' layout animation. Layout is not finished yet. \n    // We need to perform these in index.js when layout is really finished.\n    return false;\n  }\n\n  if (isLayoutSuccessfull) {\n    if (!this.isSubLayout) {\n      this.doPostLayout();\n    }\n  }\n\n  if (this.tilingPostLayout) {\n    this.tilingPostLayout();\n  }\n\n  this.isLayoutFinished = true;\n\n  return isLayoutSuccessfull;\n};\n\n/**\r\n * This method performs the operations required after layout.\r\n */\nLayout.prototype.doPostLayout = function () {\n  //assert !isSubLayout : \"Should not be called on sub-layout!\";\n  // Propagate geometric changes to v-level objects\n  if (!this.incremental) {\n    this.transform();\n  }\n  this.update();\n};\n\n/**\r\n * This method updates the geometry of the target graph according to\r\n * calculated layout.\r\n */\nLayout.prototype.update2 = function () {\n  // update bend points\n  if (this.createBendsAsNeeded) {\n    this.createBendpointsFromDummyNodes();\n\n    // reset all edges, since the topology has changed\n    this.graphManager.resetAllEdges();\n  }\n\n  // perform edge, node and root updates if layout is not called\n  // remotely\n  if (!this.isRemoteUse) {\n    // update all edges\n    var edge;\n    var allEdges = this.graphManager.getAllEdges();\n    for (var i = 0; i < allEdges.length; i++) {\n      edge = allEdges[i];\n      //      this.update(edge);\n    }\n\n    // recursively update nodes\n    var node;\n    var nodes = this.graphManager.getRoot().getNodes();\n    for (var i = 0; i < nodes.length; i++) {\n      node = nodes[i];\n      //      this.update(node);\n    }\n\n    // update root graph\n    this.update(this.graphManager.getRoot());\n  }\n};\n\nLayout.prototype.update = function (obj) {\n  if (obj == null) {\n    this.update2();\n  } else if (obj instanceof LNode) {\n    var node = obj;\n    if (node.getChild() != null) {\n      // since node is compound, recursively update child nodes\n      var nodes = node.getChild().getNodes();\n      for (var i = 0; i < nodes.length; i++) {\n        update(nodes[i]);\n      }\n    }\n\n    // if the l-level node is associated with a v-level graph object,\n    // then it is assumed that the v-level node implements the\n    // interface Updatable.\n    if (node.vGraphObject != null) {\n      // cast to Updatable without any type check\n      var vNode = node.vGraphObject;\n\n      // call the update method of the interface\n      vNode.update(node);\n    }\n  } else if (obj instanceof LEdge) {\n    var edge = obj;\n    // if the l-level edge is associated with a v-level graph object,\n    // then it is assumed that the v-level edge implements the\n    // interface Updatable.\n\n    if (edge.vGraphObject != null) {\n      // cast to Updatable without any type check\n      var vEdge = edge.vGraphObject;\n\n      // call the update method of the interface\n      vEdge.update(edge);\n    }\n  } else if (obj instanceof LGraph) {\n    var graph = obj;\n    // if the l-level graph is associated with a v-level graph object,\n    // then it is assumed that the v-level object implements the\n    // interface Updatable.\n\n    if (graph.vGraphObject != null) {\n      // cast to Updatable without any type check\n      var vGraph = graph.vGraphObject;\n\n      // call the update method of the interface\n      vGraph.update(graph);\n    }\n  }\n};\n\n/**\r\n * This method is used to set all layout parameters to default values\r\n * determined at compile time.\r\n */\nLayout.prototype.initParameters = function () {\n  if (!this.isSubLayout) {\n    this.layoutQuality = LayoutConstants.QUALITY;\n    this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n    this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n    this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n    this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n    this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n    this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n  }\n\n  if (this.animationDuringLayout) {\n    this.animationOnLayout = false;\n  }\n};\n\nLayout.prototype.transform = function (newLeftTop) {\n  if (newLeftTop == undefined) {\n    this.transform(new PointD(0, 0));\n  } else {\n    // create a transformation object (from Eclipse to layout). When an\n    // inverse transform is applied, we get upper-left coordinate of the\n    // drawing or the root graph at given input coordinate (some margins\n    // already included in calculation of left-top).\n\n    var trans = new Transform();\n    var leftTop = this.graphManager.getRoot().updateLeftTop();\n\n    if (leftTop != null) {\n      trans.setWorldOrgX(newLeftTop.x);\n      trans.setWorldOrgY(newLeftTop.y);\n\n      trans.setDeviceOrgX(leftTop.x);\n      trans.setDeviceOrgY(leftTop.y);\n\n      var nodes = this.getAllNodes();\n      var node;\n\n      for (var i = 0; i < nodes.length; i++) {\n        node = nodes[i];\n        node.transform(trans);\n      }\n    }\n  }\n};\n\nLayout.prototype.positionNodesRandomly = function (graph) {\n\n  if (graph == undefined) {\n    //assert !this.incremental;\n    this.positionNodesRandomly(this.getGraphManager().getRoot());\n    this.getGraphManager().getRoot().updateBounds(true);\n  } else {\n    var lNode;\n    var childGraph;\n\n    var nodes = graph.getNodes();\n    for (var i = 0; i < nodes.length; i++) {\n      lNode = nodes[i];\n      childGraph = lNode.getChild();\n\n      if (childGraph == null) {\n        lNode.scatter();\n      } else if (childGraph.getNodes().length == 0) {\n        lNode.scatter();\n      } else {\n        this.positionNodesRandomly(childGraph);\n        lNode.updateBounds();\n      }\n    }\n  }\n};\n\n/**\r\n * This method returns a list of trees where each tree is represented as a\r\n * list of l-nodes. The method returns a list of size 0 when:\r\n * - The graph is not flat or\r\n * - One of the component(s) of the graph is not a tree.\r\n */\nLayout.prototype.getFlatForest = function () {\n  var flatForest = [];\n  var isForest = true;\n\n  // Quick reference for all nodes in the graph manager associated with\n  // this layout. The list should not be changed.\n  var allNodes = this.graphManager.getRoot().getNodes();\n\n  // First be sure that the graph is flat\n  var isFlat = true;\n\n  for (var i = 0; i < allNodes.length; i++) {\n    if (allNodes[i].getChild() != null) {\n      isFlat = false;\n    }\n  }\n\n  // Return empty forest if the graph is not flat.\n  if (!isFlat) {\n    return flatForest;\n  }\n\n  // Run BFS for each component of the graph.\n\n  var visited = new Set();\n  var toBeVisited = [];\n  var parents = new Map();\n  var unProcessedNodes = [];\n\n  unProcessedNodes = unProcessedNodes.concat(allNodes);\n\n  // Each iteration of this loop finds a component of the graph and\n  // decides whether it is a tree or not. If it is a tree, adds it to the\n  // forest and continued with the next component.\n\n  while (unProcessedNodes.length > 0 && isForest) {\n    toBeVisited.push(unProcessedNodes[0]);\n\n    // Start the BFS. Each iteration of this loop visits a node in a\n    // BFS manner.\n    while (toBeVisited.length > 0 && isForest) {\n      //pool operation\n      var currentNode = toBeVisited[0];\n      toBeVisited.splice(0, 1);\n      visited.add(currentNode);\n\n      // Traverse all neighbors of this node\n      var neighborEdges = currentNode.getEdges();\n\n      for (var i = 0; i < neighborEdges.length; i++) {\n        var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode);\n\n        // If BFS is not growing from this neighbor.\n        if (parents.get(currentNode) != currentNeighbor) {\n          // We haven't previously visited this neighbor.\n          if (!visited.has(currentNeighbor)) {\n            toBeVisited.push(currentNeighbor);\n            parents.set(currentNeighbor, currentNode);\n          }\n          // Since we have previously visited this neighbor and\n          // this neighbor is not parent of currentNode, given\n          // graph contains a component that is not tree, hence\n          // it is not a forest.\n          else {\n              isForest = false;\n              break;\n            }\n        }\n      }\n    }\n\n    // The graph contains a component that is not a tree. Empty\n    // previously found trees. The method will end.\n    if (!isForest) {\n      flatForest = [];\n    }\n    // Save currently visited nodes as a tree in our forest. Reset\n    // visited and parents lists. Continue with the next component of\n    // the graph, if any.\n    else {\n        var temp = [].concat(_toConsumableArray(visited));\n        flatForest.push(temp);\n        //flatForest = flatForest.concat(temp);\n        //unProcessedNodes.removeAll(visited);\n        for (var i = 0; i < temp.length; i++) {\n          var value = temp[i];\n          var index = unProcessedNodes.indexOf(value);\n          if (index > -1) {\n            unProcessedNodes.splice(index, 1);\n          }\n        }\n        visited = new Set();\n        parents = new Map();\n      }\n  }\n\n  return flatForest;\n};\n\n/**\r\n * This method creates dummy nodes (an l-level node with minimal dimensions)\r\n * for the given edge (one per bendpoint). The existing l-level structure\r\n * is updated accordingly.\r\n */\nLayout.prototype.createDummyNodesForBendpoints = function (edge) {\n  var dummyNodes = [];\n  var prev = edge.source;\n\n  var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target);\n\n  for (var i = 0; i < edge.bendpoints.length; i++) {\n    // create new dummy node\n    var dummyNode = this.newNode(null);\n    dummyNode.setRect(new Point(0, 0), new Dimension(1, 1));\n\n    graph.add(dummyNode);\n\n    // create new dummy edge between prev and dummy node\n    var dummyEdge = this.newEdge(null);\n    this.graphManager.add(dummyEdge, prev, dummyNode);\n\n    dummyNodes.add(dummyNode);\n    prev = dummyNode;\n  }\n\n  var dummyEdge = this.newEdge(null);\n  this.graphManager.add(dummyEdge, prev, edge.target);\n\n  this.edgeToDummyNodes.set(edge, dummyNodes);\n\n  // remove real edge from graph manager if it is inter-graph\n  if (edge.isInterGraph()) {\n    this.graphManager.remove(edge);\n  }\n  // else, remove the edge from the current graph\n  else {\n      graph.remove(edge);\n    }\n\n  return dummyNodes;\n};\n\n/**\r\n * This method creates bendpoints for edges from the dummy nodes\r\n * at l-level.\r\n */\nLayout.prototype.createBendpointsFromDummyNodes = function () {\n  var edges = [];\n  edges = edges.concat(this.graphManager.getAllEdges());\n  edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges);\n\n  for (var k = 0; k < edges.length; k++) {\n    var lEdge = edges[k];\n\n    if (lEdge.bendpoints.length > 0) {\n      var path = this.edgeToDummyNodes.get(lEdge);\n\n      for (var i = 0; i < path.length; i++) {\n        var dummyNode = path[i];\n        var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY());\n\n        // update bendpoint's location according to dummy node\n        var ebp = lEdge.bendpoints.get(i);\n        ebp.x = p.x;\n        ebp.y = p.y;\n\n        // remove the dummy node, dummy edges incident with this\n        // dummy node is also removed (within the remove method)\n        dummyNode.getOwner().remove(dummyNode);\n      }\n\n      // add the real edge to graph\n      this.graphManager.add(lEdge, lEdge.source, lEdge.target);\n    }\n  }\n};\n\nLayout.transform = function (sliderValue, defaultValue, minDiv, maxMul) {\n  if (minDiv != undefined && maxMul != undefined) {\n    var value = defaultValue;\n\n    if (sliderValue <= 50) {\n      var minValue = defaultValue / minDiv;\n      value -= (defaultValue - minValue) / 50 * (50 - sliderValue);\n    } else {\n      var maxValue = defaultValue * maxMul;\n      value += (maxValue - defaultValue) / 50 * (sliderValue - 50);\n    }\n\n    return value;\n  } else {\n    var a, b;\n\n    if (sliderValue <= 50) {\n      a = 9.0 * defaultValue / 500.0;\n      b = defaultValue / 10.0;\n    } else {\n      a = 9.0 * defaultValue / 50.0;\n      b = -8 * defaultValue;\n    }\n\n    return a * sliderValue + b;\n  }\n};\n\n/**\r\n * This method finds and returns the center of the given nodes, assuming\r\n * that the given nodes form a tree in themselves.\r\n */\nLayout.findCenterOfTree = function (nodes) {\n  var list = [];\n  list = list.concat(nodes);\n\n  var removedNodes = [];\n  var remainingDegrees = new Map();\n  var foundCenter = false;\n  var centerNode = null;\n\n  if (list.length == 1 || list.length == 2) {\n    foundCenter = true;\n    centerNode = list[0];\n  }\n\n  for (var i = 0; i < list.length; i++) {\n    var node = list[i];\n    var degree = node.getNeighborsList().size;\n    remainingDegrees.set(node, node.getNeighborsList().size);\n\n    if (degree == 1) {\n      removedNodes.push(node);\n    }\n  }\n\n  var tempList = [];\n  tempList = tempList.concat(removedNodes);\n\n  while (!foundCenter) {\n    var tempList2 = [];\n    tempList2 = tempList2.concat(tempList);\n    tempList = [];\n\n    for (var i = 0; i < list.length; i++) {\n      var node = list[i];\n\n      var index = list.indexOf(node);\n      if (index >= 0) {\n        list.splice(index, 1);\n      }\n\n      var neighbours = node.getNeighborsList();\n\n      neighbours.forEach(function (neighbour) {\n        if (removedNodes.indexOf(neighbour) < 0) {\n          var otherDegree = remainingDegrees.get(neighbour);\n          var newDegree = otherDegree - 1;\n\n          if (newDegree == 1) {\n            tempList.push(neighbour);\n          }\n\n          remainingDegrees.set(neighbour, newDegree);\n        }\n      });\n    }\n\n    removedNodes = removedNodes.concat(tempList);\n\n    if (list.length == 1 || list.length == 2) {\n      foundCenter = true;\n      centerNode = list[0];\n    }\n  }\n\n  return centerNode;\n};\n\n/**\r\n * During the coarsening process, this layout may be referenced by two graph managers\r\n * this setter function grants access to change the currently being used graph manager\r\n */\nLayout.prototype.setGraphManager = function (gm) {\n  this.graphManager = gm;\n};\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RandomSeed() {}\n// adapted from: https://stackoverflow.com/a/19303725\nRandomSeed.seed = 1;\nRandomSeed.x = 0;\n\nRandomSeed.nextDouble = function () {\n  RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000;\n  return RandomSeed.x - Math.floor(RandomSeed.x);\n};\n\nmodule.exports = RandomSeed;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar PointD = __webpack_require__(4);\n\nfunction Transform(x, y) {\n  this.lworldOrgX = 0.0;\n  this.lworldOrgY = 0.0;\n  this.ldeviceOrgX = 0.0;\n  this.ldeviceOrgY = 0.0;\n  this.lworldExtX = 1.0;\n  this.lworldExtY = 1.0;\n  this.ldeviceExtX = 1.0;\n  this.ldeviceExtY = 1.0;\n}\n\nTransform.prototype.getWorldOrgX = function () {\n  return this.lworldOrgX;\n};\n\nTransform.prototype.setWorldOrgX = function (wox) {\n  this.lworldOrgX = wox;\n};\n\nTransform.prototype.getWorldOrgY = function () {\n  return this.lworldOrgY;\n};\n\nTransform.prototype.setWorldOrgY = function (woy) {\n  this.lworldOrgY = woy;\n};\n\nTransform.prototype.getWorldExtX = function () {\n  return this.lworldExtX;\n};\n\nTransform.prototype.setWorldExtX = function (wex) {\n  this.lworldExtX = wex;\n};\n\nTransform.prototype.getWorldExtY = function () {\n  return this.lworldExtY;\n};\n\nTransform.prototype.setWorldExtY = function (wey) {\n  this.lworldExtY = wey;\n};\n\n/* Device related */\n\nTransform.prototype.getDeviceOrgX = function () {\n  return this.ldeviceOrgX;\n};\n\nTransform.prototype.setDeviceOrgX = function (dox) {\n  this.ldeviceOrgX = dox;\n};\n\nTransform.prototype.getDeviceOrgY = function () {\n  return this.ldeviceOrgY;\n};\n\nTransform.prototype.setDeviceOrgY = function (doy) {\n  this.ldeviceOrgY = doy;\n};\n\nTransform.prototype.getDeviceExtX = function () {\n  return this.ldeviceExtX;\n};\n\nTransform.prototype.setDeviceExtX = function (dex) {\n  this.ldeviceExtX = dex;\n};\n\nTransform.prototype.getDeviceExtY = function () {\n  return this.ldeviceExtY;\n};\n\nTransform.prototype.setDeviceExtY = function (dey) {\n  this.ldeviceExtY = dey;\n};\n\nTransform.prototype.transformX = function (x) {\n  var xDevice = 0.0;\n  var worldExtX = this.lworldExtX;\n  if (worldExtX != 0.0) {\n    xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX;\n  }\n\n  return xDevice;\n};\n\nTransform.prototype.transformY = function (y) {\n  var yDevice = 0.0;\n  var worldExtY = this.lworldExtY;\n  if (worldExtY != 0.0) {\n    yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY;\n  }\n\n  return yDevice;\n};\n\nTransform.prototype.inverseTransformX = function (x) {\n  var xWorld = 0.0;\n  var deviceExtX = this.ldeviceExtX;\n  if (deviceExtX != 0.0) {\n    xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX;\n  }\n\n  return xWorld;\n};\n\nTransform.prototype.inverseTransformY = function (y) {\n  var yWorld = 0.0;\n  var deviceExtY = this.ldeviceExtY;\n  if (deviceExtY != 0.0) {\n    yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY;\n  }\n  return yWorld;\n};\n\nTransform.prototype.inverseTransformPoint = function (inPoint) {\n  var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y));\n  return outPoint;\n};\n\nmodule.exports = Transform;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _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\nvar Layout = __webpack_require__(15);\nvar FDLayoutConstants = __webpack_require__(7);\nvar LayoutConstants = __webpack_require__(0);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction FDLayout() {\n  Layout.call(this);\n\n  this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n  this.idealEdgeLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n  this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n  this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n  this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n  this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n  this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n  this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n  this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;\n  this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n  this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n  this.totalDisplacement = 0.0;\n  this.oldTotalDisplacement = 0.0;\n  this.maxIterations = FDLayoutConstants.MAX_ITERATIONS;\n}\n\nFDLayout.prototype = Object.create(Layout.prototype);\n\nfor (var prop in Layout) {\n  FDLayout[prop] = Layout[prop];\n}\n\nFDLayout.prototype.initParameters = function () {\n  Layout.prototype.initParameters.call(this, arguments);\n\n  this.totalIterations = 0;\n  this.notAnimatedIterations = 0;\n\n  this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION;\n\n  this.grid = [];\n};\n\nFDLayout.prototype.calcIdealEdgeLengths = function () {\n  var edge;\n  var lcaDepth;\n  var source;\n  var target;\n  var sizeOfSourceInLca;\n  var sizeOfTargetInLca;\n\n  var allEdges = this.getGraphManager().getAllEdges();\n  for (var i = 0; i < allEdges.length; i++) {\n    edge = allEdges[i];\n\n    edge.idealLength = this.idealEdgeLength;\n\n    if (edge.isInterGraph) {\n      source = edge.getSource();\n      target = edge.getTarget();\n\n      sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize();\n      sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize();\n\n      if (this.useSmartIdealEdgeLengthCalculation) {\n        edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE;\n      }\n\n      lcaDepth = edge.getLca().getInclusionTreeDepth();\n\n      edge.idealLength += FDLayoutConstants.DEFAULT_EDGE_LENGTH * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth);\n    }\n  }\n};\n\nFDLayout.prototype.initSpringEmbedder = function () {\n\n  var s = this.getAllNodes().length;\n  if (this.incremental) {\n    if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n      this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n    }\n    this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL;\n  } else {\n    if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n      this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n    } else {\n      this.coolingFactor = 1.0;\n    }\n    this.initialCoolingFactor = this.coolingFactor;\n    this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT;\n  }\n\n  this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations);\n\n  this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length;\n\n  this.repulsionRange = this.calcRepulsionRange();\n};\n\nFDLayout.prototype.calcSpringForces = function () {\n  var lEdges = this.getAllEdges();\n  var edge;\n\n  for (var i = 0; i < lEdges.length; i++) {\n    edge = lEdges[i];\n\n    this.calcSpringForce(edge, edge.idealLength);\n  }\n};\n\nFDLayout.prototype.calcRepulsionForces = function () {\n  var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n  var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var i, j;\n  var nodeA, nodeB;\n  var lNodes = this.getAllNodes();\n  var processedNodeSet;\n\n  if (this.useFRGridVariant) {\n    if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) {\n      this.updateGrid();\n    }\n\n    processedNodeSet = new Set();\n\n    // calculate repulsion forces between each nodes and its surrounding\n    for (i = 0; i < lNodes.length; i++) {\n      nodeA = lNodes[i];\n      this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate);\n      processedNodeSet.add(nodeA);\n    }\n  } else {\n    for (i = 0; i < lNodes.length; i++) {\n      nodeA = lNodes[i];\n\n      for (j = i + 1; j < lNodes.length; j++) {\n        nodeB = lNodes[j];\n\n        // If both nodes are not members of the same graph, skip.\n        if (nodeA.getOwner() != nodeB.getOwner()) {\n          continue;\n        }\n\n        this.calcRepulsionForce(nodeA, nodeB);\n      }\n    }\n  }\n};\n\nFDLayout.prototype.calcGravitationalForces = function () {\n  var node;\n  var lNodes = this.getAllNodesToApplyGravitation();\n\n  for (var i = 0; i < lNodes.length; i++) {\n    node = lNodes[i];\n    this.calcGravitationalForce(node);\n  }\n};\n\nFDLayout.prototype.moveNodes = function () {\n  var lNodes = this.getAllNodes();\n  var node;\n\n  for (var i = 0; i < lNodes.length; i++) {\n    node = lNodes[i];\n    node.move();\n  }\n};\n\nFDLayout.prototype.calcSpringForce = function (edge, idealLength) {\n  var sourceNode = edge.getSource();\n  var targetNode = edge.getTarget();\n\n  var length;\n  var springForce;\n  var springForceX;\n  var springForceY;\n\n  // Update edge length\n  if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) {\n    edge.updateLengthSimple();\n  } else {\n    edge.updateLength();\n\n    if (edge.isOverlapingSourceAndTarget) {\n      return;\n    }\n  }\n\n  length = edge.getLength();\n\n  if (length == 0) return;\n\n  // Calculate spring forces\n  springForce = this.springConstant * (length - idealLength);\n\n  // Project force onto x and y axes\n  springForceX = springForce * (edge.lengthX / length);\n  springForceY = springForce * (edge.lengthY / length);\n\n  // Apply forces on the end nodes\n  sourceNode.springForceX += springForceX;\n  sourceNode.springForceY += springForceY;\n  targetNode.springForceX -= springForceX;\n  targetNode.springForceY -= springForceY;\n};\n\nFDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) {\n  var rectA = nodeA.getRect();\n  var rectB = nodeB.getRect();\n  var overlapAmount = new Array(2);\n  var clipPoints = new Array(4);\n  var distanceX;\n  var distanceY;\n  var distanceSquared;\n  var distance;\n  var repulsionForce;\n  var repulsionForceX;\n  var repulsionForceY;\n\n  if (rectA.intersects(rectB)) // two nodes overlap\n    {\n      // calculate separation amount in x and y directions\n      IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0);\n\n      repulsionForceX = 2 * overlapAmount[0];\n      repulsionForceY = 2 * overlapAmount[1];\n\n      var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren);\n\n      // Apply forces on the two nodes\n      nodeA.repulsionForceX -= childrenConstant * repulsionForceX;\n      nodeA.repulsionForceY -= childrenConstant * repulsionForceY;\n      nodeB.repulsionForceX += childrenConstant * repulsionForceX;\n      nodeB.repulsionForceY += childrenConstant * repulsionForceY;\n    } else // no overlap\n    {\n      // calculate distance\n\n      if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers\n        {\n          distanceX = rectB.getCenterX() - rectA.getCenterX();\n          distanceY = rectB.getCenterY() - rectA.getCenterY();\n        } else // use clipping points\n        {\n          IGeometry.getIntersection(rectA, rectB, clipPoints);\n\n          distanceX = clipPoints[2] - clipPoints[0];\n          distanceY = clipPoints[3] - clipPoints[1];\n        }\n\n      // No repulsion range. FR grid variant should take care of this.\n      if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) {\n        distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST;\n      }\n\n      if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) {\n        distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST;\n      }\n\n      distanceSquared = distanceX * distanceX + distanceY * distanceY;\n      distance = Math.sqrt(distanceSquared);\n\n      repulsionForce = this.repulsionConstant * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared;\n\n      // Project force onto x and y axes\n      repulsionForceX = repulsionForce * distanceX / distance;\n      repulsionForceY = repulsionForce * distanceY / distance;\n\n      // Apply forces on the two nodes    \n      nodeA.repulsionForceX -= repulsionForceX;\n      nodeA.repulsionForceY -= repulsionForceY;\n      nodeB.repulsionForceX += repulsionForceX;\n      nodeB.repulsionForceY += repulsionForceY;\n    }\n};\n\nFDLayout.prototype.calcGravitationalForce = function (node) {\n  var ownerGraph;\n  var ownerCenterX;\n  var ownerCenterY;\n  var distanceX;\n  var distanceY;\n  var absDistanceX;\n  var absDistanceY;\n  var estimatedSize;\n  ownerGraph = node.getOwner();\n\n  ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2;\n  ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2;\n  distanceX = node.getCenterX() - ownerCenterX;\n  distanceY = node.getCenterY() - ownerCenterY;\n  absDistanceX = Math.abs(distanceX) + node.getWidth() / 2;\n  absDistanceY = Math.abs(distanceY) + node.getHeight() / 2;\n\n  if (node.getOwner() == this.graphManager.getRoot()) // in the root graph\n    {\n      estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor;\n\n      if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n        node.gravitationForceX = -this.gravityConstant * distanceX;\n        node.gravitationForceY = -this.gravityConstant * distanceY;\n      }\n    } else // inside a compound\n    {\n      estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor;\n\n      if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n        node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant;\n        node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant;\n      }\n    }\n};\n\nFDLayout.prototype.isConverged = function () {\n  var converged;\n  var oscilating = false;\n\n  if (this.totalIterations > this.maxIterations / 3) {\n    oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2;\n  }\n\n  converged = this.totalDisplacement < this.totalDisplacementThreshold;\n\n  this.oldTotalDisplacement = this.totalDisplacement;\n\n  return converged || oscilating;\n};\n\nFDLayout.prototype.animate = function () {\n  if (this.animationDuringLayout && !this.isSubLayout) {\n    if (this.notAnimatedIterations == this.animationPeriod) {\n      this.update();\n      this.notAnimatedIterations = 0;\n    } else {\n      this.notAnimatedIterations++;\n    }\n  }\n};\n\n//This method calculates the number of children (weight) for all nodes\nFDLayout.prototype.calcNoOfChildrenForAllNodes = function () {\n  var node;\n  var allNodes = this.graphManager.getAllNodes();\n\n  for (var i = 0; i < allNodes.length; i++) {\n    node = allNodes[i];\n    node.noOfChildren = node.getNoOfChildren();\n  }\n};\n\n// -----------------------------------------------------------------------------\n// Section: FR-Grid Variant Repulsion Force Calculation\n// -----------------------------------------------------------------------------\n\nFDLayout.prototype.calcGrid = function (graph) {\n\n  var sizeX = 0;\n  var sizeY = 0;\n\n  sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange));\n  sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange));\n\n  var grid = new Array(sizeX);\n\n  for (var i = 0; i < sizeX; i++) {\n    grid[i] = new Array(sizeY);\n  }\n\n  for (var i = 0; i < sizeX; i++) {\n    for (var j = 0; j < sizeY; j++) {\n      grid[i][j] = new Array();\n    }\n  }\n\n  return grid;\n};\n\nFDLayout.prototype.addNodeToGrid = function (v, left, top) {\n\n  var startX = 0;\n  var finishX = 0;\n  var startY = 0;\n  var finishY = 0;\n\n  startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange));\n  finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange));\n  startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange));\n  finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange));\n\n  for (var i = startX; i <= finishX; i++) {\n    for (var j = startY; j <= finishY; j++) {\n      this.grid[i][j].push(v);\n      v.setGridCoordinates(startX, finishX, startY, finishY);\n    }\n  }\n};\n\nFDLayout.prototype.updateGrid = function () {\n  var i;\n  var nodeA;\n  var lNodes = this.getAllNodes();\n\n  this.grid = this.calcGrid(this.graphManager.getRoot());\n\n  // put all nodes to proper grid cells\n  for (i = 0; i < lNodes.length; i++) {\n    nodeA = lNodes[i];\n    this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop());\n  }\n};\n\nFDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) {\n\n  if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) {\n    var surrounding = new Set();\n    nodeA.surrounding = new Array();\n    var nodeB;\n    var grid = this.grid;\n\n    for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) {\n      for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) {\n        if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) {\n          for (var k = 0; k < grid[i][j].length; k++) {\n            nodeB = grid[i][j][k];\n\n            // If both nodes are not members of the same graph, \n            // or both nodes are the same, skip.\n            if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) {\n              continue;\n            }\n\n            // check if the repulsion force between\n            // nodeA and nodeB has already been calculated\n            if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) {\n              var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2);\n              var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2);\n\n              // if the distance between nodeA and nodeB \n              // is less then calculation range\n              if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) {\n                //then add nodeB to surrounding of nodeA\n                surrounding.add(nodeB);\n              }\n            }\n          }\n        }\n      }\n    }\n\n    nodeA.surrounding = [].concat(_toConsumableArray(surrounding));\n  }\n  for (i = 0; i < nodeA.surrounding.length; i++) {\n    this.calcRepulsionForce(nodeA, nodeA.surrounding[i]);\n  }\n};\n\nFDLayout.prototype.calcRepulsionRange = function () {\n  return 0.0;\n};\n\nmodule.exports = FDLayout;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LEdge = __webpack_require__(1);\nvar FDLayoutConstants = __webpack_require__(7);\n\nfunction FDLayoutEdge(source, target, vEdge) {\n  LEdge.call(this, source, target, vEdge);\n  this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n}\n\nFDLayoutEdge.prototype = Object.create(LEdge.prototype);\n\nfor (var prop in LEdge) {\n  FDLayoutEdge[prop] = LEdge[prop];\n}\n\nmodule.exports = FDLayoutEdge;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LNode = __webpack_require__(3);\n\nfunction FDLayoutNode(gm, loc, size, vNode) {\n  // alternative constructor is handled inside LNode\n  LNode.call(this, gm, loc, size, vNode);\n  //Spring, repulsion and gravitational forces acting on this node\n  this.springForceX = 0;\n  this.springForceY = 0;\n  this.repulsionForceX = 0;\n  this.repulsionForceY = 0;\n  this.gravitationForceX = 0;\n  this.gravitationForceY = 0;\n  //Amount by which this node is to be moved in this iteration\n  this.displacementX = 0;\n  this.displacementY = 0;\n\n  //Start and finish grid coordinates that this node is fallen into\n  this.startX = 0;\n  this.finishX = 0;\n  this.startY = 0;\n  this.finishY = 0;\n\n  //Geometric neighbors of this node\n  this.surrounding = [];\n}\n\nFDLayoutNode.prototype = Object.create(LNode.prototype);\n\nfor (var prop in LNode) {\n  FDLayoutNode[prop] = LNode[prop];\n}\n\nFDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) {\n  this.startX = _startX;\n  this.finishX = _finishX;\n  this.startY = _startY;\n  this.finishY = _finishY;\n};\n\nmodule.exports = FDLayoutNode;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction DimensionD(width, height) {\n  this.width = 0;\n  this.height = 0;\n  if (width !== null && height !== null) {\n    this.height = height;\n    this.width = width;\n  }\n}\n\nDimensionD.prototype.getWidth = function () {\n  return this.width;\n};\n\nDimensionD.prototype.setWidth = function (width) {\n  this.width = width;\n};\n\nDimensionD.prototype.getHeight = function () {\n  return this.height;\n};\n\nDimensionD.prototype.setHeight = function (height) {\n  this.height = height;\n};\n\nmodule.exports = DimensionD;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashMap() {\n  this.map = {};\n  this.keys = [];\n}\n\nHashMap.prototype.put = function (key, value) {\n  var theId = UniqueIDGeneretor.createID(key);\n  if (!this.contains(theId)) {\n    this.map[theId] = value;\n    this.keys.push(key);\n  }\n};\n\nHashMap.prototype.contains = function (key) {\n  var theId = UniqueIDGeneretor.createID(key);\n  return this.map[key] != null;\n};\n\nHashMap.prototype.get = function (key) {\n  var theId = UniqueIDGeneretor.createID(key);\n  return this.map[theId];\n};\n\nHashMap.prototype.keySet = function () {\n  return this.keys;\n};\n\nmodule.exports = HashMap;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashSet() {\n  this.set = {};\n}\n;\n\nHashSet.prototype.add = function (obj) {\n  var theId = UniqueIDGeneretor.createID(obj);\n  if (!this.contains(theId)) this.set[theId] = obj;\n};\n\nHashSet.prototype.remove = function (obj) {\n  delete this.set[UniqueIDGeneretor.createID(obj)];\n};\n\nHashSet.prototype.clear = function () {\n  this.set = {};\n};\n\nHashSet.prototype.contains = function (obj) {\n  return this.set[UniqueIDGeneretor.createID(obj)] == obj;\n};\n\nHashSet.prototype.isEmpty = function () {\n  return this.size() === 0;\n};\n\nHashSet.prototype.size = function () {\n  return Object.keys(this.set).length;\n};\n\n//concats this.set to the given list\nHashSet.prototype.addAllTo = function (list) {\n  var keys = Object.keys(this.set);\n  var length = keys.length;\n  for (var i = 0; i < length; i++) {\n    list.push(this.set[keys[i]]);\n  }\n};\n\nHashSet.prototype.size = function () {\n  return Object.keys(this.set).length;\n};\n\nHashSet.prototype.addAll = function (list) {\n  var s = list.length;\n  for (var i = 0; i < s; i++) {\n    var v = list[i];\n    this.add(v);\n  }\n};\n\nmodule.exports = HashSet;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * A classic Quicksort algorithm with Hoare's partition\n * - Works also on LinkedList objects\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar LinkedList = __webpack_require__(11);\n\nvar Quicksort = function () {\n    function Quicksort(A, compareFunction) {\n        _classCallCheck(this, Quicksort);\n\n        if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction;\n\n        var length = void 0;\n        if (A instanceof LinkedList) length = A.size();else length = A.length;\n\n        this._quicksort(A, 0, length - 1);\n    }\n\n    _createClass(Quicksort, [{\n        key: '_quicksort',\n        value: function _quicksort(A, p, r) {\n            if (p < r) {\n                var q = this._partition(A, p, r);\n                this._quicksort(A, p, q);\n                this._quicksort(A, q + 1, r);\n            }\n        }\n    }, {\n        key: '_partition',\n        value: function _partition(A, p, r) {\n            var x = this._get(A, p);\n            var i = p;\n            var j = r;\n            while (true) {\n                while (this.compareFunction(x, this._get(A, j))) {\n                    j--;\n                }while (this.compareFunction(this._get(A, i), x)) {\n                    i++;\n                }if (i < j) {\n                    this._swap(A, i, j);\n                    i++;\n                    j--;\n                } else return j;\n            }\n        }\n    }, {\n        key: '_get',\n        value: function _get(object, index) {\n            if (object instanceof LinkedList) return object.get_object_at(index);else return object[index];\n        }\n    }, {\n        key: '_set',\n        value: function _set(object, index, value) {\n            if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value;\n        }\n    }, {\n        key: '_swap',\n        value: function _swap(A, i, j) {\n            var temp = this._get(A, i);\n            this._set(A, i, this._get(A, j));\n            this._set(A, j, temp);\n        }\n    }, {\n        key: '_defaultCompareFunction',\n        value: function _defaultCompareFunction(a, b) {\n            return b > a;\n        }\n    }]);\n\n    return Quicksort;\n}();\n\nmodule.exports = Quicksort;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n *   Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string\n *   sequences by S.B.Needleman and C.D.Wunsch (1970).\n *\n *   Aside from the inputs, you can assign the scores for,\n *   - Match: The two characters at the current index are same.\n *   - Mismatch: The two characters at the current index are different.\n *   - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string.\n */\n\nvar NeedlemanWunsch = function () {\n    function NeedlemanWunsch(sequence1, sequence2) {\n        var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1;\n        var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n\n        _classCallCheck(this, NeedlemanWunsch);\n\n        this.sequence1 = sequence1;\n        this.sequence2 = sequence2;\n        this.match_score = match_score;\n        this.mismatch_penalty = mismatch_penalty;\n        this.gap_penalty = gap_penalty;\n\n        // Just the remove redundancy\n        this.iMax = sequence1.length + 1;\n        this.jMax = sequence2.length + 1;\n\n        // Grid matrix of scores\n        this.grid = new Array(this.iMax);\n        for (var i = 0; i < this.iMax; i++) {\n            this.grid[i] = new Array(this.jMax);\n\n            for (var j = 0; j < this.jMax; j++) {\n                this.grid[i][j] = 0;\n            }\n        }\n\n        // Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions)\n        this.tracebackGrid = new Array(this.iMax);\n        for (var _i = 0; _i < this.iMax; _i++) {\n            this.tracebackGrid[_i] = new Array(this.jMax);\n\n            for (var _j = 0; _j < this.jMax; _j++) {\n                this.tracebackGrid[_i][_j] = [null, null, null];\n            }\n        }\n\n        // The aligned sequences (return multiple possibilities)\n        this.alignments = [];\n\n        // Final alignment score\n        this.score = -1;\n\n        // Calculate scores and tracebacks\n        this.computeGrids();\n    }\n\n    _createClass(NeedlemanWunsch, [{\n        key: \"getScore\",\n        value: function getScore() {\n            return this.score;\n        }\n    }, {\n        key: \"getAlignments\",\n        value: function getAlignments() {\n            return this.alignments;\n        }\n\n        // Main dynamic programming procedure\n\n    }, {\n        key: \"computeGrids\",\n        value: function computeGrids() {\n            // Fill in the first row\n            for (var j = 1; j < this.jMax; j++) {\n                this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty;\n                this.tracebackGrid[0][j] = [false, false, true];\n            }\n\n            // Fill in the first column\n            for (var i = 1; i < this.iMax; i++) {\n                this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty;\n                this.tracebackGrid[i][0] = [false, true, false];\n            }\n\n            // Fill the rest of the grid\n            for (var _i2 = 1; _i2 < this.iMax; _i2++) {\n                for (var _j2 = 1; _j2 < this.jMax; _j2++) {\n                    // Find the max score(s) among [`Diag`, `Up`, `Left`]\n                    var diag = void 0;\n                    if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty;\n\n                    var up = this.grid[_i2 - 1][_j2] + this.gap_penalty;\n                    var left = this.grid[_i2][_j2 - 1] + this.gap_penalty;\n\n                    // If there exists multiple max values, capture them for multiple paths\n                    var maxOf = [diag, up, left];\n                    var indices = this.arrayAllMaxIndexes(maxOf);\n\n                    // Update Grids\n                    this.grid[_i2][_j2] = maxOf[indices[0]];\n                    this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)];\n                }\n            }\n\n            // Update alignment score\n            this.score = this.grid[this.iMax - 1][this.jMax - 1];\n        }\n\n        // Gets all possible valid sequence combinations\n\n    }, {\n        key: \"alignmentTraceback\",\n        value: function alignmentTraceback() {\n            var inProcessAlignments = [];\n\n            inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length],\n                seq1: \"\",\n                seq2: \"\"\n            });\n\n            while (inProcessAlignments[0]) {\n                var current = inProcessAlignments[0];\n                var directions = this.tracebackGrid[current.pos[0]][current.pos[1]];\n\n                if (directions[0]) {\n                    inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1],\n                        seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n                        seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n                    });\n                }\n                if (directions[1]) {\n                    inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]],\n                        seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n                        seq2: '-' + current.seq2\n                    });\n                }\n                if (directions[2]) {\n                    inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1],\n                        seq1: '-' + current.seq1,\n                        seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n                    });\n                }\n\n                if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1,\n                    sequence2: current.seq2\n                });\n\n                inProcessAlignments.shift();\n            }\n\n            return this.alignments;\n        }\n\n        // Helper Functions\n\n    }, {\n        key: \"getAllIndexes\",\n        value: function getAllIndexes(arr, val) {\n            var indexes = [],\n                i = -1;\n            while ((i = arr.indexOf(val, i + 1)) !== -1) {\n                indexes.push(i);\n            }\n            return indexes;\n        }\n    }, {\n        key: \"arrayAllMaxIndexes\",\n        value: function arrayAllMaxIndexes(array) {\n            return this.getAllIndexes(array, Math.max.apply(null, array));\n        }\n    }]);\n\n    return NeedlemanWunsch;\n}();\n\nmodule.exports = NeedlemanWunsch;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar layoutBase = function layoutBase() {\n  return;\n};\n\nlayoutBase.FDLayout = __webpack_require__(18);\nlayoutBase.FDLayoutConstants = __webpack_require__(7);\nlayoutBase.FDLayoutEdge = __webpack_require__(19);\nlayoutBase.FDLayoutNode = __webpack_require__(20);\nlayoutBase.DimensionD = __webpack_require__(21);\nlayoutBase.HashMap = __webpack_require__(22);\nlayoutBase.HashSet = __webpack_require__(23);\nlayoutBase.IGeometry = __webpack_require__(8);\nlayoutBase.IMath = __webpack_require__(9);\nlayoutBase.Integer = __webpack_require__(10);\nlayoutBase.Point = __webpack_require__(12);\nlayoutBase.PointD = __webpack_require__(4);\nlayoutBase.RandomSeed = __webpack_require__(16);\nlayoutBase.RectangleD = __webpack_require__(13);\nlayoutBase.Transform = __webpack_require__(17);\nlayoutBase.UniqueIDGeneretor = __webpack_require__(14);\nlayoutBase.Quicksort = __webpack_require__(24);\nlayoutBase.LinkedList = __webpack_require__(11);\nlayoutBase.LGraphObject = __webpack_require__(2);\nlayoutBase.LGraph = __webpack_require__(5);\nlayoutBase.LEdge = __webpack_require__(1);\nlayoutBase.LGraphManager = __webpack_require__(6);\nlayoutBase.LNode = __webpack_require__(3);\nlayoutBase.Layout = __webpack_require__(15);\nlayoutBase.LayoutConstants = __webpack_require__(0);\nlayoutBase.NeedlemanWunsch = __webpack_require__(25);\n\nmodule.exports = layoutBase;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Emitter() {\n  this.listeners = [];\n}\n\nvar p = Emitter.prototype;\n\np.addListener = function (event, callback) {\n  this.listeners.push({\n    event: event,\n    callback: callback\n  });\n};\n\np.removeListener = function (event, callback) {\n  for (var i = this.listeners.length; i >= 0; i--) {\n    var l = this.listeners[i];\n\n    if (l.event === event && l.callback === callback) {\n      this.listeners.splice(i, 1);\n    }\n  }\n};\n\np.emit = function (event, data) {\n  for (var i = 0; i < this.listeners.length; i++) {\n    var l = this.listeners[i];\n\n    if (event === l.event) {\n      l.callback(data);\n    }\n  }\n};\n\nmodule.exports = Emitter;\n\n/***/ })\n/******/ ]);\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"layout-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"layout-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"coseBase\"] = factory(require(\"layout-base\"));\n\telse\n\t\troot[\"coseBase\"] = factory(root[\"layoutBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutConstants = __webpack_require__(0).FDLayoutConstants;\n\nfunction CoSEConstants() {}\n\n//CoSEConstants inherits static props in FDLayoutConstants\nfor (var prop in FDLayoutConstants) {\n  CoSEConstants[prop] = FDLayoutConstants[prop];\n}\n\nCoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false;\nCoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\nCoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60;\nCoSEConstants.TILE = true;\nCoSEConstants.TILING_PADDING_VERTICAL = 10;\nCoSEConstants.TILING_PADDING_HORIZONTAL = 10;\nCoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false; // make this true when cose is used incrementally as a part of other non-incremental layout\n\nmodule.exports = CoSEConstants;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutEdge = __webpack_require__(0).FDLayoutEdge;\n\nfunction CoSEEdge(source, target, vEdge) {\n  FDLayoutEdge.call(this, source, target, vEdge);\n}\n\nCoSEEdge.prototype = Object.create(FDLayoutEdge.prototype);\nfor (var prop in FDLayoutEdge) {\n  CoSEEdge[prop] = FDLayoutEdge[prop];\n}\n\nmodule.exports = CoSEEdge;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraph = __webpack_require__(0).LGraph;\n\nfunction CoSEGraph(parent, graphMgr, vGraph) {\n  LGraph.call(this, parent, graphMgr, vGraph);\n}\n\nCoSEGraph.prototype = Object.create(LGraph.prototype);\nfor (var prop in LGraph) {\n  CoSEGraph[prop] = LGraph[prop];\n}\n\nmodule.exports = CoSEGraph;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphManager = __webpack_require__(0).LGraphManager;\n\nfunction CoSEGraphManager(layout) {\n  LGraphManager.call(this, layout);\n}\n\nCoSEGraphManager.prototype = Object.create(LGraphManager.prototype);\nfor (var prop in LGraphManager) {\n  CoSEGraphManager[prop] = LGraphManager[prop];\n}\n\nmodule.exports = CoSEGraphManager;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutNode = __webpack_require__(0).FDLayoutNode;\nvar IMath = __webpack_require__(0).IMath;\n\nfunction CoSENode(gm, loc, size, vNode) {\n  FDLayoutNode.call(this, gm, loc, size, vNode);\n}\n\nCoSENode.prototype = Object.create(FDLayoutNode.prototype);\nfor (var prop in FDLayoutNode) {\n  CoSENode[prop] = FDLayoutNode[prop];\n}\n\nCoSENode.prototype.move = function () {\n  var layout = this.graphManager.getLayout();\n  this.displacementX = layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren;\n  this.displacementY = layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren;\n\n  if (Math.abs(this.displacementX) > layout.coolingFactor * layout.maxNodeDisplacement) {\n    this.displacementX = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementX);\n  }\n\n  if (Math.abs(this.displacementY) > layout.coolingFactor * layout.maxNodeDisplacement) {\n    this.displacementY = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementY);\n  }\n\n  // a simple node, just move it\n  if (this.child == null) {\n    this.moveBy(this.displacementX, this.displacementY);\n  }\n  // an empty compound node, again just move it\n  else if (this.child.getNodes().length == 0) {\n      this.moveBy(this.displacementX, this.displacementY);\n    }\n    // non-empty compound node, propogate movement to children as well\n    else {\n        this.propogateDisplacementToChildren(this.displacementX, this.displacementY);\n      }\n\n  layout.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY);\n\n  this.springForceX = 0;\n  this.springForceY = 0;\n  this.repulsionForceX = 0;\n  this.repulsionForceY = 0;\n  this.gravitationForceX = 0;\n  this.gravitationForceY = 0;\n  this.displacementX = 0;\n  this.displacementY = 0;\n};\n\nCoSENode.prototype.propogateDisplacementToChildren = function (dX, dY) {\n  var nodes = this.getChild().getNodes();\n  var node;\n  for (var i = 0; i < nodes.length; i++) {\n    node = nodes[i];\n    if (node.getChild() == null) {\n      node.moveBy(dX, dY);\n      node.displacementX += dX;\n      node.displacementY += dY;\n    } else {\n      node.propogateDisplacementToChildren(dX, dY);\n    }\n  }\n};\n\nCoSENode.prototype.setPred1 = function (pred1) {\n  this.pred1 = pred1;\n};\n\nCoSENode.prototype.getPred1 = function () {\n  return pred1;\n};\n\nCoSENode.prototype.getPred2 = function () {\n  return pred2;\n};\n\nCoSENode.prototype.setNext = function (next) {\n  this.next = next;\n};\n\nCoSENode.prototype.getNext = function () {\n  return next;\n};\n\nCoSENode.prototype.setProcessed = function (processed) {\n  this.processed = processed;\n};\n\nCoSENode.prototype.isProcessed = function () {\n  return processed;\n};\n\nmodule.exports = CoSENode;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayout = __webpack_require__(0).FDLayout;\nvar CoSEGraphManager = __webpack_require__(4);\nvar CoSEGraph = __webpack_require__(3);\nvar CoSENode = __webpack_require__(5);\nvar CoSEEdge = __webpack_require__(2);\nvar CoSEConstants = __webpack_require__(1);\nvar FDLayoutConstants = __webpack_require__(0).FDLayoutConstants;\nvar LayoutConstants = __webpack_require__(0).LayoutConstants;\nvar Point = __webpack_require__(0).Point;\nvar PointD = __webpack_require__(0).PointD;\nvar Layout = __webpack_require__(0).Layout;\nvar Integer = __webpack_require__(0).Integer;\nvar IGeometry = __webpack_require__(0).IGeometry;\nvar LGraph = __webpack_require__(0).LGraph;\nvar Transform = __webpack_require__(0).Transform;\n\nfunction CoSELayout() {\n  FDLayout.call(this);\n\n  this.toBeTiled = {}; // Memorize if a node is to be tiled or is tiled\n}\n\nCoSELayout.prototype = Object.create(FDLayout.prototype);\n\nfor (var prop in FDLayout) {\n  CoSELayout[prop] = FDLayout[prop];\n}\n\nCoSELayout.prototype.newGraphManager = function () {\n  var gm = new CoSEGraphManager(this);\n  this.graphManager = gm;\n  return gm;\n};\n\nCoSELayout.prototype.newGraph = function (vGraph) {\n  return new CoSEGraph(null, this.graphManager, vGraph);\n};\n\nCoSELayout.prototype.newNode = function (vNode) {\n  return new CoSENode(this.graphManager, vNode);\n};\n\nCoSELayout.prototype.newEdge = function (vEdge) {\n  return new CoSEEdge(null, null, vEdge);\n};\n\nCoSELayout.prototype.initParameters = function () {\n  FDLayout.prototype.initParameters.call(this, arguments);\n  if (!this.isSubLayout) {\n    if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) {\n      this.idealEdgeLength = 10;\n    } else {\n      this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH;\n    }\n\n    this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n    this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n    this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n    this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n    this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n    this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n    this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n\n    // variables for tree reduction support\n    this.prunedNodesAll = [];\n    this.growTreeIterations = 0;\n    this.afterGrowthIterations = 0;\n    this.isTreeGrowing = false;\n    this.isGrowthFinished = false;\n\n    // variables for cooling\n    this.coolingCycle = 0;\n    this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD;\n    this.finalTemperature = FDLayoutConstants.CONVERGENCE_CHECK_PERIOD / this.maxIterations;\n    this.coolingAdjuster = 1;\n  }\n};\n\nCoSELayout.prototype.layout = function () {\n  var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n  if (createBendsAsNeeded) {\n    this.createBendpoints();\n    this.graphManager.resetAllEdges();\n  }\n\n  this.level = 0;\n  return this.classicLayout();\n};\n\nCoSELayout.prototype.classicLayout = function () {\n  this.nodesWithGravity = this.calculateNodesToApplyGravitationTo();\n  this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity);\n  this.calcNoOfChildrenForAllNodes();\n  this.graphManager.calcLowestCommonAncestors();\n  this.graphManager.calcInclusionTreeDepths();\n  this.graphManager.getRoot().calcEstimatedSize();\n  this.calcIdealEdgeLengths();\n\n  if (!this.incremental) {\n    var forest = this.getFlatForest();\n\n    // The graph associated with this layout is flat and a forest\n    if (forest.length > 0) {\n      this.positionNodesRadially(forest);\n    }\n    // The graph associated with this layout is not flat or a forest\n    else {\n        // Reduce the trees when incremental mode is not enabled and graph is not a forest \n        this.reduceTrees();\n        // Update nodes that gravity will be applied\n        this.graphManager.resetAllNodesToApplyGravitation();\n        var allNodes = new Set(this.getAllNodes());\n        var intersection = this.nodesWithGravity.filter(function (x) {\n          return allNodes.has(x);\n        });\n        this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n        this.positionNodesRandomly();\n      }\n  } else {\n    if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) {\n      // Reduce the trees in incremental mode if only this constant is set to true \n      this.reduceTrees();\n      // Update nodes that gravity will be applied\n      this.graphManager.resetAllNodesToApplyGravitation();\n      var allNodes = new Set(this.getAllNodes());\n      var intersection = this.nodesWithGravity.filter(function (x) {\n        return allNodes.has(x);\n      });\n      this.graphManager.setAllNodesToApplyGravitation(intersection);\n    }\n  }\n\n  this.initSpringEmbedder();\n  this.runSpringEmbedder();\n\n  return true;\n};\n\nCoSELayout.prototype.tick = function () {\n  this.totalIterations++;\n\n  if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) {\n    if (this.prunedNodesAll.length > 0) {\n      this.isTreeGrowing = true;\n    } else {\n      return true;\n    }\n  }\n\n  if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {\n    if (this.isConverged()) {\n      if (this.prunedNodesAll.length > 0) {\n        this.isTreeGrowing = true;\n      } else {\n        return true;\n      }\n    }\n\n    this.coolingCycle++;\n\n    if (this.layoutQuality == 0) {\n      // quality - \"draft\"\n      this.coolingAdjuster = this.coolingCycle;\n    } else if (this.layoutQuality == 1) {\n      // quality - \"default\"\n      this.coolingAdjuster = this.coolingCycle / 3;\n    }\n\n    // cooling schedule is based on http://www.btluke.com/simanf1.html -> cooling schedule 3\n    this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature);\n    this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor));\n  }\n  // Operations while tree is growing again \n  if (this.isTreeGrowing) {\n    if (this.growTreeIterations % 10 == 0) {\n      if (this.prunedNodesAll.length > 0) {\n        this.graphManager.updateBounds();\n        this.updateGrid();\n        this.growTree(this.prunedNodesAll);\n        // Update nodes that gravity will be applied\n        this.graphManager.resetAllNodesToApplyGravitation();\n        var allNodes = new Set(this.getAllNodes());\n        var intersection = this.nodesWithGravity.filter(function (x) {\n          return allNodes.has(x);\n        });\n        this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n        this.graphManager.updateBounds();\n        this.updateGrid();\n        this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n      } else {\n        this.isTreeGrowing = false;\n        this.isGrowthFinished = true;\n      }\n    }\n    this.growTreeIterations++;\n  }\n  // Operations after growth is finished\n  if (this.isGrowthFinished) {\n    if (this.isConverged()) {\n      return true;\n    }\n    if (this.afterGrowthIterations % 10 == 0) {\n      this.graphManager.updateBounds();\n      this.updateGrid();\n    }\n    this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100);\n    this.afterGrowthIterations++;\n  }\n\n  var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished;\n  var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished;\n\n  this.totalDisplacement = 0;\n  this.graphManager.updateBounds();\n  this.calcSpringForces();\n  this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate);\n  this.calcGravitationalForces();\n  this.moveNodes();\n  this.animate();\n\n  return false; // Layout is not ended yet return false\n};\n\nCoSELayout.prototype.getPositionsData = function () {\n  var allNodes = this.graphManager.getAllNodes();\n  var pData = {};\n  for (var i = 0; i < allNodes.length; i++) {\n    var rect = allNodes[i].rect;\n    var id = allNodes[i].id;\n    pData[id] = {\n      id: id,\n      x: rect.getCenterX(),\n      y: rect.getCenterY(),\n      w: rect.width,\n      h: rect.height\n    };\n  }\n\n  return pData;\n};\n\nCoSELayout.prototype.runSpringEmbedder = function () {\n  this.initialAnimationPeriod = 25;\n  this.animationPeriod = this.initialAnimationPeriod;\n  var layoutEnded = false;\n\n  // If aminate option is 'during' signal that layout is supposed to start iterating\n  if (FDLayoutConstants.ANIMATE === 'during') {\n    this.emit('layoutstarted');\n  } else {\n    // If aminate option is 'during' tick() function will be called on index.js\n    while (!layoutEnded) {\n      layoutEnded = this.tick();\n    }\n\n    this.graphManager.updateBounds();\n  }\n};\n\nCoSELayout.prototype.calculateNodesToApplyGravitationTo = function () {\n  var nodeList = [];\n  var graph;\n\n  var graphs = this.graphManager.getGraphs();\n  var size = graphs.length;\n  var i;\n  for (i = 0; i < size; i++) {\n    graph = graphs[i];\n\n    graph.updateConnected();\n\n    if (!graph.isConnected) {\n      nodeList = nodeList.concat(graph.getNodes());\n    }\n  }\n\n  return nodeList;\n};\n\nCoSELayout.prototype.createBendpoints = function () {\n  var edges = [];\n  edges = edges.concat(this.graphManager.getAllEdges());\n  var visited = new Set();\n  var i;\n  for (i = 0; i < edges.length; i++) {\n    var edge = edges[i];\n\n    if (!visited.has(edge)) {\n      var source = edge.getSource();\n      var target = edge.getTarget();\n\n      if (source == target) {\n        edge.getBendpoints().push(new PointD());\n        edge.getBendpoints().push(new PointD());\n        this.createDummyNodesForBendpoints(edge);\n        visited.add(edge);\n      } else {\n        var edgeList = [];\n\n        edgeList = edgeList.concat(source.getEdgeListToNode(target));\n        edgeList = edgeList.concat(target.getEdgeListToNode(source));\n\n        if (!visited.has(edgeList[0])) {\n          if (edgeList.length > 1) {\n            var k;\n            for (k = 0; k < edgeList.length; k++) {\n              var multiEdge = edgeList[k];\n              multiEdge.getBendpoints().push(new PointD());\n              this.createDummyNodesForBendpoints(multiEdge);\n            }\n          }\n          edgeList.forEach(function (edge) {\n            visited.add(edge);\n          });\n        }\n      }\n    }\n\n    if (visited.size == edges.length) {\n      break;\n    }\n  }\n};\n\nCoSELayout.prototype.positionNodesRadially = function (forest) {\n  // We tile the trees to a grid row by row; first tree starts at (0,0)\n  var currentStartingPoint = new Point(0, 0);\n  var numberOfColumns = Math.ceil(Math.sqrt(forest.length));\n  var height = 0;\n  var currentY = 0;\n  var currentX = 0;\n  var point = new PointD(0, 0);\n\n  for (var i = 0; i < forest.length; i++) {\n    if (i % numberOfColumns == 0) {\n      // Start of a new row, make the x coordinate 0, increment the\n      // y coordinate with the max height of the previous row\n      currentX = 0;\n      currentY = height;\n\n      if (i != 0) {\n        currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION;\n      }\n\n      height = 0;\n    }\n\n    var tree = forest[i];\n\n    // Find the center of the tree\n    var centerNode = Layout.findCenterOfTree(tree);\n\n    // Set the staring point of the next tree\n    currentStartingPoint.x = currentX;\n    currentStartingPoint.y = currentY;\n\n    // Do a radial layout starting with the center\n    point = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint);\n\n    if (point.y > height) {\n      height = Math.floor(point.y);\n    }\n\n    currentX = Math.floor(point.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION);\n  }\n\n  this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point.x / 2, LayoutConstants.WORLD_CENTER_Y - point.y / 2));\n};\n\nCoSELayout.radialLayout = function (tree, centerNode, startingPoint) {\n  var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION);\n  CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep);\n  var bounds = LGraph.calculateBounds(tree);\n\n  var transform = new Transform();\n  transform.setDeviceOrgX(bounds.getMinX());\n  transform.setDeviceOrgY(bounds.getMinY());\n  transform.setWorldOrgX(startingPoint.x);\n  transform.setWorldOrgY(startingPoint.y);\n\n  for (var i = 0; i < tree.length; i++) {\n    var node = tree[i];\n    node.transform(transform);\n  }\n\n  var bottomRight = new PointD(bounds.getMaxX(), bounds.getMaxY());\n\n  return transform.inverseTransformPoint(bottomRight);\n};\n\nCoSELayout.branchRadialLayout = function (node, parentOfNode, startAngle, endAngle, distance, radialSeparation) {\n  // First, position this node by finding its angle.\n  var halfInterval = (endAngle - startAngle + 1) / 2;\n\n  if (halfInterval < 0) {\n    halfInterval += 180;\n  }\n\n  var nodeAngle = (halfInterval + startAngle) % 360;\n  var teta = nodeAngle * IGeometry.TWO_PI / 360;\n\n  // Make polar to java cordinate conversion.\n  var cos_teta = Math.cos(teta);\n  var x_ = distance * Math.cos(teta);\n  var y_ = distance * Math.sin(teta);\n\n  node.setCenter(x_, y_);\n\n  // Traverse all neighbors of this node and recursively call this\n  // function.\n  var neighborEdges = [];\n  neighborEdges = neighborEdges.concat(node.getEdges());\n  var childCount = neighborEdges.length;\n\n  if (parentOfNode != null) {\n    childCount--;\n  }\n\n  var branchCount = 0;\n\n  var incEdgesCount = neighborEdges.length;\n  var startIndex;\n\n  var edges = node.getEdgesBetween(parentOfNode);\n\n  // If there are multiple edges, prune them until there remains only one\n  // edge.\n  while (edges.length > 1) {\n    //neighborEdges.remove(edges.remove(0));\n    var temp = edges[0];\n    edges.splice(0, 1);\n    var index = neighborEdges.indexOf(temp);\n    if (index >= 0) {\n      neighborEdges.splice(index, 1);\n    }\n    incEdgesCount--;\n    childCount--;\n  }\n\n  if (parentOfNode != null) {\n    //assert edges.length == 1;\n    startIndex = (neighborEdges.indexOf(edges[0]) + 1) % incEdgesCount;\n  } else {\n    startIndex = 0;\n  }\n\n  var stepAngle = Math.abs(endAngle - startAngle) / childCount;\n\n  for (var i = startIndex; branchCount != childCount; i = ++i % incEdgesCount) {\n    var currentNeighbor = neighborEdges[i].getOtherEnd(node);\n\n    // Don't back traverse to root node in current tree.\n    if (currentNeighbor == parentOfNode) {\n      continue;\n    }\n\n    var childStartAngle = (startAngle + branchCount * stepAngle) % 360;\n    var childEndAngle = (childStartAngle + stepAngle) % 360;\n\n    CoSELayout.branchRadialLayout(currentNeighbor, node, childStartAngle, childEndAngle, distance + radialSeparation, radialSeparation);\n\n    branchCount++;\n  }\n};\n\nCoSELayout.maxDiagonalInTree = function (tree) {\n  var maxDiagonal = Integer.MIN_VALUE;\n\n  for (var i = 0; i < tree.length; i++) {\n    var node = tree[i];\n    var diagonal = node.getDiagonal();\n\n    if (diagonal > maxDiagonal) {\n      maxDiagonal = diagonal;\n    }\n  }\n\n  return maxDiagonal;\n};\n\nCoSELayout.prototype.calcRepulsionRange = function () {\n  // formula is 2 x (level + 1) x idealEdgeLength\n  return 2 * (this.level + 1) * this.idealEdgeLength;\n};\n\n// Tiling methods\n\n// Group zero degree members whose parents are not to be tiled, create dummy parents where needed and fill memberGroups by their dummp parent id's\nCoSELayout.prototype.groupZeroDegreeMembers = function () {\n  var self = this;\n  // array of [parent_id x oneDegreeNode_id]\n  var tempMemberGroups = {}; // A temporary map of parent node and its zero degree members\n  this.memberGroups = {}; // A map of dummy parent node and its zero degree members whose parents are not to be tiled\n  this.idToDummyNode = {}; // A map of id to dummy node \n\n  var zeroDegree = []; // List of zero degree nodes whose parents are not to be tiled\n  var allNodes = this.graphManager.getAllNodes();\n\n  // Fill zero degree list\n  for (var i = 0; i < allNodes.length; i++) {\n    var node = allNodes[i];\n    var parent = node.getParent();\n    // If a node has zero degree and its parent is not to be tiled if exists add that node to zeroDegres list\n    if (this.getNodeDegreeWithChildren(node) === 0 && (parent.id == undefined || !this.getToBeTiled(parent))) {\n      zeroDegree.push(node);\n    }\n  }\n\n  // Create a map of parent node and its zero degree members\n  for (var i = 0; i < zeroDegree.length; i++) {\n    var node = zeroDegree[i]; // Zero degree node itself\n    var p_id = node.getParent().id; // Parent id\n\n    if (typeof tempMemberGroups[p_id] === \"undefined\") tempMemberGroups[p_id] = [];\n\n    tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node); // Push node to the list belongs to its parent in tempMemberGroups\n  }\n\n  // If there are at least two nodes at a level, create a dummy compound for them\n  Object.keys(tempMemberGroups).forEach(function (p_id) {\n    if (tempMemberGroups[p_id].length > 1) {\n      var dummyCompoundId = \"DummyCompound_\" + p_id; // The id of dummy compound which will be created soon\n      self.memberGroups[dummyCompoundId] = tempMemberGroups[p_id]; // Add dummy compound to memberGroups\n\n      var parent = tempMemberGroups[p_id][0].getParent(); // The parent of zero degree nodes will be the parent of new dummy compound\n\n      // Create a dummy compound with calculated id\n      var dummyCompound = new CoSENode(self.graphManager);\n      dummyCompound.id = dummyCompoundId;\n      dummyCompound.paddingLeft = parent.paddingLeft || 0;\n      dummyCompound.paddingRight = parent.paddingRight || 0;\n      dummyCompound.paddingBottom = parent.paddingBottom || 0;\n      dummyCompound.paddingTop = parent.paddingTop || 0;\n\n      self.idToDummyNode[dummyCompoundId] = dummyCompound;\n\n      var dummyParentGraph = self.getGraphManager().add(self.newGraph(), dummyCompound);\n      var parentGraph = parent.getChild();\n\n      // Add dummy compound to parent the graph\n      parentGraph.add(dummyCompound);\n\n      // For each zero degree node in this level remove it from its parent graph and add it to the graph of dummy parent\n      for (var i = 0; i < tempMemberGroups[p_id].length; i++) {\n        var node = tempMemberGroups[p_id][i];\n\n        parentGraph.remove(node);\n        dummyParentGraph.add(node);\n      }\n    }\n  });\n};\n\nCoSELayout.prototype.clearCompounds = function () {\n  var childGraphMap = {};\n  var idToNode = {};\n\n  // Get compound ordering by finding the inner one first\n  this.performDFSOnCompounds();\n\n  for (var i = 0; i < this.compoundOrder.length; i++) {\n\n    idToNode[this.compoundOrder[i].id] = this.compoundOrder[i];\n    childGraphMap[this.compoundOrder[i].id] = [].concat(this.compoundOrder[i].getChild().getNodes());\n\n    // Remove children of compounds\n    this.graphManager.remove(this.compoundOrder[i].getChild());\n    this.compoundOrder[i].child = null;\n  }\n\n  this.graphManager.resetAllNodes();\n\n  // Tile the removed children\n  this.tileCompoundMembers(childGraphMap, idToNode);\n};\n\nCoSELayout.prototype.clearZeroDegreeMembers = function () {\n  var self = this;\n  var tiledZeroDegreePack = this.tiledZeroDegreePack = [];\n\n  Object.keys(this.memberGroups).forEach(function (id) {\n    var compoundNode = self.idToDummyNode[id]; // Get the dummy compound\n\n    tiledZeroDegreePack[id] = self.tileNodes(self.memberGroups[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n    // Set the width and height of the dummy compound as calculated\n    compoundNode.rect.width = tiledZeroDegreePack[id].width;\n    compoundNode.rect.height = tiledZeroDegreePack[id].height;\n  });\n};\n\nCoSELayout.prototype.repopulateCompounds = function () {\n  for (var i = this.compoundOrder.length - 1; i >= 0; i--) {\n    var lCompoundNode = this.compoundOrder[i];\n    var id = lCompoundNode.id;\n    var horizontalMargin = lCompoundNode.paddingLeft;\n    var verticalMargin = lCompoundNode.paddingTop;\n\n    this.adjustLocations(this.tiledMemberPack[id], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin);\n  }\n};\n\nCoSELayout.prototype.repopulateZeroDegreeMembers = function () {\n  var self = this;\n  var tiledPack = this.tiledZeroDegreePack;\n\n  Object.keys(tiledPack).forEach(function (id) {\n    var compoundNode = self.idToDummyNode[id]; // Get the dummy compound by its id\n    var horizontalMargin = compoundNode.paddingLeft;\n    var verticalMargin = compoundNode.paddingTop;\n\n    // Adjust the positions of nodes wrt its compound\n    self.adjustLocations(tiledPack[id], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin);\n  });\n};\n\nCoSELayout.prototype.getToBeTiled = function (node) {\n  var id = node.id;\n  //firstly check the previous results\n  if (this.toBeTiled[id] != null) {\n    return this.toBeTiled[id];\n  }\n\n  //only compound nodes are to be tiled\n  var childGraph = node.getChild();\n  if (childGraph == null) {\n    this.toBeTiled[id] = false;\n    return false;\n  }\n\n  var children = childGraph.getNodes(); // Get the children nodes\n\n  //a compound node is not to be tiled if all of its compound children are not to be tiled\n  for (var i = 0; i < children.length; i++) {\n    var theChild = children[i];\n\n    if (this.getNodeDegree(theChild) > 0) {\n      this.toBeTiled[id] = false;\n      return false;\n    }\n\n    //pass the children not having the compound structure\n    if (theChild.getChild() == null) {\n      this.toBeTiled[theChild.id] = false;\n      continue;\n    }\n\n    if (!this.getToBeTiled(theChild)) {\n      this.toBeTiled[id] = false;\n      return false;\n    }\n  }\n  this.toBeTiled[id] = true;\n  return true;\n};\n\n// Get degree of a node depending of its edges and independent of its children\nCoSELayout.prototype.getNodeDegree = function (node) {\n  var id = node.id;\n  var edges = node.getEdges();\n  var degree = 0;\n\n  // For the edges connected\n  for (var i = 0; i < edges.length; i++) {\n    var edge = edges[i];\n    if (edge.getSource().id !== edge.getTarget().id) {\n      degree = degree + 1;\n    }\n  }\n  return degree;\n};\n\n// Get degree of a node with its children\nCoSELayout.prototype.getNodeDegreeWithChildren = function (node) {\n  var degree = this.getNodeDegree(node);\n  if (node.getChild() == null) {\n    return degree;\n  }\n  var children = node.getChild().getNodes();\n  for (var i = 0; i < children.length; i++) {\n    var child = children[i];\n    degree += this.getNodeDegreeWithChildren(child);\n  }\n  return degree;\n};\n\nCoSELayout.prototype.performDFSOnCompounds = function () {\n  this.compoundOrder = [];\n  this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes());\n};\n\nCoSELayout.prototype.fillCompexOrderByDFS = function (children) {\n  for (var i = 0; i < children.length; i++) {\n    var child = children[i];\n    if (child.getChild() != null) {\n      this.fillCompexOrderByDFS(child.getChild().getNodes());\n    }\n    if (this.getToBeTiled(child)) {\n      this.compoundOrder.push(child);\n    }\n  }\n};\n\n/**\n* This method places each zero degree member wrt given (x,y) coordinates (top left).\n*/\nCoSELayout.prototype.adjustLocations = function (organization, x, y, compoundHorizontalMargin, compoundVerticalMargin) {\n  x += compoundHorizontalMargin;\n  y += compoundVerticalMargin;\n\n  var left = x;\n\n  for (var i = 0; i < organization.rows.length; i++) {\n    var row = organization.rows[i];\n    x = left;\n    var maxHeight = 0;\n\n    for (var j = 0; j < row.length; j++) {\n      var lnode = row[j];\n\n      lnode.rect.x = x; // + lnode.rect.width / 2;\n      lnode.rect.y = y; // + lnode.rect.height / 2;\n\n      x += lnode.rect.width + organization.horizontalPadding;\n\n      if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height;\n    }\n\n    y += maxHeight + organization.verticalPadding;\n  }\n};\n\nCoSELayout.prototype.tileCompoundMembers = function (childGraphMap, idToNode) {\n  var self = this;\n  this.tiledMemberPack = [];\n\n  Object.keys(childGraphMap).forEach(function (id) {\n    // Get the compound node\n    var compoundNode = idToNode[id];\n\n    self.tiledMemberPack[id] = self.tileNodes(childGraphMap[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n    compoundNode.rect.width = self.tiledMemberPack[id].width;\n    compoundNode.rect.height = self.tiledMemberPack[id].height;\n  });\n};\n\nCoSELayout.prototype.tileNodes = function (nodes, minWidth) {\n  var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n  var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n  var organization = {\n    rows: [],\n    rowWidth: [],\n    rowHeight: [],\n    width: 0,\n    height: minWidth, // assume minHeight equals to minWidth\n    verticalPadding: verticalPadding,\n    horizontalPadding: horizontalPadding\n  };\n\n  // Sort the nodes in ascending order of their areas\n  nodes.sort(function (n1, n2) {\n    if (n1.rect.width * n1.rect.height > n2.rect.width * n2.rect.height) return -1;\n    if (n1.rect.width * n1.rect.height < n2.rect.width * n2.rect.height) return 1;\n    return 0;\n  });\n\n  // Create the organization -> tile members\n  for (var i = 0; i < nodes.length; i++) {\n    var lNode = nodes[i];\n\n    if (organization.rows.length == 0) {\n      this.insertNodeToRow(organization, lNode, 0, minWidth);\n    } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) {\n      this.insertNodeToRow(organization, lNode, this.getShortestRowIndex(organization), minWidth);\n    } else {\n      this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth);\n    }\n\n    this.shiftToLastRow(organization);\n  }\n\n  return organization;\n};\n\nCoSELayout.prototype.insertNodeToRow = function (organization, node, rowIndex, minWidth) {\n  var minCompoundSize = minWidth;\n\n  // Add new row if needed\n  if (rowIndex == organization.rows.length) {\n    var secondDimension = [];\n\n    organization.rows.push(secondDimension);\n    organization.rowWidth.push(minCompoundSize);\n    organization.rowHeight.push(0);\n  }\n\n  // Update row width\n  var w = organization.rowWidth[rowIndex] + node.rect.width;\n\n  if (organization.rows[rowIndex].length > 0) {\n    w += organization.horizontalPadding;\n  }\n\n  organization.rowWidth[rowIndex] = w;\n  // Update compound width\n  if (organization.width < w) {\n    organization.width = w;\n  }\n\n  // Update height\n  var h = node.rect.height;\n  if (rowIndex > 0) h += organization.verticalPadding;\n\n  var extraHeight = 0;\n  if (h > organization.rowHeight[rowIndex]) {\n    extraHeight = organization.rowHeight[rowIndex];\n    organization.rowHeight[rowIndex] = h;\n    extraHeight = organization.rowHeight[rowIndex] - extraHeight;\n  }\n\n  organization.height += extraHeight;\n\n  // Insert node\n  organization.rows[rowIndex].push(node);\n};\n\n//Scans the rows of an organization and returns the one with the min width\nCoSELayout.prototype.getShortestRowIndex = function (organization) {\n  var r = -1;\n  var min = Number.MAX_VALUE;\n\n  for (var i = 0; i < organization.rows.length; i++) {\n    if (organization.rowWidth[i] < min) {\n      r = i;\n      min = organization.rowWidth[i];\n    }\n  }\n  return r;\n};\n\n//Scans the rows of an organization and returns the one with the max width\nCoSELayout.prototype.getLongestRowIndex = function (organization) {\n  var r = -1;\n  var max = Number.MIN_VALUE;\n\n  for (var i = 0; i < organization.rows.length; i++) {\n\n    if (organization.rowWidth[i] > max) {\n      r = i;\n      max = organization.rowWidth[i];\n    }\n  }\n\n  return r;\n};\n\n/**\n* This method checks whether adding extra width to the organization violates\n* the aspect ratio(1) or not.\n*/\nCoSELayout.prototype.canAddHorizontal = function (organization, extraWidth, extraHeight) {\n\n  var sri = this.getShortestRowIndex(organization);\n\n  if (sri < 0) {\n    return true;\n  }\n\n  var min = organization.rowWidth[sri];\n\n  if (min + organization.horizontalPadding + extraWidth <= organization.width) return true;\n\n  var hDiff = 0;\n\n  // Adding to an existing row\n  if (organization.rowHeight[sri] < extraHeight) {\n    if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri];\n  }\n\n  var add_to_row_ratio;\n  if (organization.width - min >= extraWidth + organization.horizontalPadding) {\n    add_to_row_ratio = (organization.height + hDiff) / (min + extraWidth + organization.horizontalPadding);\n  } else {\n    add_to_row_ratio = (organization.height + hDiff) / organization.width;\n  }\n\n  // Adding a new row for this node\n  hDiff = extraHeight + organization.verticalPadding;\n  var add_new_row_ratio;\n  if (organization.width < extraWidth) {\n    add_new_row_ratio = (organization.height + hDiff) / extraWidth;\n  } else {\n    add_new_row_ratio = (organization.height + hDiff) / organization.width;\n  }\n\n  if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio;\n\n  if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio;\n\n  return add_to_row_ratio < add_new_row_ratio;\n};\n\n//If moving the last node from the longest row and adding it to the last\n//row makes the bounding box smaller, do it.\nCoSELayout.prototype.shiftToLastRow = function (organization) {\n  var longest = this.getLongestRowIndex(organization);\n  var last = organization.rowWidth.length - 1;\n  var row = organization.rows[longest];\n  var node = row[row.length - 1];\n\n  var diff = node.width + organization.horizontalPadding;\n\n  // Check if there is enough space on the last row\n  if (organization.width - organization.rowWidth[last] > diff && longest != last) {\n    // Remove the last element of the longest row\n    row.splice(-1, 1);\n\n    // Push it to the last row\n    organization.rows[last].push(node);\n\n    organization.rowWidth[longest] = organization.rowWidth[longest] - diff;\n    organization.rowWidth[last] = organization.rowWidth[last] + diff;\n    organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)];\n\n    // Update heights of the organization\n    var maxHeight = Number.MIN_VALUE;\n    for (var i = 0; i < row.length; i++) {\n      if (row[i].height > maxHeight) maxHeight = row[i].height;\n    }\n    if (longest > 0) maxHeight += organization.verticalPadding;\n\n    var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n\n    organization.rowHeight[longest] = maxHeight;\n    if (organization.rowHeight[last] < node.height + organization.verticalPadding) organization.rowHeight[last] = node.height + organization.verticalPadding;\n\n    var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n    organization.height += finalTotal - prevTotal;\n\n    this.shiftToLastRow(organization);\n  }\n};\n\nCoSELayout.prototype.tilingPreLayout = function () {\n  if (CoSEConstants.TILE) {\n    // Find zero degree nodes and create a compound for each level\n    this.groupZeroDegreeMembers();\n    // Tile and clear children of each compound\n    this.clearCompounds();\n    // Separately tile and clear zero degree nodes for each level\n    this.clearZeroDegreeMembers();\n  }\n};\n\nCoSELayout.prototype.tilingPostLayout = function () {\n  if (CoSEConstants.TILE) {\n    this.repopulateZeroDegreeMembers();\n    this.repopulateCompounds();\n  }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Tree Reduction methods\n// -----------------------------------------------------------------------------\n// Reduce trees \nCoSELayout.prototype.reduceTrees = function () {\n  var prunedNodesAll = [];\n  var containsLeaf = true;\n  var node;\n\n  while (containsLeaf) {\n    var allNodes = this.graphManager.getAllNodes();\n    var prunedNodesInStepTemp = [];\n    containsLeaf = false;\n\n    for (var i = 0; i < allNodes.length; i++) {\n      node = allNodes[i];\n      if (node.getEdges().length == 1 && !node.getEdges()[0].isInterGraph && node.getChild() == null) {\n        prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner()]);\n        containsLeaf = true;\n      }\n    }\n    if (containsLeaf == true) {\n      var prunedNodesInStep = [];\n      for (var j = 0; j < prunedNodesInStepTemp.length; j++) {\n        if (prunedNodesInStepTemp[j][0].getEdges().length == 1) {\n          prunedNodesInStep.push(prunedNodesInStepTemp[j]);\n          prunedNodesInStepTemp[j][0].getOwner().remove(prunedNodesInStepTemp[j][0]);\n        }\n      }\n      prunedNodesAll.push(prunedNodesInStep);\n      this.graphManager.resetAllNodes();\n      this.graphManager.resetAllEdges();\n    }\n  }\n  this.prunedNodesAll = prunedNodesAll;\n};\n\n// Grow tree one step \nCoSELayout.prototype.growTree = function (prunedNodesAll) {\n  var lengthOfPrunedNodesInStep = prunedNodesAll.length;\n  var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1];\n\n  var nodeData;\n  for (var i = 0; i < prunedNodesInStep.length; i++) {\n    nodeData = prunedNodesInStep[i];\n\n    this.findPlaceforPrunedNode(nodeData);\n\n    nodeData[2].add(nodeData[0]);\n    nodeData[2].add(nodeData[1], nodeData[1].source, nodeData[1].target);\n  }\n\n  prunedNodesAll.splice(prunedNodesAll.length - 1, 1);\n  this.graphManager.resetAllNodes();\n  this.graphManager.resetAllEdges();\n};\n\n// Find an appropriate position to replace pruned node, this method can be improved\nCoSELayout.prototype.findPlaceforPrunedNode = function (nodeData) {\n\n  var gridForPrunedNode;\n  var nodeToConnect;\n  var prunedNode = nodeData[0];\n  if (prunedNode == nodeData[1].source) {\n    nodeToConnect = nodeData[1].target;\n  } else {\n    nodeToConnect = nodeData[1].source;\n  }\n  var startGridX = nodeToConnect.startX;\n  var finishGridX = nodeToConnect.finishX;\n  var startGridY = nodeToConnect.startY;\n  var finishGridY = nodeToConnect.finishY;\n\n  var upNodeCount = 0;\n  var downNodeCount = 0;\n  var rightNodeCount = 0;\n  var leftNodeCount = 0;\n  var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount];\n\n  if (startGridY > 0) {\n    for (var i = startGridX; i <= finishGridX; i++) {\n      controlRegions[0] += this.grid[i][startGridY - 1].length + this.grid[i][startGridY].length - 1;\n    }\n  }\n  if (finishGridX < this.grid.length - 1) {\n    for (var i = startGridY; i <= finishGridY; i++) {\n      controlRegions[1] += this.grid[finishGridX + 1][i].length + this.grid[finishGridX][i].length - 1;\n    }\n  }\n  if (finishGridY < this.grid[0].length - 1) {\n    for (var i = startGridX; i <= finishGridX; i++) {\n      controlRegions[2] += this.grid[i][finishGridY + 1].length + this.grid[i][finishGridY].length - 1;\n    }\n  }\n  if (startGridX > 0) {\n    for (var i = startGridY; i <= finishGridY; i++) {\n      controlRegions[3] += this.grid[startGridX - 1][i].length + this.grid[startGridX][i].length - 1;\n    }\n  }\n  var min = Integer.MAX_VALUE;\n  var minCount;\n  var minIndex;\n  for (var j = 0; j < controlRegions.length; j++) {\n    if (controlRegions[j] < min) {\n      min = controlRegions[j];\n      minCount = 1;\n      minIndex = j;\n    } else if (controlRegions[j] == min) {\n      minCount++;\n    }\n  }\n\n  if (minCount == 3 && min == 0) {\n    if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) {\n      gridForPrunedNode = 1;\n    } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) {\n      gridForPrunedNode = 0;\n    } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n      gridForPrunedNode = 3;\n    } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n      gridForPrunedNode = 2;\n    }\n  } else if (minCount == 2 && min == 0) {\n    var random = Math.floor(Math.random() * 2);\n    if (controlRegions[0] == 0 && controlRegions[1] == 0) {\n      ;\n      if (random == 0) {\n        gridForPrunedNode = 0;\n      } else {\n        gridForPrunedNode = 1;\n      }\n    } else if (controlRegions[0] == 0 && controlRegions[2] == 0) {\n      if (random == 0) {\n        gridForPrunedNode = 0;\n      } else {\n        gridForPrunedNode = 2;\n      }\n    } else if (controlRegions[0] == 0 && controlRegions[3] == 0) {\n      if (random == 0) {\n        gridForPrunedNode = 0;\n      } else {\n        gridForPrunedNode = 3;\n      }\n    } else if (controlRegions[1] == 0 && controlRegions[2] == 0) {\n      if (random == 0) {\n        gridForPrunedNode = 1;\n      } else {\n        gridForPrunedNode = 2;\n      }\n    } else if (controlRegions[1] == 0 && controlRegions[3] == 0) {\n      if (random == 0) {\n        gridForPrunedNode = 1;\n      } else {\n        gridForPrunedNode = 3;\n      }\n    } else {\n      if (random == 0) {\n        gridForPrunedNode = 2;\n      } else {\n        gridForPrunedNode = 3;\n      }\n    }\n  } else if (minCount == 4 && min == 0) {\n    var random = Math.floor(Math.random() * 4);\n    gridForPrunedNode = random;\n  } else {\n    gridForPrunedNode = minIndex;\n  }\n\n  if (gridForPrunedNode == 0) {\n    prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2);\n  } else if (gridForPrunedNode == 1) {\n    prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n  } else if (gridForPrunedNode == 2) {\n    prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2);\n  } else {\n    prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n  }\n};\n\nmodule.exports = CoSELayout;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coseBase = {};\n\ncoseBase.layoutBase = __webpack_require__(0);\ncoseBase.CoSEConstants = __webpack_require__(1);\ncoseBase.CoSEEdge = __webpack_require__(2);\ncoseBase.CoSEGraph = __webpack_require__(3);\ncoseBase.CoSEGraphManager = __webpack_require__(4);\ncoseBase.CoSELayout = __webpack_require__(6);\ncoseBase.CoSENode = __webpack_require__(5);\n\nmodule.exports = coseBase;\n\n/***/ })\n/******/ ]);\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"cose-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"cose-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeCoseBilkent\"] = factory(require(\"cose-base\"));\n\telse\n\t\troot[\"cytoscapeCoseBilkent\"] = factory(root[\"coseBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LayoutConstants = __webpack_require__(0).layoutBase.LayoutConstants;\nvar FDLayoutConstants = __webpack_require__(0).layoutBase.FDLayoutConstants;\nvar CoSEConstants = __webpack_require__(0).CoSEConstants;\nvar CoSELayout = __webpack_require__(0).CoSELayout;\nvar CoSENode = __webpack_require__(0).CoSENode;\nvar PointD = __webpack_require__(0).layoutBase.PointD;\nvar DimensionD = __webpack_require__(0).layoutBase.DimensionD;\n\nvar defaults = {\n  // Called on `layoutready`\n  ready: function ready() {},\n  // Called on `layoutstop`\n  stop: function stop() {},\n  // 'draft', 'default' or 'proof\" \n  // - 'draft' fast cooling rate \n  // - 'default' moderate cooling rate \n  // - \"proof\" slow cooling rate\n  quality: 'default',\n  // include labels in node dimensions\n  nodeDimensionsIncludeLabels: false,\n  // number of ticks per frame; higher is faster but more jerky\n  refresh: 30,\n  // Whether to fit the network view after when done\n  fit: true,\n  // Padding on fit\n  padding: 10,\n  // Whether to enable incremental mode\n  randomize: true,\n  // Node repulsion (non overlapping) multiplier\n  nodeRepulsion: 4500,\n  // Ideal edge (non nested) length\n  idealEdgeLength: 50,\n  // Divisor to compute edge forces\n  edgeElasticity: 0.45,\n  // Nesting factor (multiplier) to compute ideal edge length for nested edges\n  nestingFactor: 0.1,\n  // Gravity force (constant)\n  gravity: 0.25,\n  // Maximum number of iterations to perform\n  numIter: 2500,\n  // For enabling tiling\n  tile: true,\n  // Type of layout animation. The option set is {'during', 'end', false}\n  animate: 'end',\n  // Duration for animate:end\n  animationDuration: 500,\n  // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function)\n  tilingPaddingVertical: 10,\n  // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function)\n  tilingPaddingHorizontal: 10,\n  // Gravity range (constant) for compounds\n  gravityRangeCompound: 1.5,\n  // Gravity force (constant) for compounds\n  gravityCompound: 1.0,\n  // Gravity range (constant)\n  gravityRange: 3.8,\n  // Initial cooling factor for incremental layout\n  initialEnergyOnIncremental: 0.5\n};\n\nfunction extend(defaults, options) {\n  var obj = {};\n\n  for (var i in defaults) {\n    obj[i] = defaults[i];\n  }\n\n  for (var i in options) {\n    obj[i] = options[i];\n  }\n\n  return obj;\n};\n\nfunction _CoSELayout(_options) {\n  this.options = extend(defaults, _options);\n  getUserOptions(this.options);\n}\n\nvar getUserOptions = function getUserOptions(options) {\n  if (options.nodeRepulsion != null) CoSEConstants.DEFAULT_REPULSION_STRENGTH = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = options.nodeRepulsion;\n  if (options.idealEdgeLength != null) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options.idealEdgeLength;\n  if (options.edgeElasticity != null) CoSEConstants.DEFAULT_SPRING_STRENGTH = FDLayoutConstants.DEFAULT_SPRING_STRENGTH = options.edgeElasticity;\n  if (options.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options.nestingFactor;\n  if (options.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options.gravity;\n  if (options.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options.numIter;\n  if (options.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options.gravityRange;\n  if (options.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options.gravityCompound;\n  if (options.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options.gravityRangeCompound;\n  if (options.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options.initialEnergyOnIncremental;\n\n  if (options.quality == 'draft') LayoutConstants.QUALITY = 0;else if (options.quality == 'proof') LayoutConstants.QUALITY = 2;else LayoutConstants.QUALITY = 1;\n\n  CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options.nodeDimensionsIncludeLabels;\n  CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options.randomize;\n  CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options.animate;\n  CoSEConstants.TILE = options.tile;\n  CoSEConstants.TILING_PADDING_VERTICAL = typeof options.tilingPaddingVertical === 'function' ? options.tilingPaddingVertical.call() : options.tilingPaddingVertical;\n  CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options.tilingPaddingHorizontal === 'function' ? options.tilingPaddingHorizontal.call() : options.tilingPaddingHorizontal;\n};\n\n_CoSELayout.prototype.run = function () {\n  var ready;\n  var frameId;\n  var options = this.options;\n  var idToLNode = this.idToLNode = {};\n  var layout = this.layout = new CoSELayout();\n  var self = this;\n\n  self.stopped = false;\n\n  this.cy = this.options.cy;\n\n  this.cy.trigger({ type: 'layoutstart', layout: this });\n\n  var gm = layout.newGraphManager();\n  this.gm = gm;\n\n  var nodes = this.options.eles.nodes();\n  var edges = this.options.eles.edges();\n\n  this.root = gm.addRoot();\n  this.processChildrenList(this.root, this.getTopMostNodes(nodes), layout);\n\n  for (var i = 0; i < edges.length; i++) {\n    var edge = edges[i];\n    var sourceNode = this.idToLNode[edge.data(\"source\")];\n    var targetNode = this.idToLNode[edge.data(\"target\")];\n    if (sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) {\n      var e1 = gm.add(layout.newEdge(), sourceNode, targetNode);\n      e1.id = edge.id();\n    }\n  }\n\n  var getPositions = function getPositions(ele, i) {\n    if (typeof ele === \"number\") {\n      ele = i;\n    }\n    var theId = ele.data('id');\n    var lNode = self.idToLNode[theId];\n\n    return {\n      x: lNode.getRect().getCenterX(),\n      y: lNode.getRect().getCenterY()\n    };\n  };\n\n  /*\n   * Reposition nodes in iterations animatedly\n   */\n  var iterateAnimated = function iterateAnimated() {\n    // Thigs to perform after nodes are repositioned on screen\n    var afterReposition = function afterReposition() {\n      if (options.fit) {\n        options.cy.fit(options.eles, options.padding);\n      }\n\n      if (!ready) {\n        ready = true;\n        self.cy.one('layoutready', options.ready);\n        self.cy.trigger({ type: 'layoutready', layout: self });\n      }\n    };\n\n    var ticksPerFrame = self.options.refresh;\n    var isDone;\n\n    for (var i = 0; i < ticksPerFrame && !isDone; i++) {\n      isDone = self.stopped || self.layout.tick();\n    }\n\n    // If layout is done\n    if (isDone) {\n      // If the layout is not a sublayout and it is successful perform post layout.\n      if (layout.checkLayoutSuccess() && !layout.isSubLayout) {\n        layout.doPostLayout();\n      }\n\n      // If layout has a tilingPostLayout function property call it.\n      if (layout.tilingPostLayout) {\n        layout.tilingPostLayout();\n      }\n\n      layout.isLayoutFinished = true;\n\n      self.options.eles.nodes().positions(getPositions);\n\n      afterReposition();\n\n      // trigger layoutstop when the layout stops (e.g. finishes)\n      self.cy.one('layoutstop', self.options.stop);\n      self.cy.trigger({ type: 'layoutstop', layout: self });\n\n      if (frameId) {\n        cancelAnimationFrame(frameId);\n      }\n\n      ready = false;\n      return;\n    }\n\n    var animationData = self.layout.getPositionsData(); // Get positions of layout nodes note that all nodes may not be layout nodes because of tiling\n\n    // Position nodes, for the nodes whose id does not included in data (because they are removed from their parents and included in dummy compounds)\n    // use position of their ancestors or dummy ancestors\n    options.eles.nodes().positions(function (ele, i) {\n      if (typeof ele === \"number\") {\n        ele = i;\n      }\n      // If ele is a compound node, then its position will be defined by its children\n      if (!ele.isParent()) {\n        var theId = ele.id();\n        var pNode = animationData[theId];\n        var temp = ele;\n        // If pNode is undefined search until finding position data of its first ancestor (It may be dummy as well)\n        while (pNode == null) {\n          pNode = animationData[temp.data('parent')] || animationData['DummyCompound_' + temp.data('parent')];\n          animationData[theId] = pNode;\n          temp = temp.parent()[0];\n          if (temp == undefined) {\n            break;\n          }\n        }\n        if (pNode != null) {\n          return {\n            x: pNode.x,\n            y: pNode.y\n          };\n        } else {\n          return {\n            x: ele.position('x'),\n            y: ele.position('y')\n          };\n        }\n      }\n    });\n\n    afterReposition();\n\n    frameId = requestAnimationFrame(iterateAnimated);\n  };\n\n  /*\n  * Listen 'layoutstarted' event and start animated iteration if animate option is 'during'\n  */\n  layout.addListener('layoutstarted', function () {\n    if (self.options.animate === 'during') {\n      frameId = requestAnimationFrame(iterateAnimated);\n    }\n  });\n\n  layout.runLayout(); // Run cose layout\n\n  /*\n   * If animate option is not 'during' ('end' or false) perform these here (If it is 'during' similar things are already performed)\n   */\n  if (this.options.animate !== \"during\") {\n    self.options.eles.nodes().not(\":parent\").layoutPositions(self, self.options, getPositions); // Use layout positions to reposition the nodes it considers the options parameter\n    ready = false;\n  }\n\n  return this; // chaining\n};\n\n//Get the top most ones of a list of nodes\n_CoSELayout.prototype.getTopMostNodes = function (nodes) {\n  var nodesMap = {};\n  for (var i = 0; i < nodes.length; i++) {\n    nodesMap[nodes[i].id()] = true;\n  }\n  var roots = nodes.filter(function (ele, i) {\n    if (typeof ele === \"number\") {\n      ele = i;\n    }\n    var parent = ele.parent()[0];\n    while (parent != null) {\n      if (nodesMap[parent.id()]) {\n        return false;\n      }\n      parent = parent.parent()[0];\n    }\n    return true;\n  });\n\n  return roots;\n};\n\n_CoSELayout.prototype.processChildrenList = function (parent, children, layout) {\n  var size = children.length;\n  for (var i = 0; i < size; i++) {\n    var theChild = children[i];\n    var children_of_children = theChild.children();\n    var theNode;\n\n    var dimensions = theChild.layoutDimensions({\n      nodeDimensionsIncludeLabels: this.options.nodeDimensionsIncludeLabels\n    });\n\n    if (theChild.outerWidth() != null && theChild.outerHeight() != null) {\n      theNode = parent.add(new CoSENode(layout.graphManager, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n    } else {\n      theNode = parent.add(new CoSENode(this.graphManager));\n    }\n    // Attach id to the layout node\n    theNode.id = theChild.data(\"id\");\n    // Attach the paddings of cy node to layout node\n    theNode.paddingLeft = parseInt(theChild.css('padding'));\n    theNode.paddingTop = parseInt(theChild.css('padding'));\n    theNode.paddingRight = parseInt(theChild.css('padding'));\n    theNode.paddingBottom = parseInt(theChild.css('padding'));\n\n    //Attach the label properties to compound if labels will be included in node dimensions  \n    if (this.options.nodeDimensionsIncludeLabels) {\n      if (theChild.isParent()) {\n        var labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false }).w;\n        var labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false }).h;\n        var labelPos = theChild.css(\"text-halign\");\n        theNode.labelWidth = labelWidth;\n        theNode.labelHeight = labelHeight;\n        theNode.labelPos = labelPos;\n      }\n    }\n\n    // Map the layout node\n    this.idToLNode[theChild.data(\"id\")] = theNode;\n\n    if (isNaN(theNode.rect.x)) {\n      theNode.rect.x = 0;\n    }\n\n    if (isNaN(theNode.rect.y)) {\n      theNode.rect.y = 0;\n    }\n\n    if (children_of_children != null && children_of_children.length > 0) {\n      var theNewGraph;\n      theNewGraph = layout.getGraphManager().add(layout.newGraph(), theNode);\n      this.processChildrenList(theNewGraph, children_of_children, layout);\n    }\n  }\n};\n\n/**\n * @brief : called on continuous layouts to stop them before they finish\n */\n_CoSELayout.prototype.stop = function () {\n  this.stopped = true;\n\n  return this; // chaining\n};\n\nvar register = function register(cytoscape) {\n  //  var Layout = getLayout( cytoscape );\n\n  cytoscape('layout', 'cose-bilkent', _CoSELayout);\n};\n\n// auto reg for globals\nif (typeof cytoscape !== 'undefined') {\n  register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ })\n/******/ ]);\n});","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Force-directed layout for the ontology graph, ported from the\n * east-ontology webview. Picks between cose-bilkent / grid based on node /\n * link / group counts, then runs a post-pass to separate rectangular nodes\n * that ended up overlapping.\n *\n * @packageDocumentation\n */\n\nimport cytoscape from 'cytoscape';\n// @ts-expect-error no type declarations available\nimport coseBilkent from 'cytoscape-cose-bilkent';\nimport type { FlatNode, FlatLink } from './types.js';\n\ncytoscape.use(coseBilkent);\n\nexport interface LayoutResult {\n    positions: Map<string, { x: number; y: number }>;\n}\n\nconst NODE_WIDTH = 200;\nconst NODE_HEIGHT = 80;\n\nfunction getCoseBilkentOptions(nodeCount: number): cytoscape.LayoutOptions {\n    const baseSpacing = Math.max(300, nodeCount * 3);\n    const iterations = Math.max(2500, Math.min(5000, nodeCount * 40));\n    return {\n        name: 'cose-bilkent',\n        nodeRepulsion: baseSpacing * 12,\n        idealEdgeLength: baseSpacing,\n        edgeElasticity: 0.35,\n        nestingFactor: 0.1,\n        gravity: 0.08,\n        numIter: iterations,\n        tile: true,\n        tilingPaddingVertical: 30,\n        tilingPaddingHorizontal: 30,\n        quality: 'default',\n        randomize: false,\n        convergenceThreshold: 0.01,\n        animate: false,\n        fit: true,\n        padding: 50,\n    } as cytoscape.LayoutOptions;\n}\n\nfunction getConstrainedForceOptions(): cytoscape.LayoutOptions {\n    return {\n        name: 'cose-bilkent',\n        randomize: false,\n        nodeRepulsion: 15000,\n        idealEdgeLength: 200,\n        edgeElasticity: 0.3,\n        gravity: 0.15,\n        gravityRange: 2.5,\n        nestingFactor: 0.2,\n        numIter: 3000,\n        initialTemp: 1000,\n        coolingFactor: 0.95,\n        minTemp: 1.0,\n        tile: true,\n        tilingPaddingVertical: 40,\n        tilingPaddingHorizontal: 40,\n        animate: false,\n        fit: true,\n        padding: 50,\n    } as cytoscape.LayoutOptions;\n}\n\nfunction getCompoundOptions(): cytoscape.LayoutOptions {\n    return {\n        name: 'cose-bilkent',\n        nestingFactor: 0.5,\n        gravity: 0.2,\n        gravityCompound: 1.5,\n        gravityRange: 3.0,\n        nodeRepulsion: 8000,\n        idealEdgeLength: 160,\n        edgeElasticity: 0.3,\n        initialTemp: 300,\n        coolingFactor: 0.92,\n        minTemp: 1.0,\n        numIter: 3500,\n        tile: true,\n        tilingPaddingVertical: 50,\n        tilingPaddingHorizontal: 50,\n        animate: false,\n        fit: true,\n        padding: 50,\n    } as cytoscape.LayoutOptions;\n}\n\nfunction getGridOptions(nodeCount: number): cytoscape.LayoutOptions {\n    const gridSize = Math.ceil(Math.sqrt(nodeCount));\n    return {\n        name: 'grid',\n        rows: gridSize,\n        cols: gridSize,\n        spacingFactor: 2.5,\n        avoidOverlap: true,\n        avoidOverlapPadding: 50,\n        condense: false,\n        animate: false,\n        fit: true,\n        padding: 50,\n    } as cytoscape.LayoutOptions;\n}\n\nfunction selectLayout(nodes: FlatNode[], links: FlatLink[]): cytoscape.LayoutOptions {\n    const nodeCount = nodes.length;\n    const groupCount = nodes.filter(n => n.nodeType === 'group').length;\n    const linkCount = links.length;\n    if (nodeCount < 15) return getCoseBilkentOptions(nodeCount);\n    if (linkCount > nodeCount * 1.8) return getConstrainedForceOptions();\n    if (groupCount > 2) return getCompoundOptions();\n    return getCoseBilkentOptions(nodeCount);\n}\n\nexport function calculateLayout(nodes: FlatNode[], links: FlatLink[]): LayoutResult {\n    const positions = new Map<string, { x: number; y: number }>();\n    if (nodes.length === 0) return { positions };\n\n    const cy = cytoscape({\n        headless: true,\n        styleEnabled: true,\n        elements: {\n            nodes: nodes.map(n => ({\n                data: {\n                    id: n.id,\n                    width: NODE_WIDTH,\n                    height: NODE_HEIGHT,\n                    type: n.nodeType,\n                    isGroup: n.nodeType === 'group',\n                },\n            })),\n            edges: links.map(l => ({\n                data: { id: l.id, source: l.source, target: l.target, type: l.linkType },\n            })),\n        },\n        style: [\n            {\n                selector: 'node',\n                style: {\n                    width: NODE_WIDTH,\n                    height: NODE_HEIGHT,\n                    shape: 'rectangle' as const,\n                },\n            },\n        ],\n    });\n\n    let layoutSucceeded = false;\n    try {\n        const layout = cy.layout(selectLayout(nodes, links));\n        layout.run();\n        layoutSucceeded = true;\n    } catch {\n        layoutSucceeded = false;\n    }\n\n    if (layoutSucceeded) {\n        let allAtOrigin = true;\n        cy.nodes().forEach(node => {\n            const pos = node.position();\n            if (pos.x !== 0 || pos.y !== 0) allAtOrigin = false;\n        });\n        if (allAtOrigin) layoutSucceeded = false;\n    }\n\n    if (!layoutSucceeded) {\n        try {\n            cy.layout(getGridOptions(nodes.length)).run();\n        } catch {\n            // best-effort — fall through with whatever positions we have\n        }\n    }\n\n    const rawPositions: { id: string; x: number; y: number }[] = [];\n    cy.nodes().forEach(node => {\n        const pos = node.position();\n        rawPositions.push({ id: node.id(), x: pos.x, y: pos.y });\n    });\n    cy.destroy();\n\n    separateOverlappingNodes(rawPositions);\n\n    for (const p of rawPositions) {\n        positions.set(p.id, { x: p.x, y: p.y });\n    }\n    return { positions };\n}\n\nconst MIN_SPACING = 60;\n\nfunction separateOverlappingNodes(nodes: { id: string; x: number; y: number }[]) {\n    const maxIterations = 500;\n    const requiredW = NODE_WIDTH + MIN_SPACING;\n    const requiredH = NODE_HEIGHT + MIN_SPACING;\n    for (let iter = 0; iter < maxIterations; iter++) {\n        let hasOverlap = false;\n        const damping = Math.max(0.3, 0.8 - iter * 0.001);\n        for (let i = 0; i < nodes.length; i++) {\n            for (let j = i + 1; j < nodes.length; j++) {\n                const a = nodes[i]!;\n                const b = nodes[j]!;\n                const dx = a.x - b.x;\n                const dy = a.y - b.y;\n                const absDx = Math.abs(dx);\n                const absDy = Math.abs(dy);\n                if (absDx >= requiredW || absDy >= requiredH) continue;\n                hasOverlap = true;\n                const overlapX = requiredW - absDx;\n                const overlapY = requiredH - absDy;\n                let fx: number;\n                let fy: number;\n                if (absDx === 0 && absDy === 0) {\n                    const angle = Math.random() * Math.PI * 2;\n                    fx = Math.cos(angle) * requiredW;\n                    fy = Math.sin(angle) * requiredH;\n                } else if (overlapX < overlapY) {\n                    fx = Math.sign(dx) * overlapX * 0.6;\n                    fy = Math.sign(dy || 1) * overlapY * 0.15;\n                } else {\n                    fx = Math.sign(dx || 1) * overlapX * 0.15;\n                    fy = Math.sign(dy) * overlapY * 0.6;\n                }\n                a.x += fx * damping;\n                a.y += fy * damping;\n                b.x -= fx * damping;\n                b.y -= fy * damping;\n            }\n        }\n        if (!hasOverlap) return;\n    }\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `useFlowState` — ReactFlow controller for the ontology editor.\n *\n * Ported from the east-ontology webview but decoupled from\n * `OntologyContext` — the ontology + flatten result + mutation callbacks\n * are injected by the parent (the renderer in `index.tsx`).\n *\n * Phase 2: read-only (no mutation surfaces are wired here yet; the\n * `onConnect` / `onNodesChange` removals just fire the injected callbacks\n * which the read-only renderer keeps as no-ops).\n *\n * @packageDocumentation\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n    applyNodeChanges,\n    applyEdgeChanges,\n    useReactFlow,\n    type Node as FlowNode,\n    type Edge as FlowEdge,\n    type NodeChange,\n    type EdgeChange,\n} from '@xyflow/react';\nimport { calculateLayout } from './layout.js';\nimport type { FlatLink, FlatNode } from './types.js';\nimport type { OntologyFlowNodeData } from './OntologyNode.js';\nimport type { OntologyFlowEdgeData } from './OntologyEdge.js';\n\n/**\n * Mutation callbacks the parent renderer injects. In read-only mode the\n * parent passes no-ops; in editable mode each callback re-derives the\n * next-ontology and writes it back through `binding.write` via\n * `useBindingOntology`'s `mutate`.\n */\nexport interface OntologyMutations {\n    deleteNodes(ids: Set<string>): void;\n    deleteLinks(ids: Set<string>): void;\n}\n\nexport interface UseFlowStateArgs {\n    flatNodes: FlatNode[];\n    flatLinks: FlatLink[];\n    mutations: OntologyMutations;\n}\n\ninterface GetBestHandlesResult {\n    sourceHandle: string;\n    targetHandle: string;\n}\n\nfunction getBestHandles(\n    sourcePos: { x: number; y: number },\n    targetPos: { x: number; y: number },\n): GetBestHandlesResult {\n    const dx = targetPos.x - sourcePos.x;\n    const dy = targetPos.y - sourcePos.y;\n    if (Math.abs(dx) > Math.abs(dy)) {\n        return dx > 0\n            ? { sourceHandle: 'right',  targetHandle: 'left-target' }\n            : { sourceHandle: 'left',   targetHandle: 'right-target' };\n    }\n    return dy > 0\n        ? { sourceHandle: 'bottom', targetHandle: 'top-target' }\n        : { sourceHandle: 'top',    targetHandle: 'bottom-target' };\n}\n\nfunction buildFlowNodes(\n    flatNodes: FlatNode[],\n    positions: Map<string, { x: number; y: number }>,\n): FlowNode<OntologyFlowNodeData>[] {\n    return flatNodes.map(n => ({\n        id: n.id,\n        type: 'ontology' as const,\n        position: positions.get(n.id) ?? { x: 0, y: 0 },\n        data: {\n            name: n.name,\n            description: n.description,\n            type: n.nodeType,\n            attention: 'normal' as const,\n        },\n    }));\n}\n\nfunction buildFlowEdges(\n    flatLinks: FlatLink[],\n    positions: Map<string, { x: number; y: number }>,\n): FlowEdge<OntologyFlowEdgeData>[] {\n    return flatLinks.map(l => {\n        const sp = positions.get(l.source) ?? { x: 0, y: 0 };\n        const tp = positions.get(l.target) ?? { x: 0, y: 0 };\n        const handles = getBestHandles(sp, tp);\n        return {\n            id: l.id,\n            source: l.source,\n            target: l.target,\n            sourceHandle: handles.sourceHandle,\n            targetHandle: handles.targetHandle,\n            type: 'ontology' as const,\n            data: {\n                type: l.linkType,\n                label: l.linkType.replace(/_/g, ' '),\n                attention: 'normal' as const,\n            },\n        };\n    });\n}\n\nexport function useFlowState({ flatNodes, flatLinks, mutations }: UseFlowStateArgs) {\n    const { screenToFlowPosition } = useReactFlow();\n\n    // Initial positions — computed once per mount; tracked imperatively after.\n    const [initialPositions] = useState(() => {\n        const { positions } = calculateLayout(flatNodes, flatLinks);\n        return positions;\n    });\n    const positionsRef = useRef<Map<string, { x: number; y: number }>>(initialPositions);\n\n    // Seed a position for a not-yet-rendered node id (used by \"add node\" so\n    // the new node lands where the user clicked, before the binding refetch\n    // rebuilds the flow nodes).\n    const setNodePosition = useCallback((id: string, pos: { x: number; y: number }) => {\n        positionsRef.current.set(id, pos);\n    }, []);\n\n    const [nodes, setNodes] = useState<FlowNode<OntologyFlowNodeData>[]>(\n        () => buildFlowNodes(flatNodes, initialPositions),\n    );\n    const [edges, setEdges] = useState<FlowEdge<OntologyFlowEdgeData>[]>(\n        () => buildFlowEdges(flatLinks, initialPositions),\n    );\n\n    // Sync from binding refetch → local state. Preserves positions from\n    // drags; new nodes get (0,0) until the next layout pass.\n    const prevFlatNodesRef = useRef(flatNodes);\n    const prevFlatLinksRef = useRef(flatLinks);\n    useEffect(() => {\n        const nodesChanged = prevFlatNodesRef.current !== flatNodes;\n        const linksChanged = prevFlatLinksRef.current !== flatLinks;\n        if (!nodesChanged && !linksChanged) return;\n\n        prevFlatNodesRef.current = flatNodes;\n        prevFlatLinksRef.current = flatLinks;\n\n        for (const n of flatNodes) {\n            if (!positionsRef.current.has(n.id)) {\n                positionsRef.current.set(n.id, { x: 0, y: 0 });\n            }\n        }\n        if (nodesChanged) setNodes(buildFlowNodes(flatNodes, positionsRef.current));\n        if (linksChanged) setEdges(buildFlowEdges(flatLinks, positionsRef.current));\n    }, [flatNodes, flatLinks]);\n\n    const onNodesChange = useCallback((changes: NodeChange[]) => {\n        const removed = new Set(changes.filter(c => c.type === 'remove').map(c => c.id));\n        if (removed.size > 0) {\n            mutations.deleteNodes(removed);\n            return;\n        }\n        let hasPositionChanges = false;\n        for (const c of changes) {\n            if (c.type === 'position' && c.position) {\n                positionsRef.current.set(c.id, c.position);\n                hasPositionChanges = true;\n            }\n        }\n        setNodes(nds => applyNodeChanges(changes, nds) as FlowNode<OntologyFlowNodeData>[]);\n        if (hasPositionChanges) {\n            setEdges(prev => prev.map(e => {\n                const sp = positionsRef.current.get(e.source) ?? { x: 0, y: 0 };\n                const tp = positionsRef.current.get(e.target) ?? { x: 0, y: 0 };\n                const handles = getBestHandles(sp, tp);\n                if (e.sourceHandle === handles.sourceHandle && e.targetHandle === handles.targetHandle) return e;\n                return { ...e, sourceHandle: handles.sourceHandle, targetHandle: handles.targetHandle };\n            }));\n        }\n    }, [mutations]);\n\n    const onEdgesChange = useCallback((changes: EdgeChange[]) => {\n        const removed = new Set(changes.filter(c => c.type === 'remove').map(c => c.id));\n        if (removed.size > 0) {\n            mutations.deleteLinks(removed);\n            return;\n        }\n        setEdges(eds => applyEdgeChanges(changes, eds) as FlowEdge<OntologyFlowEdgeData>[]);\n    }, [mutations]);\n\n    return useMemo(\n        () => ({ nodes, edges, onNodesChange, onEdgesChange, screenToFlowPosition, setNodePosition }),\n        [nodes, edges, onNodesChange, onEdgesChange, screenToFlowPosition, setNodePosition],\n    );\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * React-side binding integration for the Ontology editor.\n *\n * `useBindingOntology(binding)` is a thin reactive wrapper over the shared\n * `BindRuntime.buildBindHandle` — the same handle that powers every other\n * `Data.bind` consumer (including `EastChakraDiff`). It builds the handle for\n * the binding's `(sourceType, source, patch, mode)`, subscribes to the staged\n * store + reactive dataset cache so the canvas re-renders on edits, and exposes\n * the handle's `read` / `write` / `pending` / `commit` / `discard` as an\n * ontology-typed surface.\n *\n * Deliberately holds no decode/stage/commit logic of its own: mode semantics\n * (direct write-through, staged buffering, patch publish) live once, in the\n * runtime. In particular `pending` and `read` honour the handle's per-mode\n * behaviour — e.g. a direct binding never reports a staged buffer.\n *\n * @packageDocumentation\n */\n\nimport { useCallback, useMemo, useSyncExternalStore } from 'react';\nimport { type ValueTypeOf } from '@elaraai/east';\nimport type { TreePath } from '@elaraai/e3-types';\nimport { DiffBindingType } from '@elaraai/e3-ui/internal';\nimport {\n    defaultBindRuntime,\n    getBindingTypes,\n    getReactiveDatasetCache,\n    getStagedStore,\n    awaitPendingWrites,\n    datasetCacheKey,\n    type BindHandle,\n} from '../platform/index.js';\nimport type { Ontology } from './types.js';\n\ntype DiffBindingValue = ValueTypeOf<typeof DiffBindingType>;\n\nexport interface UseBindingOntologyResult {\n    /** Current ontology value (buffered if staged, otherwise server). `null`\n     *  if the binding hasn't run yet (no registered types) or the source\n     *  dataset has no value. */\n    ontology: Ontology | null;\n    /** True when there is an in-flight staged change. Always false for direct\n     *  bindings — the handle writes through, never buffers. */\n    pending: boolean;\n    /** Replace the bound value. In staged mode buffers the write; in direct\n     *  mode writes through immediately. */\n    mutate: (next: Ontology) => void;\n    /** Resolve the in-flight change. */\n    commit: () => Promise<void>;\n    /** Drop the in-flight change. */\n    discard: () => void;\n}\n\n/**\n * Subscribe to a binding's source (and patch, if any) path on both the staged\n * store and the reactive dataset cache. Re-renders any time a version bumps.\n */\nfunction useBindingVersion(\n    workspace: string,\n    sourcePath: TreePath,\n    patchPath: TreePath | undefined,\n): number {\n    const staged = getStagedStore();\n    const cache  = getReactiveDatasetCache();\n    const keys = useMemo(() => {\n        const ks = [datasetCacheKey(workspace, sourcePath)];\n        if (patchPath) ks.push(datasetCacheKey(workspace, patchPath));\n        return ks;\n    }, [workspace, sourcePath, patchPath]);\n    const subscribe = useCallback((cb: () => void) => {\n        const unsubs = keys.flatMap(k => [staged.subscribe(k, cb), cache.subscribe(k, cb)]);\n        return () => { for (const u of unsubs) u(); };\n    }, [staged, cache, keys]);\n    const getSnapshot = useCallback(\n        () => keys.reduce((sum, k) => sum + staged.getKeyVersion(k) + cache.getKeyVersion(k), 0),\n        [staged, cache, keys],\n    );\n    return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/**\n * Resolve a {@link DiffBindingType} value into a live ontology + the\n * commit / discard / mutate handlers, delegating to the shared bind runtime.\n *\n * Returns `ontology: null` if the binding hasn't run yet (types not\n * registered) or no source value is present.\n */\nexport function useBindingOntology(binding: DiffBindingValue): UseBindingOntologyResult {\n    const cache = getReactiveDatasetCache();\n    const workspace = cache.getConfig().workspace ?? '';\n    const sourcePath = binding.source as TreePath;\n    const mode = binding.mode.type;\n    const patchPath = binding.patch.type === 'some' ? (binding.patch.value as TreePath) : undefined;\n\n    // Bump on every staged buffer or server value change for source/patch.\n    const version = useBindingVersion(workspace, sourcePath, patchPath);\n\n    const handle = useMemo<BindHandle | null>(() => {\n        // Only buildable once `Data.bind` has registered the binding's types.\n        if (!getBindingTypes(workspace, sourcePath)) return null;\n        const { sourceType } = getBindingTypes(workspace, sourcePath)!;\n        return defaultBindRuntime.buildBindHandle(sourceType, sourcePath, patchPath, mode);\n    }, [workspace, sourcePath, patchPath, mode]);\n\n    const { ontology, pending } = useMemo(() => {\n        if (!handle || !handle.has()) return { ontology: null, pending: false };\n        try {\n            return { ontology: handle.read() as Ontology, pending: handle.pending() };\n        } catch {\n            return { ontology: null, pending: false };\n        }\n        // `version` drives recompute when buffers / server values change.\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [handle, version]);\n\n    const mutate = useCallback((next: Ontology) => {\n        handle?.write(next);\n    }, [handle]);\n\n    const commit = useCallback(async (): Promise<void> => {\n        handle?.commit();\n        await awaitPendingWrites();\n    }, [handle]);\n\n    const discard = useCallback(() => {\n        handle?.discard();\n    }, [handle]);\n\n    return { ontology, pending, mutate, commit, discard };\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `EastChakraOntology` — Chakra v3 + ReactFlow renderer for the `Ontology`\n * extension component declared in `@elaraai/e3-ui`. Mounts the graph\n * editor over a bound `OntologyType` dataset, with the same staged-buffer\n * + commit machinery `EastChakraDiff` uses.\n *\n * Phase 2 wires the read side end-to-end (binding → decode → render);\n * `onMutate` is wired but the canvas mutation paths (add / delete /\n * connect) are inert until Phase 3 promotes them from no-ops.\n *\n * Registers itself against {@link Ontology.Component} at module load via\n * {@link implementUIComponent}.\n *\n * @packageDocumentation\n */\n\nimport { memo, useCallback, useMemo, useState } from 'react';\nimport {\n    Background, BackgroundVariant, Controls, MiniMap, ReactFlow, ReactFlowProvider,\n    type Connection, type EdgeTypes, type Node as FlowNode, type NodeTypes,\n} from '@xyflow/react';\nimport { Global } from '@emotion/react';\n// xyflow ships a static stylesheet its nodes/edges need for positioning.\n// The rest of the design system is emotion CSS-in-JS (no static CSS files),\n// so rather than make every consumer remember a separate `.css` import (and\n// silently collapse if they don't), we bundle the stylesheet into the JS as\n// a string and inject it through emotion's <Global>, scoped to the editor —\n// same self-contained model as east-ui-components.\n// @ts-expect-error — `?inline` returns the stylesheet as a string at build time.\nimport xyflowCss from '@xyflow/react/dist/style.css?inline';\nimport { Box, HStack, Input, Menu, Portal, SegmentGroup, Text } from '@chakra-ui/react';\nimport { FiList, FiSearch, FiShare2, FiX } from 'react-icons/fi';\nimport { none, some, variant, type ValueTypeOf } from '@elaraai/east';\nimport { Ontology } from '@elaraai/e3-ui/internal';\nimport { implementUIComponent } from '@elaraai/east-ui-components';\n\nimport { OntologyNode, type OntologyFlowNodeData } from './OntologyNode.js';\nimport { OntologyEdge } from './OntologyEdge.js';\nimport { NodePropertiesDrawer } from './NodePropertiesDrawer.js';\nimport { OntologyTable } from './OntologyTable.js';\nimport {\n    ALL_NODE_KINDS,\n    ValidLinks,\n    flattenOntology,\n    type Ontology as OntologyValue,\n    type OntologyLink as OntologyLinkValue,\n    type OntologyNode as OntologyNodeValue,\n    type OntologyNodeKind,\n} from './types.js';\nimport { NODE_KIND_ACCENT } from './accents.js';\nimport { useFlowState } from './flow-state.js';\nimport { useBindingOntology } from './bind-runtime.js';\n\n// Monotonic counter for new node ids — synchronous so a pane \"add node\" can\n// seed the node's position before the binding refetch rebuilds the graph.\nlet nodeIdSeq = 0;\nfunction freshNodeId(): string {\n    nodeIdSeq += 1;\n    return `node-${Date.now()}-${nodeIdSeq}`;\n}\n\nconst NODE_TYPES: NodeTypes = { ontology: OntologyNode };\nconst EDGE_TYPES: EdgeTypes = { ontology: OntologyEdge };\n\ntype OntologyValueIR = ValueTypeOf<typeof Ontology.Component.schema>;\n\nfunction getOpt<T>(opt: { type: 'none'; value: null } | { type: 'some'; value: T }): T | undefined {\n    return opt.type === 'some' ? opt.value : undefined;\n}\n\n/** Pick the smallest positive integer suffix not yet used by a link id of\n *  the form `l-<n>`. Falls back to timestamp if existing ids don't fit. */\nfunction nextLinkId(existing: OntologyLinkValue[]): string {\n    let max = 0;\n    for (const l of existing) {\n        const m = /^l-(\\d+)$/.exec(l.id);\n        if (m && m[1]) {\n            const n = Number(m[1]);\n            if (n > max) max = n;\n        }\n    }\n    return `l-${max + 1}`;\n}\n\nexport interface EastChakraOntologyProps {\n    value: OntologyValueIR;\n    storageKey: string;\n}\n\ninterface OntologyMutationHandlers {\n    updateNode(id: string, updates: { type?: OntologyNodeKind; name?: string; description?: string }): void;\n    deleteNodes(ids: Set<string>): void;\n    deleteLinks(ids: Set<string>): void;\n    addLink(source: string, target: string): void;\n    addNode(id: string, kind: OntologyNodeKind): void;\n}\n\ninterface OntologyEditorBodyProps {\n    ontology: OntologyValue;\n    readonly: boolean;\n    hideMiniMap: boolean;\n    hideSearch: boolean;\n    handlers: OntologyMutationHandlers;\n}\n\nfunction OntologyEditorBody({\n    ontology, readonly, hideMiniMap, hideSearch, handlers,\n}: OntologyEditorBodyProps) {\n    const [searchQuery, setSearchQuery] = useState('');\n    const [focusedNodeId, setFocusedNodeId] = useState<string | null>(null);\n    const [selectedNodeId, setSelectedNodeId] = useState<string | null>(null);\n    // Context-menu anchors (screen coords); null = closed.\n    const [paneMenu, setPaneMenu] = useState<{ x: number; y: number } | null>(null);\n    const [nodeMenu, setNodeMenu] = useState<{ x: number; y: number; nodeId: string } | null>(null);\n    const [edgeMenu, setEdgeMenu] = useState<{ x: number; y: number; edgeId: string } | null>(null);\n\n    const flat = useMemo(() => flattenOntology(ontology), [ontology]);\n\n    const mutations = useMemo(() => ({\n        deleteNodes: (ids: Set<string>) => { if (!readonly) handlers.deleteNodes(ids); },\n        deleteLinks: (ids: Set<string>) => { if (!readonly) handlers.deleteLinks(ids); },\n    }), [readonly, handlers]);\n\n    const onConnect = useCallback((conn: Connection) => {\n        if (readonly || !conn.source || !conn.target) return;\n        handlers.addLink(conn.source, conn.target);\n    }, [readonly, handlers]);\n\n    const { nodes: flowNodes, edges: flowEdges, onNodesChange, onEdgesChange, screenToFlowPosition, setNodePosition } =\n        useFlowState({ flatNodes: flat.nodes, flatLinks: flat.links, mutations });\n\n    const closeMenus = useCallback(() => {\n        setPaneMenu(null);\n        setNodeMenu(null);\n        setEdgeMenu(null);\n    }, []);\n\n    const onPaneContextMenu = useCallback((event: MouseEvent | React.MouseEvent) => {\n        if (readonly) return;\n        event.preventDefault();\n        setNodeMenu(null);\n        setEdgeMenu(null);\n        setPaneMenu({ x: event.clientX, y: event.clientY });\n    }, [readonly]);\n\n    const onNodeContextMenu = useCallback((event: React.MouseEvent, node: FlowNode) => {\n        if (readonly) return;\n        event.preventDefault();\n        setPaneMenu(null);\n        setEdgeMenu(null);\n        setNodeMenu({ x: event.clientX, y: event.clientY, nodeId: node.id });\n    }, [readonly]);\n\n    const onEdgeContextMenu = useCallback((event: React.MouseEvent, edge: { id: string }) => {\n        if (readonly) return;\n        event.preventDefault();\n        setPaneMenu(null);\n        setNodeMenu(null);\n        setEdgeMenu({ x: event.clientX, y: event.clientY, edgeId: edge.id });\n    }, [readonly]);\n\n    const onAddNode = useCallback((kind: OntologyNodeKind) => {\n        if (!paneMenu) return;\n        const id = freshNodeId();\n        setNodePosition(id, screenToFlowPosition({ x: paneMenu.x, y: paneMenu.y }));\n        handlers.addNode(id, kind);\n        setPaneMenu(null);\n        setSelectedNodeId(id);\n    }, [paneMenu, screenToFlowPosition, setNodePosition, handlers]);\n\n    // Search match resolution.\n    const searchMatchIds = useMemo<Set<string> | null>(() => {\n        const q = searchQuery.trim().toLowerCase();\n        if (!q) return null;\n        const matched = new Set<string>();\n        for (const n of flowNodes) {\n            const data = n.data as OntologyFlowNodeData;\n            if (\n                data.name.toLowerCase().includes(q) ||\n                data.type.toLowerCase().includes(q) ||\n                (data.description && data.description.toLowerCase().includes(q))\n            ) {\n                matched.add(n.id);\n            }\n        }\n        return matched;\n    }, [flowNodes, searchQuery]);\n\n    // Focus / dim derived nodes + edges (search wins over click focus).\n    const displayNodes = useMemo(() => {\n        const focusSet = searchMatchIds ?? (focusedNodeId ? new Set([focusedNodeId]) : null);\n        if (!focusSet) return flowNodes;\n        const connected = new Set<string>(focusSet);\n        for (const e of flowEdges) {\n            if (focusSet.has(e.source) || focusSet.has(e.target)) {\n                connected.add(e.source);\n                connected.add(e.target);\n            }\n        }\n        return flowNodes.map(n => ({\n            ...n,\n            data: {\n                ...n.data,\n                attention: focusSet.has(n.id)\n                    ? ('focused' as const)\n                    : connected.has(n.id)\n                        ? ('normal' as const)\n                        : ('unfocused' as const),\n            },\n        }));\n    }, [flowNodes, flowEdges, focusedNodeId, searchMatchIds]);\n\n    const displayEdges = useMemo(() => {\n        const focusSet = searchMatchIds ?? (focusedNodeId ? new Set([focusedNodeId]) : null);\n        if (!focusSet) return flowEdges;\n        return flowEdges.map(e => ({\n            ...e,\n            data: {\n                ...e.data!,\n                attention: (focusSet.has(e.source) || focusSet.has(e.target))\n                    ? ('focused' as const)\n                    : ('unfocused' as const),\n            },\n        }));\n    }, [flowEdges, focusedNodeId, searchMatchIds]);\n\n    const onNodeClick = useCallback((_: React.MouseEvent, node: FlowNode) => {\n        setSearchQuery('');\n        setFocusedNodeId(prev => prev === node.id ? null : node.id);\n    }, []);\n\n    const onNodeDoubleClick = useCallback((_: React.MouseEvent, node: FlowNode) => {\n        if (readonly) return;\n        setSelectedNodeId(node.id);\n    }, [readonly]);\n\n    const onPaneClick = useCallback(() => {\n        setFocusedNodeId(null);\n        closeMenus();\n    }, [closeMenus]);\n\n    const proOptions = useMemo(() => ({ hideAttribution: true }), []);\n    const miniMapNodeColor = useCallback((node: FlowNode) => {\n        const data = node.data as OntologyFlowNodeData;\n        const accent: Record<string, string> = {\n            process:     '#3a7780',\n            computation: '#42757d',\n            decision:    '#2b4b55',\n            objective:   '#253333',\n            kpi:         '#2f7a5b',\n            agent:       '#6d5a7a',\n            data:        '#b8862d',\n            resource:    '#56727a',\n            policy:      '#8d7a5f',\n            document:    '#bcd1d3',\n            group:       '#4a5f5f',\n        };\n        return accent[data.type] ?? '#6b8080';\n    }, []);\n\n    const getNode = useCallback(\n        (id: string): OntologyNodeValue | undefined => ontology.nodes.find(n => n.id === id),\n        [ontology],\n    );\n\n    return (\n        <>\n            {!hideSearch && (\n                <Box position=\"absolute\" top=\"2\" left=\"2\" right=\"2\" zIndex={10}>\n                    <HStack gap=\"2\">\n                        <Box position=\"relative\" flex=\"1\">\n                            <Box position=\"absolute\" left=\"2\" top=\"50%\" transform=\"translateY(-50%)\" color=\"fg.subtle\" zIndex={1} pointerEvents=\"none\">\n                                <FiSearch size={14} />\n                            </Box>\n                            <Input\n                                size=\"sm\"\n                                placeholder=\"Search nodes…\"\n                                value={searchQuery}\n                                onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n                                    setSearchQuery(e.target.value);\n                                    setFocusedNodeId(null);\n                                }}\n                                bg=\"bg.surface\"\n                                borderRadius=\"sm\"\n                                border=\"1px solid\"\n                                borderColor={searchMatchIds ? (searchMatchIds.size > 0 ? 'brand.solid' : 'ink.danger') : 'border.subtle'}\n                                pl=\"8\"\n                                pr={searchQuery ? '8' : '3'}\n                            />\n                            {searchQuery && (\n                                <Box\n                                    position=\"absolute\" right=\"2\" top=\"50%\" transform=\"translateY(-50%)\"\n                                    cursor=\"pointer\" color=\"fg.subtle\" zIndex={1}\n                                    onClick={() => setSearchQuery('')}\n                                    _hover={{ color: 'fg' }}\n                                >\n                                    <FiX size={14} />\n                                </Box>\n                            )}\n                            {searchMatchIds && (\n                                <Box position=\"absolute\" right={searchQuery ? '8' : '2'} top=\"50%\" transform=\"translateY(-50%)\" zIndex={1} pointerEvents=\"none\">\n                                    <Text fontFamily=\"mono\" fontSize=\"2xs\" color={searchMatchIds.size > 0 ? 'brand.fg' : 'ink.danger'}>\n                                        {searchMatchIds.size}\n                                    </Text>\n                                </Box>\n                            )}\n                        </Box>\n                    </HStack>\n                </Box>\n            )}\n\n            <Box h=\"100%\" w=\"100%\">\n                <ReactFlow\n                    nodes={displayNodes}\n                    edges={displayEdges}\n                    nodeTypes={NODE_TYPES}\n                    edgeTypes={EDGE_TYPES}\n                    onNodesChange={onNodesChange}\n                    onEdgesChange={onEdgesChange}\n                    onConnect={onConnect}\n                    onNodeClick={onNodeClick}\n                    onNodeDoubleClick={onNodeDoubleClick}\n                    onPaneClick={onPaneClick}\n                    onPaneContextMenu={onPaneContextMenu}\n                    onNodeContextMenu={onNodeContextMenu}\n                    onEdgeContextMenu={onEdgeContextMenu}\n                    minZoom={0.1}\n                    maxZoom={2}\n                    proOptions={proOptions}\n                    deleteKeyCode={null}\n                    nodesDraggable={!readonly}\n                    nodesConnectable={!readonly}\n                    elementsSelectable\n                    fitView\n                >\n                    {/* Dual line-grid per the schematic `.sch-canvas` spec:\n                        minor 24px + major 120px lines in `rule` (gray.200) at\n                        35% / 80% — gives the surface graph-paper texture so\n                        white node cards read clearly against it (esp. over\n                        video). */}\n                    <Background id=\"ont-minor\" variant={BackgroundVariant.Lines} gap={24} lineWidth={1} color=\"rgba(226, 232, 232, 0.35)\" />\n                    <Background id=\"ont-major\" variant={BackgroundVariant.Lines} gap={120} lineWidth={1} color=\"rgba(226, 232, 232, 0.8)\" />\n                    <Controls />\n                    {!hideMiniMap && <MiniMap nodeColor={miniMapNodeColor} maskColor=\"rgba(17, 27, 34, 0.10)\" />}\n                </ReactFlow>\n            </Box>\n\n            <NodePropertiesDrawer\n                nodeId={selectedNodeId}\n                getNode={getNode}\n                onClose={() => setSelectedNodeId(null)}\n                onUpdate={readonly ? null : handlers.updateNode}\n                onDelete={readonly ? null : (id) => handlers.deleteNodes(new Set([id]))}\n            />\n\n            {/* Pane context menu — add a node of the chosen kind at the cursor. */}\n            {paneMenu && (\n                <Menu.Root\n                    open\n                    onOpenChange={(d) => { if (!d.open) setPaneMenu(null); }}\n                    positioning={{ placement: 'bottom-start', getAnchorRect: () => ({ x: paneMenu.x, y: paneMenu.y, width: 0, height: 0 }) }}\n                >\n                    <Portal>\n                        <Menu.Positioner>\n                            <Menu.Content minW=\"180px\">\n                                <Menu.ItemGroup>\n                                    <Menu.ItemGroupLabel\n                                        fontFamily=\"mono\" fontSize=\"2xs\" fontWeight=\"bold\"\n                                        letterSpacing=\"widest\" textTransform=\"uppercase\" color=\"fg.subtle\"\n                                    >\n                                        Add node\n                                    </Menu.ItemGroupLabel>\n                                    {ALL_NODE_KINDS.map(kind => (\n                                        <Menu.Item key={kind} value={kind} onClick={() => onAddNode(kind)}>\n                                            <HStack gap=\"2\">\n                                                <Box w=\"8px\" h=\"8px\" borderRadius=\"full\" bg={NODE_KIND_ACCENT[kind]} flexShrink={0} />\n                                                <Text fontSize=\"sm\" textTransform=\"capitalize\">{kind}</Text>\n                                            </HStack>\n                                        </Menu.Item>\n                                    ))}\n                                </Menu.ItemGroup>\n                            </Menu.Content>\n                        </Menu.Positioner>\n                    </Portal>\n                </Menu.Root>\n            )}\n\n            {/* Node context menu — edit properties or delete. */}\n            {nodeMenu && (\n                <Menu.Root\n                    open\n                    onOpenChange={(d) => { if (!d.open) setNodeMenu(null); }}\n                    positioning={{ placement: 'bottom-start', getAnchorRect: () => ({ x: nodeMenu.x, y: nodeMenu.y, width: 0, height: 0 }) }}\n                >\n                    <Portal>\n                        <Menu.Positioner>\n                            <Menu.Content minW=\"180px\">\n                                <Menu.Item value=\"edit\" onClick={() => { setSelectedNodeId(nodeMenu.nodeId); setNodeMenu(null); }}>\n                                    Edit properties\n                                </Menu.Item>\n                                <Menu.Separator />\n                                <Menu.Item\n                                    value=\"delete\"\n                                    color=\"ink.danger\"\n                                    onClick={() => { handlers.deleteNodes(new Set([nodeMenu.nodeId])); setNodeMenu(null); }}\n                                >\n                                    Delete node\n                                </Menu.Item>\n                            </Menu.Content>\n                        </Menu.Positioner>\n                    </Portal>\n                </Menu.Root>\n            )}\n\n            {/* Edge context menu — delete link. */}\n            {edgeMenu && (\n                <Menu.Root\n                    open\n                    onOpenChange={(d) => { if (!d.open) setEdgeMenu(null); }}\n                    positioning={{ placement: 'bottom-start', getAnchorRect: () => ({ x: edgeMenu.x, y: edgeMenu.y, width: 0, height: 0 }) }}\n                >\n                    <Portal>\n                        <Menu.Positioner>\n                            <Menu.Content minW=\"160px\">\n                                <Menu.Item\n                                    value=\"delete\"\n                                    color=\"ink.danger\"\n                                    onClick={() => { handlers.deleteLinks(new Set([edgeMenu.edgeId])); setEdgeMenu(null); }}\n                                >\n                                    Delete link\n                                </Menu.Item>\n                            </Menu.Content>\n                        </Menu.Positioner>\n                    </Portal>\n                </Menu.Root>\n            )}\n        </>\n    );\n}\n\nconst EastChakraOntology = memo(function EastChakraOntology({ value }: EastChakraOntologyProps) {\n    const binding = value.binding as ValueTypeOf<typeof Ontology.Component.schema>['binding'];\n    // The editor mutates the binding directly (direct mode writes through;\n    // staged mode buffers for a paired Diff to review/commit). It has no\n    // commit affordance of its own, so `commit`/`discard` aren't consumed\n    // here — `pending` is surfaced as a header hint only.\n    const { ontology, pending, mutate } = useBindingOntology(binding);\n    const readonly = getOpt(value.readonly) ?? false;\n    const hideMiniMap = getOpt(value.hideMiniMap) ?? false;\n    const hideSearch = getOpt(value.hideSearch) ?? false;\n    const defaultView = getOpt(value.defaultView)?.type ?? 'graph';\n    const [view, setView] = useState<'graph' | 'table'>(defaultView);\n    // Node selected from the table view — opens the shared properties drawer.\n    const [tableSelectedId, setTableSelectedId] = useState<string | null>(null);\n\n    const handlers = useMemo<OntologyMutationHandlers>(() => {\n        const transform = (fn: (curr: OntologyValue) => OntologyValue) => {\n            if (!ontology) return;\n            mutate(fn(ontology));\n        };\n\n        return {\n            updateNode: (id, updates) => transform(curr => {\n                const ntMap = new Map(curr.nodes.map(n => [n.id, n.type.type]));\n                if (updates.type) ntMap.set(id, updates.type);\n                const nextNodes: OntologyNodeValue[] = curr.nodes.map(n => {\n                    if (n.id !== id) return n;\n                    const desc = updates.description !== undefined\n                        ? (updates.description === '' ? none : some(updates.description))\n                        : n.description;\n                    return {\n                        ...n,\n                        name: updates.name ?? n.name,\n                        description: desc,\n                        type: updates.type ? variant(updates.type, null) : n.type,\n                    };\n                });\n                // If a node's kind changed, drop links whose new endpoint\n                // combination has no valid relation (matches the webview's\n                // `reconcileLinks` semantics).\n                const nextLinks: OntologyLinkValue[] = curr.links.flatMap(link => {\n                    if (link.source !== id && link.target !== id) return [link];\n                    const valid = ValidLinks[ntMap.get(link.source)!]?.[ntMap.get(link.target)!];\n                    if (!valid) return [];\n                    return [link];\n                });\n                return { ...curr, nodes: nextNodes, links: nextLinks };\n            }),\n\n            deleteNodes: (ids) => transform(curr => ({\n                ...curr,\n                nodes: curr.nodes.filter(n => !ids.has(n.id)),\n                links: curr.links.filter(l => !ids.has(l.source) && !ids.has(l.target)),\n            })),\n\n            deleteLinks: (ids) => transform(curr => ({\n                ...curr,\n                links: curr.links.filter(l => !ids.has(l.id)),\n            })),\n\n            addLink: (source, target) => transform(curr => {\n                const srcKind = curr.nodes.find(n => n.id === source)?.type.type;\n                const tgtKind = curr.nodes.find(n => n.id === target)?.type.type;\n                if (!srcKind || !tgtKind) return curr;\n                const linkKind = ValidLinks[srcKind][tgtKind];\n                if (!linkKind) return curr;\n                const newLink: OntologyLinkValue = {\n                    id: nextLinkId(curr.links),\n                    source,\n                    target,\n                    type: variant(linkKind, null),\n                };\n                return { ...curr, links: [...curr.links, newLink] };\n            }),\n\n            addNode: (id, kind) => transform(curr => {\n                const newNode: OntologyNodeValue = {\n                    id,\n                    name: `New ${kind}`,\n                    description: none,\n                    type: variant(kind, null),\n                };\n                return { ...curr, nodes: [...curr.nodes, newNode] };\n            }),\n        };\n    }, [ontology, mutate]);\n\n    if (!ontology) {\n        return (\n            <Box\n                bg=\"bg.surface\" border=\"1px solid\" borderColor=\"border.subtle\" borderRadius=\"lg\"\n                p=\"9\" textAlign=\"center\"\n            >\n                <Text fontFamily=\"mono\" fontSize=\"md\" color=\"fg.subtle\">\n                    Loading ontology…\n                </Text>\n            </Box>\n        );\n    }\n\n    const nodeCount = ontology.nodes.length;\n    const linkCount = ontology.links.length;\n    const getNode = (id: string): OntologyNodeValue | undefined => ontology.nodes.find(n => n.id === id);\n\n    return (\n        <Box\n            bg=\"bg.surface\"\n            border=\"1px solid\"\n            borderColor=\"border.subtle\"\n            borderRadius=\"lg\"\n            overflow=\"hidden\"\n            display=\"flex\"\n            flexDirection=\"column\"\n            h=\"600px\"\n            fontFeatureSettings='\"tnum\"'\n        >\n            {/* xyflow base stylesheet, injected via emotion (deduped by content)\n                so the graph renders wherever the component is mounted. */}\n            <Global styles={xyflowCss} />\n            {/* eyebrow header */}\n            <HStack\n                px=\"4\" py=\"3\"\n                borderBottom=\"1px solid\" borderColor=\"border.subtle\"\n                bg=\"bg.panel\"\n                justify=\"space-between\"\n            >\n                <HStack gap=\"3\">\n                    <Text fontFamily=\"mono\" fontSize=\"xs\" fontWeight=\"semibold\" letterSpacing=\"widest\" textTransform=\"uppercase\" color=\"fg\">\n                        Ontology\n                    </Text>\n                    <Text fontFamily=\"mono\" fontSize=\"2xs\" letterSpacing=\"wider\" color=\"fg.muted\">\n                        {nodeCount} NODES · {linkCount} LINKS\n                    </Text>\n                </HStack>\n                <HStack gap=\"3\">\n                    {pending && (\n                        <Text fontFamily=\"mono\" fontSize=\"2xs\" letterSpacing=\"wider\" textTransform=\"uppercase\" color=\"ink.warning\">\n                            Unsaved changes\n                        </Text>\n                    )}\n                    {/* Graph | Table — both are projections of the same bound\n                        value; the staged buffer and commit machinery are\n                        view-agnostic. */}\n                    <SegmentGroup.Root\n                        size=\"xs\"\n                        value={view}\n                        onValueChange={(e: { value: string | null }) => {\n                            if (e.value === 'graph' || e.value === 'table') setView(e.value);\n                        }}\n                    >\n                        <SegmentGroup.Indicator />\n                        <SegmentGroup.Item value=\"graph\">\n                            <SegmentGroup.ItemText>\n                                <HStack gap=\"1.5\"><FiShare2 size={11} /> Graph</HStack>\n                            </SegmentGroup.ItemText>\n                            <SegmentGroup.ItemHiddenInput />\n                        </SegmentGroup.Item>\n                        <SegmentGroup.Item value=\"table\">\n                            <SegmentGroup.ItemText>\n                                <HStack gap=\"1.5\"><FiList size={11} /> Table</HStack>\n                            </SegmentGroup.ItemText>\n                            <SegmentGroup.ItemHiddenInput />\n                        </SegmentGroup.Item>\n                    </SegmentGroup.Root>\n                </HStack>\n            </HStack>\n\n            {/* body — graph canvas or process table */}\n            <Box flex=\"1\" position=\"relative\" bg=\"bg.panel\" minH=\"0\">\n                {view === 'graph' ? (\n                    <ReactFlowProvider>\n                        <OntologyEditorBody\n                            ontology={ontology}\n                            readonly={readonly}\n                            hideMiniMap={hideMiniMap}\n                            hideSearch={hideSearch}\n                            handlers={handlers}\n                        />\n                    </ReactFlowProvider>\n                ) : (\n                    <>\n                        <OntologyTable ontology={ontology} onSelectNode={setTableSelectedId} />\n                        <NodePropertiesDrawer\n                            nodeId={tableSelectedId}\n                            getNode={getNode}\n                            onClose={() => setTableSelectedId(null)}\n                            onUpdate={readonly ? null : handlers.updateNode}\n                            onDelete={readonly ? null : (id) => { handlers.deleteNodes(new Set([id])); setTableSelectedId(null); }}\n                        />\n                    </>\n                )}\n            </Box>\n        </Box>\n    );\n});\n\nimplementUIComponent(Ontology.Component, EastChakraOntology);\n\nexport { EastChakraOntology };\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * React-side binding integration for the Experiment surface.\n *\n * `useBindingValue<T>(binding)` is a thin reactive wrapper over the shared\n * `BindRuntime.buildBindHandle` — the same handle that powers every other\n * `Data.bind` consumer. It builds the handle for the binding's\n * `(sourceType, source, patch, mode)`, subscribes to the staged store + reactive\n * dataset cache so the surface re-renders on edits, and exposes the value plus\n * `mutate` / `commit` / `discard`.\n *\n * Generic over the bound value type and tolerant of a `null` binding (so the\n * caller can hand it an absent optional binding without violating the rules of\n * hooks). Returns `value: null` until the binding has run.\n *\n * @packageDocumentation\n */\n\nimport { useCallback, useMemo, useSyncExternalStore } from 'react';\nimport { type ValueTypeOf } from '@elaraai/east';\nimport type { TreePath } from '@elaraai/e3-types';\nimport { DiffBindingType } from '@elaraai/e3-ui/internal';\nimport {\n    defaultBindRuntime,\n    getBindingTypes,\n    getReactiveDatasetCache,\n    getStagedStore,\n    awaitPendingWrites,\n    datasetCacheKey,\n    type BindHandle,\n} from '../platform/index.js';\n\ntype DiffBindingValue = ValueTypeOf<typeof DiffBindingType>;\n\nconst EMPTY_PATH = [] as unknown as TreePath;\n\nexport interface UseBindingValueResult<T> {\n    /** Current value (buffered if staged, otherwise server). `null` until the\n     *  binding has run or if the binding is absent. */\n    value: T | null;\n    /** The binding's write mode — `'staged'` buffers edits until `commit()`,\n     *  `'direct'` writes through. `'direct'` when the binding is absent. */\n    mode: 'staged' | 'direct';\n    /** True when there is an in-flight staged change. */\n    pending: boolean;\n    /** The read/decode error if the bound value failed to resolve (else `undefined`).\n     *  Surfaced so a binding failure shows an error instead of a perpetual \"loading\". */\n    error: unknown;\n    /** Replace the bound value (staged buffers, direct writes through). */\n    mutate: (next: T) => void;\n    /** Resolve the in-flight change. */\n    commit: () => Promise<void>;\n    /** Drop the in-flight change. */\n    discard: () => void;\n}\n\n/** Subscribe to a binding's source (+ patch) version on both stores. */\nfunction useBindingVersion(\n    workspace: string,\n    sourcePath: TreePath,\n    patchPath: TreePath | undefined,\n): number {\n    const staged = getStagedStore();\n    const cache = getReactiveDatasetCache();\n    const keys = useMemo(() => {\n        const ks = [datasetCacheKey(workspace, sourcePath)];\n        if (patchPath) ks.push(datasetCacheKey(workspace, patchPath));\n        return ks;\n    }, [workspace, sourcePath, patchPath]);\n    const subscribe = useCallback((cb: () => void) => {\n        const unsubs = keys.flatMap(k => [staged.subscribe(k, cb), cache.subscribe(k, cb)]);\n        return () => { for (const u of unsubs) u(); };\n    }, [staged, cache, keys]);\n    const getSnapshot = useCallback(\n        () => keys.reduce((sum, k) => sum + staged.getKeyVersion(k) + cache.getKeyVersion(k), 0),\n        [staged, cache, keys],\n    );\n    return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/**\n * Resolve a {@link DiffBindingType} value (or `null`) into a live, reactive\n * value of type `T`, delegating to the shared bind runtime.\n */\nexport function useBindingValue<T>(binding: DiffBindingValue | null): UseBindingValueResult<T> {\n    const cache = getReactiveDatasetCache();\n    const workspace = cache.getConfig().workspace ?? '';\n    const sourcePath = (binding ? binding.source : EMPTY_PATH) as TreePath;\n    const mode = binding ? binding.mode.type : 'direct';\n    const patchPath = binding && binding.patch.type === 'some'\n        ? (binding.patch.value as TreePath)\n        : undefined;\n\n    const version = useBindingVersion(workspace, sourcePath, patchPath);\n\n    const handle = useMemo<BindHandle | null>(() => {\n        if (!binding) return null;\n        const types = getBindingTypes(workspace, sourcePath);\n        if (!types) return null;\n        return defaultBindRuntime.buildBindHandle(types.sourceType, sourcePath, patchPath, mode);\n    }, [binding, workspace, sourcePath, patchPath, mode]);\n\n    const { value, pending, error } = useMemo(() => {\n        if (!handle || !handle.has()) return { value: null as T | null, pending: false, error: undefined as unknown };\n        try {\n            return { value: handle.read() as T, pending: handle.pending(), error: undefined as unknown };\n        } catch (e) {\n            // Surface the read/decode failure instead of swallowing it into a perpetual\n            // \"loading\" state — the renderer shows the error and devtools shows the cause.\n            console.error(`[Experiment] failed to read binding \"${String(sourcePath)}\":`, e);\n            return { value: null as T | null, pending: false, error: e };\n        }\n        // `version` drives recompute when buffers / server values change.\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [handle, version]);\n\n    const mutate = useCallback((next: T) => { handle?.write(next); }, [handle]);\n    const commit = useCallback(async (): Promise<void> => {\n        handle?.commit();\n        await awaitPendingWrites();\n    }, [handle]);\n    const discard = useCallback(() => { handle?.discard(); }, [handle]);\n\n    return { value, mode, pending, error, mutate, commit, discard };\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Imperative `Func.bind` orchestration for the Experiment surface's **Run**.\n *\n * The surface receives only the function *name* in its payload\n * ({@link FuncBindingType}), not a live handle — the bound function runs after\n * the user edits the spec, so the renderer rebuilds the call handle itself. This\n * hook reconstructs the handle's signature from the bound data's row type\n * (recovered via `getBindingTypes`) plus the e3-ui-owned contract types, builds\n * a handle on the shared {@link defaultFuncRuntime}, subscribes to its tracked\n * channel, and exposes `call` / `result` / `status` / `pending` for React.\n *\n * All handles bound to the same `(workspace, name)` share one channel, so the\n * three calls (estimate / refute / dose) observe independently and re-render the\n * surface as each settles — exactly the launch/observe split `Func.bind` uses.\n *\n * @packageDocumentation\n */\n\nimport { useCallback, useMemo, useSyncExternalStore } from 'react';\nimport { toEastTypeValue, type EastType } from '@elaraai/east';\nimport { FuncBindHandleType } from '@elaraai/e3-ui/internal';\nimport {\n    defaultFuncRuntime,\n    funcChannelKey,\n    getReactiveDatasetCache,\n} from '../platform/index.js';\n\n/** Lifecycle of the most recent call on a bound function's channel. */\nexport type FuncStatus = 'idle' | 'running' | 'succeeded' | 'failed' | 'cancelled';\n\n/** A failed call's detail (the runner's outcome + captured output tails). */\nexport interface FuncCallError { kind: string; message: string; stdout: string; stderr: string }\n\n/** What {@link useFuncCall} returns for one bound function. */\nexport interface FuncCall<R> {\n    /** Launch the call, fire-and-forget (latest-wins). No-op when not ready. */\n    call: (...args: unknown[]) => void;\n    /** Last successful result, or `null` until the first success. */\n    result: R | null;\n    /** Lifecycle of the most recent call. */\n    status: FuncStatus;\n    /** True while a call is in flight. */\n    pending: boolean;\n    /** Failure detail when the most recent call failed, else `null`. */\n    error: FuncCallError | null;\n}\n\ntype RawHandle = {\n    call: (...a: unknown[]) => null;\n    read: () => { type: 'some' | 'none'; value: unknown };\n    status: () => { type: FuncStatus };\n    pending: () => boolean;\n    error: () => { type: 'some' | 'none'; value: unknown };\n};\n\nconst IDLE: FuncCall<never> = { call: () => {}, result: null, status: 'idle', pending: false, error: null };\n\n/**\n * Build + observe a reactive call handle for a named workspace function.\n *\n * @typeParam R - The function's return type (decoded JS shape).\n * @param name - The bound function name, or `null` when the binding is absent\n *   (the hook degrades to an inert idle handle — safe for the rules of hooks).\n * @param inputs - The positional parameter East types (e.g. `[Array(Row), Spec]`).\n *   `null` until the row type is known.\n * @param output - The return East type.\n * @returns A {@link FuncCall} — stable `call` plus the reactive `result` /\n *   `status` / `pending` of this function's shared channel.\n */\nexport function useFuncCall<R>(\n    name: string | null,\n    inputs: EastType[] | null,\n    output: EastType,\n): FuncCall<R> {\n    const workspace = getReactiveDatasetCache().getConfig().workspace ?? '';\n    const ready = !!name && !!inputs && workspace !== '';\n\n    // A structural key over the signature so the handle memo only rebuilds when\n    // the signature actually changes (inputs/output are fresh objects each\n    // render, but their type *values* are stable).\n    const sigKey = useMemo(\n        () => (ready ? JSON.stringify([inputs!.map(t => toEastTypeValue(t)), toEastTypeValue(output)]) : ''),\n        [ready, inputs, output],\n    );\n\n    const handle = useMemo<RawHandle | null>(() => {\n        if (!ready) return null;\n        const handleType = toEastTypeValue(FuncBindHandleType(inputs!, output));\n        return defaultFuncRuntime.buildHandle(handleType, name!) as RawHandle;\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [ready, name, workspace, sigKey]);\n\n    const channelKey = ready ? funcChannelKey(workspace, name!) : '';\n    const version = useSyncExternalStore(\n        useCallback(\n            (cb: () => void) => (channelKey ? defaultFuncRuntime.subscribe(channelKey, cb) : () => {}),\n            [channelKey],\n        ),\n        useCallback(() => (channelKey ? defaultFuncRuntime.getKeyVersion(channelKey) : 0), [channelKey]),\n    );\n\n    return useMemo<FuncCall<R>>(() => {\n        if (!handle) return IDLE;\n        let result: R | null = null;\n        let status: FuncStatus = 'idle';\n        let pending = false;\n        let error: FuncCallError | null = null;\n        try {\n            const read = handle.read();\n            result = read.type === 'some' ? (read.value as R) : null;\n            status = handle.status().type;\n            pending = handle.pending();\n            const err = handle.error();\n            if (err.type === 'some') {\n                const v = err.value as { kind?: { type?: string }; message?: string; stdout?: string; stderr?: string };\n                error = { kind: v.kind?.type ?? 'failed', message: v.message ?? '', stdout: v.stdout ?? '', stderr: v.stderr ?? '' };\n            }\n        } catch {\n            // Workspace not yet resolvable — treat as idle.\n        }\n        return { call: (...args: unknown[]) => { try { handle.call(...args); } catch { /* not ready */ } }, result, status, pending, error };\n        // `version` drives recompute as the channel advances.\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [handle, version]);\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n  var has = require('./lib/has');\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (process.env.NODE_ENV !== 'production') {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import _pt from \"prop-types\";\nvar _excluded = [\"top\", \"left\", \"transform\", \"className\", \"children\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Group(_ref) {\n  var _ref$top = _ref.top,\n    top = _ref$top === void 0 ? 0 : _ref$top,\n    _ref$left = _ref.left,\n    left = _ref$left === void 0 ? 0 : _ref$left,\n    transform = _ref.transform,\n    className = _ref.className,\n    children = _ref.children,\n    innerRef = _ref.innerRef,\n    restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n  return /*#__PURE__*/React.createElement(\"g\", _extends({\n    ref: innerRef,\n    className: cx('visx-group', className),\n    transform: transform || \"translate(\" + left + \", \" + top + \")\"\n  }, restProps), children);\n}\nGroup.propTypes = {\n  top: _pt.number,\n  left: _pt.number,\n  transform: _pt.string,\n  className: _pt.string,\n  children: _pt.node,\n  innerRef: _pt.oneOfType([_pt.string, _pt.func, _pt.object])\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","export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can’t do this\n  // for a comparator (except for specific, known comparators) because we can’t\n  // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\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\nfunction zero() {\n  return 0;\n}\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","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","const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\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","export default function constants(x) {\n  return function() {\n    return x;\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(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 (!isFinite(x) || x === 0) return null; // NaN, ±Infinity, ±0\n  var i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\"), 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","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","// [[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","// 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 {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return prefixExponent = undefined, x.toPrecision(p);\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  \"%\": (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, options) {\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 = (options && options.prefix !== undefined ? options.prefix : \"\") + (symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\"),\n        suffix = (symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\") + (options && options.suffix !== undefined ? options.suffix : \"\");\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\" && !isNaN(value) && prefixExponent !== undefined ? 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 e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier), {suffix: prefixes[8 + e / 3]});\n    return function(value) {\n      return f(k * value);\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 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","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 {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","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(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 = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\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    let previous;\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 = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (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 = (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 = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => 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 {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\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 const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n","export default function applyDomain(scale, config) {\n  if (config.domain) {\n    if ('nice' in scale || 'quantiles' in scale) {\n      // continuous input scales\n      scale.domain(config.domain);\n    } else if ('padding' in scale) {\n      // point and band scales\n      scale.domain(config.domain);\n    } else {\n      // ordinal and threshold scale\n      scale.domain(config.domain);\n    }\n  }\n}","export default function applyRange(scale, config) {\n  if (config.range) {\n    if ('padding' in scale) {\n      // point and band scales\n      scale.range(config.range);\n    } else {\n      // the rest\n      scale.range(config.range);\n    }\n  }\n}","export default function applyAlign(scale, config) {\n  if ('align' in scale && 'align' in config && typeof config.align !== 'undefined') {\n    scale.align(config.align);\n  }\n}","export default function applyBase(scale, config) {\n  if ('base' in scale && 'base' in config && typeof config.base !== 'undefined') {\n    scale.base(config.base);\n  }\n}","export default function applyClamp(scale, config) {\n  if ('clamp' in scale && 'clamp' in config && typeof config.clamp !== 'undefined') {\n    scale.clamp(config.clamp);\n  }\n}","export default function applyConstant(scale, config) {\n  if ('constant' in scale && 'constant' in config && typeof config.constant !== 'undefined') {\n    scale.constant(config.constant);\n  }\n}","export default function applyExponent(scale, config) {\n  if ('exponent' in scale && 'exponent' in config && typeof config.exponent !== 'undefined') {\n    scale.exponent(config.exponent);\n  }\n}","import { interpolateRgb, interpolateLab, interpolateHcl, interpolateHclLong, interpolateHsl, interpolateHslLong, interpolateCubehelix, interpolateCubehelixLong } from '@visx/vendor/d3-interpolate';\nvar interpolatorMap = {\n  lab: interpolateLab,\n  hcl: interpolateHcl,\n  'hcl-long': interpolateHclLong,\n  hsl: interpolateHsl,\n  'hsl-long': interpolateHslLong,\n  cubehelix: interpolateCubehelix,\n  'cubehelix-long': interpolateCubehelixLong,\n  rgb: interpolateRgb\n};\nexport default function createColorInterpolator(interpolate) {\n  switch (interpolate) {\n    case 'lab':\n    case 'hcl':\n    case 'hcl-long':\n    case 'hsl':\n    case 'hsl-long':\n    case 'cubehelix':\n    case 'cubehelix-long':\n    case 'rgb':\n      return interpolatorMap[interpolate];\n    default:\n  }\n  var type = interpolate.type,\n    gamma = interpolate.gamma;\n  var interpolator = interpolatorMap[type];\n  return typeof gamma === 'undefined' ? interpolator : interpolator.gamma(gamma);\n}","import createColorInterpolator from '../utils/createColorInterpolator';\nexport default function applyInterpolate(scale, config) {\n  if ('interpolate' in config && 'interpolate' in scale && typeof config.interpolate !== 'undefined') {\n    var interpolator = createColorInterpolator(config.interpolate);\n    scale.interpolate(interpolator);\n  }\n}","var TEST_TIME = new Date(Date.UTC(2020, 1, 2, 3, 4, 5));\nvar TEST_FORMAT = '%Y-%m-%d %H:%M';\n\n/**\n * Check if the scale is UTC or Time scale\n * When local time is equal to UTC, always return true\n * @param scale time or utc scale\n */\nexport default function isUtcScale(scale) {\n  // The only difference between time and utc scale is\n  // whether the tick format function is utcFormat or timeFormat\n  var output = scale.tickFormat(1, TEST_FORMAT)(TEST_TIME);\n  return output === '2020-02-02 03:04';\n}","import { timeSecond, timeMinute, timeHour, timeDay, timeYear, timeMonth, timeWeek, utcSecond, utcMinute, utcHour, utcDay, utcWeek, utcMonth, utcYear } from '@visx/vendor/d3-time';\nimport isUtcScale from '../utils/isUtcScale';\nvar localTimeIntervals = {\n  day: timeDay,\n  hour: timeHour,\n  minute: timeMinute,\n  month: timeMonth,\n  second: timeSecond,\n  week: timeWeek,\n  year: timeYear\n};\nvar utcIntervals = {\n  day: utcDay,\n  hour: utcHour,\n  minute: utcMinute,\n  month: utcMonth,\n  second: utcSecond,\n  week: utcWeek,\n  year: utcYear\n};\nexport default function applyNice(scale, config) {\n  if ('nice' in config && typeof config.nice !== 'undefined' && 'nice' in scale) {\n    var nice = config.nice;\n    if (typeof nice === 'boolean') {\n      if (nice) {\n        scale.nice();\n      }\n    } else if (typeof nice === 'number') {\n      scale.nice(nice);\n    } else {\n      var timeScale = scale;\n      var isUtc = isUtcScale(timeScale);\n      if (typeof nice === 'string') {\n        timeScale.nice(isUtc ? utcIntervals[nice] : localTimeIntervals[nice]);\n      } else {\n        var interval = nice.interval,\n          step = nice.step;\n        var parsedInterval = (isUtc ? utcIntervals[interval] : localTimeIntervals[interval]).every(step);\n        if (parsedInterval != null) {\n          timeScale.nice(parsedInterval);\n        }\n      }\n    }\n  }\n}","export default function applyPadding(scale, config) {\n  if ('padding' in scale && 'padding' in config && typeof config.padding !== 'undefined') {\n    scale.padding(config.padding);\n  }\n  if ('paddingInner' in scale && 'paddingInner' in config && typeof config.paddingInner !== 'undefined') {\n    scale.paddingInner(config.paddingInner);\n  }\n  if ('paddingOuter' in scale && 'paddingOuter' in config && typeof config.paddingOuter !== 'undefined') {\n    scale.paddingOuter(config.paddingOuter);\n  }\n}","export default function applyReverse(scale, config) {\n  if (config.reverse) {\n    var reversedRange = scale.range().slice().reverse();\n    if ('padding' in scale) {\n      // point and band scales\n      scale.range(reversedRange);\n    } else {\n      // the rest\n      scale.range(reversedRange);\n    }\n  }\n}","import { interpolateRound } from '@visx/vendor/d3-interpolate';\nexport default function applyRound(scale, config) {\n  if ('round' in config && typeof config.round !== 'undefined') {\n    if (config.round && 'interpolate' in config && typeof config.interpolate !== 'undefined') {\n      console.warn(\"[visx/scale/applyRound] ignoring round: scale config contains round and interpolate. only applying interpolate. config:\", config);\n    } else if ('round' in scale) {\n      // for point and band scales\n      scale.round(config.round);\n    } else if ('interpolate' in scale && config.round) {\n      // for continuous output scales\n      // setting config.round = true\n      // is actually setting interpolator to interpolateRound\n      // as these scales do not have scale.round() function\n      scale.interpolate(interpolateRound);\n    }\n  }\n}","export default function applyUnknown(scale, config) {\n  if ('unknown' in scale && 'unknown' in config && typeof config.unknown !== 'undefined') {\n    scale.unknown(config.unknown);\n  }\n}","export default function applyZero(scale, config) {\n  if ('zero' in config && config.zero === true) {\n    var domain = scale.domain();\n    var a = domain[0],\n      b = domain[1];\n    var isDescending = b < a;\n    var _ref = isDescending ? [b, a] : [a, b],\n      min = _ref[0],\n      max = _ref[1];\n    var domainWithZero = [Math.min(0, min), Math.max(0, max)];\n    scale.domain(isDescending ? domainWithZero.reverse() : domainWithZero);\n  }\n}","import domain from './domain';\nimport range from './range';\nimport align from './align';\nimport base from './base';\nimport clamp from './clamp';\nimport constant from './constant';\nimport exponent from './exponent';\nimport interpolate from './interpolate';\nimport nice from './nice';\nimport padding from './padding';\nimport reverse from './reverse';\nimport round from './round';\nimport unknown from './unknown';\nimport zero from './zero';\n\n/**\n * List of all operators, in order of execution\n */\nexport var ALL_OPERATORS = [\n// domain => nice => zero\n'domain', 'nice', 'zero',\n// interpolate before round\n'interpolate', 'round',\n// set range then reverse\n'range', 'reverse',\n// Order does not matter for these operators\n'align', 'base', 'clamp', 'constant', 'exponent', 'padding', 'unknown'];\n// Use Record to enforce that all keys in OperatorType must exist.\nvar operators = {\n  domain: domain,\n  nice: nice,\n  zero: zero,\n  interpolate: interpolate,\n  round: round,\n  align: align,\n  base: base,\n  clamp: clamp,\n  constant: constant,\n  exponent: exponent,\n  padding: padding,\n  range: range,\n  reverse: reverse,\n  unknown: unknown\n};\nexport default function scaleOperator() {\n  for (var _len = arguments.length, ops = new Array(_len), _key = 0; _key < _len; _key++) {\n    ops[_key] = arguments[_key];\n  }\n  var selection = new Set(ops);\n  var selectedOps = ALL_OPERATORS.filter(function (o) {\n    return selection.has(o);\n  });\n  return function applyOperators(scale, config) {\n    if (typeof config !== 'undefined') {\n      selectedOps.forEach(function (op) {\n        operators[op](scale, config);\n      });\n    }\n    return scale;\n  };\n}","import { scaleLinear } from '@visx/vendor/d3-scale';\nimport scaleOperator from '../operators/scaleOperator';\nexport var updateLinearScale = scaleOperator('domain', 'range', 'reverse', 'clamp', 'interpolate', 'nice', 'round', 'zero');\nexport default function createLinearScale(config) {\n  return updateLinearScale(scaleLinear(), config);\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","export default function(x) {\n  return function constant() {\n    return x;\n  };\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","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","/**\n * This is a workaround for TypeScript not inferring the correct\n * method overload/signature for some d3 shape methods.\n */\nexport default function setNumberOrNumberAccessor(func, value) {\n  if (typeof value === 'number') func(value);else func(value);\n}","import { arc as d3Arc, area as d3Area, line as d3Line, pie as d3Pie, radialLine as d3RadialLine, stack as d3Stack } from 'd3-shape';\nimport setNumberOrNumberAccessor from './setNumberOrNumberAccessor';\nimport stackOrder from './stackOrder';\nimport stackOffset from './stackOffset';\nexport function arc(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n    innerRadius = _ref.innerRadius,\n    outerRadius = _ref.outerRadius,\n    cornerRadius = _ref.cornerRadius,\n    startAngle = _ref.startAngle,\n    endAngle = _ref.endAngle,\n    padAngle = _ref.padAngle,\n    padRadius = _ref.padRadius;\n  var path = d3Arc();\n  if (innerRadius != null) setNumberOrNumberAccessor(path.innerRadius, innerRadius);\n  if (outerRadius != null) setNumberOrNumberAccessor(path.outerRadius, outerRadius);\n  if (cornerRadius != null) setNumberOrNumberAccessor(path.cornerRadius, cornerRadius);\n  if (startAngle != null) setNumberOrNumberAccessor(path.startAngle, startAngle);\n  if (endAngle != null) setNumberOrNumberAccessor(path.endAngle, endAngle);\n  if (padAngle != null) setNumberOrNumberAccessor(path.padAngle, padAngle);\n  if (padRadius != null) setNumberOrNumberAccessor(path.padRadius, padRadius);\n  return path;\n}\nexport function area(_temp2) {\n  var _ref2 = _temp2 === void 0 ? {} : _temp2,\n    x = _ref2.x,\n    x0 = _ref2.x0,\n    x1 = _ref2.x1,\n    y = _ref2.y,\n    y0 = _ref2.y0,\n    y1 = _ref2.y1,\n    defined = _ref2.defined,\n    curve = _ref2.curve;\n  var path = d3Area();\n  if (x) setNumberOrNumberAccessor(path.x, x);\n  if (x0) setNumberOrNumberAccessor(path.x0, x0);\n  if (x1) setNumberOrNumberAccessor(path.x1, x1);\n  if (y) setNumberOrNumberAccessor(path.y, y);\n  if (y0) setNumberOrNumberAccessor(path.y0, y0);\n  if (y1) setNumberOrNumberAccessor(path.y1, y1);\n  if (defined) path.defined(defined);\n  if (curve) path.curve(curve);\n  return path;\n}\nexport function line(_temp3) {\n  var _ref3 = _temp3 === void 0 ? {} : _temp3,\n    x = _ref3.x,\n    y = _ref3.y,\n    defined = _ref3.defined,\n    curve = _ref3.curve;\n  var path = d3Line();\n  if (x) setNumberOrNumberAccessor(path.x, x);\n  if (y) setNumberOrNumberAccessor(path.y, y);\n  if (defined) path.defined(defined);\n  if (curve) path.curve(curve);\n  return path;\n}\nexport function pie(_temp4) {\n  var _ref4 = _temp4 === void 0 ? {} : _temp4,\n    startAngle = _ref4.startAngle,\n    endAngle = _ref4.endAngle,\n    padAngle = _ref4.padAngle,\n    value = _ref4.value,\n    sort = _ref4.sort,\n    sortValues = _ref4.sortValues;\n  var path = d3Pie();\n\n  // ts can't distinguish between these method overloads\n  if (sort === null) path.sort(sort);else if (sort != null) path.sort(sort);\n  if (sortValues === null) path.sortValues(sortValues);else if (sortValues != null) path.sortValues(sortValues);\n  if (value != null) path.value(value);\n  if (padAngle != null) setNumberOrNumberAccessor(path.padAngle, padAngle);\n  if (startAngle != null) setNumberOrNumberAccessor(path.startAngle, startAngle);\n  if (endAngle != null) setNumberOrNumberAccessor(path.endAngle, endAngle);\n  return path;\n}\nexport function radialLine(_temp5) {\n  var _ref5 = _temp5 === void 0 ? {} : _temp5,\n    angle = _ref5.angle,\n    radius = _ref5.radius,\n    defined = _ref5.defined,\n    curve = _ref5.curve;\n  var path = d3RadialLine();\n  if (angle) setNumberOrNumberAccessor(path.angle, angle);\n  if (radius) setNumberOrNumberAccessor(path.radius, radius);\n  if (defined) path.defined(defined);\n  if (curve) path.curve(curve);\n  return path;\n}\nexport function stack(_ref6) {\n  var keys = _ref6.keys,\n    value = _ref6.value,\n    order = _ref6.order,\n    offset = _ref6.offset;\n  var path = d3Stack();\n  if (keys) path.keys(keys);\n  if (value) setNumberOrNumberAccessor(path.value, value);\n  if (order) path.order(stackOrder(order));\n  if (offset) path.offset(stackOffset(offset));\n  return path;\n}","var _excluded = [\"from\", \"to\", \"fill\", \"className\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Line(_ref) {\n  var _ref$from = _ref.from,\n    from = _ref$from === void 0 ? {\n      x: 0,\n      y: 0\n    } : _ref$from,\n    _ref$to = _ref.to,\n    to = _ref$to === void 0 ? {\n      x: 1,\n      y: 1\n    } : _ref$to,\n    _ref$fill = _ref.fill,\n    fill = _ref$fill === void 0 ? 'transparent' : _ref$fill,\n    className = _ref.className,\n    innerRef = _ref.innerRef,\n    restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n  var isRectilinear = from.x === to.x || from.y === to.y;\n  return /*#__PURE__*/React.createElement(\"line\", _extends({\n    ref: innerRef,\n    className: cx('visx-line', className),\n    x1: from.x,\n    y1: from.y,\n    x2: to.x,\n    y2: to.y,\n    fill: fill,\n    shapeRendering: isRectilinear ? 'crispEdges' : 'auto'\n  }, restProps));\n}","var _excluded = [\"children\", \"data\", \"x\", \"y\", \"fill\", \"className\", \"curve\", \"innerRef\", \"defined\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport cx from 'classnames';\nimport { line } from '../util/D3ShapeFactories';\nexport default function LinePath(_ref) {\n  var children = _ref.children,\n    _ref$data = _ref.data,\n    data = _ref$data === void 0 ? [] : _ref$data,\n    x = _ref.x,\n    y = _ref.y,\n    _ref$fill = _ref.fill,\n    fill = _ref$fill === void 0 ? 'transparent' : _ref$fill,\n    className = _ref.className,\n    curve = _ref.curve,\n    innerRef = _ref.innerRef,\n    _ref$defined = _ref.defined,\n    defined = _ref$defined === void 0 ? function () {\n      return true;\n    } : _ref$defined,\n    restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n  var path = line({\n    x: x,\n    y: y,\n    defined: defined,\n    curve: curve\n  });\n  if (children) return /*#__PURE__*/React.createElement(React.Fragment, null, children({\n    path: path\n  }));\n  return /*#__PURE__*/React.createElement(\"path\", _extends({\n    ref: innerRef,\n    className: cx('visx-linepath', className),\n    d: path(data) || '',\n    fill: fill\n    // without this a datum surrounded by nulls will not be visible\n    // https://github.com/d3/d3-shape#line_defined\n    ,\n    strokeLinecap: \"round\"\n  }, restProps));\n}","var _excluded = [\"children\", \"x\", \"x0\", \"x1\", \"y\", \"y0\", \"y1\", \"data\", \"defined\", \"className\", \"curve\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport cx from 'classnames';\nimport { area } from '../util/D3ShapeFactories';\nexport default function Area(_ref) {\n  var children = _ref.children,\n    x = _ref.x,\n    x0 = _ref.x0,\n    x1 = _ref.x1,\n    y = _ref.y,\n    y0 = _ref.y0,\n    y1 = _ref.y1,\n    _ref$data = _ref.data,\n    data = _ref$data === void 0 ? [] : _ref$data,\n    _ref$defined = _ref.defined,\n    defined = _ref$defined === void 0 ? function () {\n      return true;\n    } : _ref$defined,\n    className = _ref.className,\n    curve = _ref.curve,\n    innerRef = _ref.innerRef,\n    restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n  var path = area({\n    x: x,\n    x0: x0,\n    x1: x1,\n    y: y,\n    y0: y0,\n    y1: y1,\n    defined: defined,\n    curve: curve\n  });\n  if (children) return /*#__PURE__*/React.createElement(React.Fragment, null, children({\n    path: path\n  }));\n  return /*#__PURE__*/React.createElement(\"path\", _extends({\n    ref: innerRef,\n    className: cx('visx-area', className),\n    d: path(data) || ''\n  }, restProps));\n}","var _excluded = [\"className\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Circle(_ref) {\n  var className = _ref.className,\n    innerRef = _ref.innerRef,\n    restProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n  return /*#__PURE__*/React.createElement(\"circle\", _extends({\n    ref: innerRef,\n    className: cx('visx-circle', className)\n  }, restProps));\n}","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Plain-language **guidance** for every explainable element of the Experiment\n * surface — so a domain expert (e.g. a marketer) can hover any heading, control\n * or result and understand it without a statistician's vocabulary.\n *\n * This is a **built-in glossary**: the *concepts* are universal across every\n * experiment, so they're authored once here, never per-experiment and never by\n * the developer who drops in `<Experiment>`. The only per-experiment part is the\n * **nouns** — `{treatment}` / `{outcome}` / `{feature}` are interpolated from the\n * (ran) config's column names (run through `columns` labels), and `{subject}` /\n * `{subjects}` is the neutral noun for a row (`record(s)` — the component is\n * generic over any causal-analytics dataset, so it never assumes customers /\n * batches / patients). Result *specifics* (the actual numbers) stay derived at\n * the call site; here we only explain what a thing *means*.\n *\n * Each entry is three tiers of depth, shown stacked in the hover card:\n *  - `gist`   — Tier 1: one jargon-free sentence (what it is).\n *  - `detail` — Tier 2: why it matters / what to do with it.\n *  - `jargon` — Tier 3: the technical name, muted, for trust + the curious.\n */\n\n/** One glossary entry — three tiers of depth. */\nexport interface HelpEntry {\n    /** The heading/term (the card title). */\n    term: string;\n    /** Tier 1 — one plain sentence. */\n    gist: string;\n    /** Tier 2 — why it matters / what to do. */\n    detail: string;\n    /** Tier 3 — the technical name it maps to (for the curious). */\n    jargon?: string;\n}\n\n/** Substitute `{treatment}` / `{outcome}` / `{feature}` (and any extra) tokens. */\nexport function fillHelp(entry: HelpEntry, vars: Record<string, string>): HelpEntry {\n    const sub = (s: string) => s.replace(/\\{(\\w+)\\}/g, (m, k) => (k in vars ? vars[k]! : m));\n    return {\n        term: sub(entry.term),\n        gist: sub(entry.gist),\n        detail: sub(entry.detail),\n        ...(entry.jargon !== undefined ? { jargon: sub(entry.jargon) } : {}),\n    };\n}\n\n/** The glossary, keyed by stable element id. */\nexport const HELP = {\n    // ── Guidance mode (the toggle itself) ───────────────────────────────\n    guidance: {\n        term: 'Guidance',\n        gist: 'Plain-language explainers for everything on this surface.',\n        detail: 'While this is on, hover any heading, value or chart label to see what it means — in business terms, with the statistical name underneath. Click to turn it off.',\n    },\n\n    // ── Header ──────────────────────────────────────────────────────────\n    header: {\n        term: 'The question',\n        gist: 'You’re asking whether {treatment} actually moved {outcome}.',\n        detail: 'Pick the lever you changed and the result you cared about, then hit Run — the surface answers whether the change is real and trustworthy.',\n        jargon: 'a binary-treatment causal effect',\n    },\n\n    // ── Set-up rail ─────────────────────────────────────────────────────\n    step_treatment: {\n        term: 'What did you change?',\n        gist: 'The lever you’re testing — a yes/no flag on each {subject}.',\n        detail: 'It splits {subjects} into a “did” group and a “didn’t” group; the whole experiment compares those two.',\n        jargon: 'the treatment (binary)',\n    },\n    step_outcome: {\n        term: 'What did you want it to improve?',\n        gist: 'The result you’re hoping {treatment} moved.',\n        detail: 'A number measured on each {subject} (revenue, a duration, a score, …). The effect is the change in this we can credit to the lever.',\n        jargon: 'the outcome',\n    },\n    step_confounders: {\n        term: 'What else was different?',\n        gist: 'Things about the “did” group that could also explain the change.',\n        detail: 'If the {subjects} you treated already differed on something that matters — bigger, older, higher-value — that, not the lever, could be moving the result. We level the playing field on each of these so the comparison is fair. Add the ones you suspect.',\n        jargon: 'confounders / the backdoor adjustment set',\n    },\n    step_population: {\n        term: 'Which {subjects}?',\n        gist: 'Narrow the experiment to a slice of the {subjects}.',\n        detail: 'Filter to a subset you care about — a region, a period, a category — before measuring, so the answer is about the {subjects} that matter.',\n        jargon: 'population / cohort filter',\n    },\n    adv_method: {\n        term: 'How to compare',\n        gist: 'The maths used to make the like-for-like comparison.',\n        detail: '“Regression” fits a line through the confounders; “re-weighting” up-weights rare look-alikes. They usually agree — if they don’t, treat the result with care.',\n        jargon: 'estimator: linear regression vs propensity-score weighting',\n    },\n    adv_estimand: {\n        term: 'Answer for',\n        gist: 'Who the effect is reported for.',\n        detail: '“All” averages over everyone; “only treated” asks what the lever did for the {subjects} you actually treated — useful when you’d only ever apply it to them.',\n        jargon: 'estimand: ATE vs ATT',\n    },\n    confounder_imbalance: {\n        term: 'How lopsided this one was',\n        gist: 'How different the two groups were on this factor, before adjusting.',\n        detail: 'A long bar means the treated and untreated {subjects} started far apart here — exactly the kind of gap the adjustment has to close.',\n        jargon: 'standardised mean difference (SMD)',\n    },\n\n    // ── Tabs ────────────────────────────────────────────────────────────\n    tab_answer: {\n        term: 'Answer',\n        gist: 'The headline: did {treatment} move {outcome}, and by how much?',\n        detail: 'Shows the raw gap, the fair like-for-like estimate, and an honest verdict.',\n    },\n    tab_trust: {\n        term: 'Can we trust it?',\n        gist: 'The stress tests we ran to try to break the answer.',\n        detail: 'Each check probes a way the result could be a fluke; green means it held up.',\n    },\n    tab_dose: {\n        term: 'How much?',\n        gist: 'How the result changes as a factor goes up or down.',\n        detail: 'Not just yes/no — the shape of the response, so you can find the sweet spot.',\n    },\n\n    // ── Answer tab ──────────────────────────────────────────────────────\n    answer_effect: {\n        term: 'Like-for-like effect',\n        gist: 'The change in {outcome} we can credit to {treatment}.',\n        detail: 'It compares treated vs untreated {subjects} who were otherwise similar — so it strips out “who you targeted” and leaves the lever’s real impact.',\n        jargon: 'the backdoor-adjusted average treatment effect',\n    },\n    answer_ci: {\n        term: '95% range',\n        gist: 'Where the true effect most likely sits.',\n        detail: 'If this range doesn’t cross 0, the effect is real, not noise. The wider it is, the less certain — usually because of fewer {subjects}.',\n        jargon: '95% confidence interval',\n    },\n    answer_flip: {\n        term: 'Raw and like-for-like disagree',\n        gist: 'The plain average points one way; the fair comparison points the other.',\n        detail: 'This happens when the treated group differed sharply on a confounder. Trust the like-for-like number — the raw gap is misleading here.',\n        jargon: 'confounding / Simpson’s-paradox sign flip',\n    },\n    answer_cautious: {\n        term: 'Treat this as provisional',\n        gist: 'We got a number, but a trust check failed.',\n        detail: 'The estimate may still be driven by something we didn’t adjust for. See “Can we trust it?” before acting on it.',\n        jargon: 'adjustment_insufficient verdict',\n    },\n    forest_plot: {\n        term: 'Raw average vs. like-for-like',\n        gist: 'The misleading number next to the fair one.',\n        detail: 'Each bar is an estimate with its uncertainty range; the dashed line is “no effect”. A bar clear of that line is a real change.',\n        jargon: 'a forest plot of naive vs adjusted estimates',\n    },\n    forest_naive: {\n        term: 'Raw average',\n        gist: 'The plain difference, with no adjusting.',\n        detail: 'Just treated-minus-untreated. It mixes in who you targeted, so it can mislead — it’s here only as the “before” picture.',\n        jargon: 'the unadjusted mean difference',\n    },\n    forest_adjusted: {\n        term: 'Like-for-like',\n        gist: 'The fair comparison after levelling the confounders.',\n        detail: 'This is the number to act on — what {treatment} did among otherwise-similar {subjects}.',\n        jargon: 'the adjusted effect',\n    },\n    balance: {\n        term: 'How unbalanced each one was',\n        gist: 'How far apart the two groups started on each factor.',\n        detail: 'Big bars are the factors the adjustment had to work hardest to correct — and the ones most worth double-checking.',\n        jargon: 'pre-adjustment covariate balance (SMD)',\n    },\n    counts: {\n        term: 'The {subject} counts',\n        gist: 'How many {subjects} went into the comparison.',\n        detail: '“Compared like-for-like” are the ones with a fair match on the other side; “no fair match” were set aside because nobody comparable existed.',\n        jargon: 'n total / on-support / off-support',\n    },\n\n    // ── Refusal zones + overlap ─────────────────────────────────────────\n    overlap_histogram: {\n        term: 'Do the two groups overlap?',\n        gist: 'Whether treated and untreated {subjects} actually look alike anywhere.',\n        detail: 'Each bar is how many {subjects} sit at a given “likelihood of being treated”. Where the two arms both have bars, a fair comparison exists; if they barely meet, there’s nothing to compare.',\n        jargon: 'propensity-score overlap / common support',\n    },\n    refusal_positivity: {\n        term: 'No like-for-like comparison exists',\n        gist: 'The treated and untreated {subjects} are too different to compare.',\n        detail: 'For almost every treated {subject} there’s no similar untreated one (or vice-versa), so there’s no fair “other side”. We refuse rather than extrapolate into thin air. Try fewer or different confounders.',\n        jargon: 'positivity / overlap violation',\n    },\n    refusal_not_estimable: {\n        term: 'Can’t be estimated',\n        gist: 'Almost every {subject} is on one side of {treatment}, so there’s no comparison group.',\n        detail: 'Measuring an effect needs a decent number of {subjects} who got the lever AND who didn’t. When one side is just a handful, we refuse to guess rather than read too much into a few people.',\n        jargon: 'no treatment variation',\n    },\n\n    // ── Trust tab ───────────────────────────────────────────────────────\n    trust_intro: {\n        term: 'Can we trust it?',\n        gist: 'Before believing the answer, we tried to break it.',\n        detail: 'Each row is a different way the result could be a fluke; colour shows whether it held up (pass) or wobbled (caution).',\n    },\n    check_shuffle: {\n        term: 'Shuffle test',\n        gist: 'We randomly re-label who got {treatment} and re-measure.',\n        detail: 'On fake labels a genuine effect should collapse to nothing. If a “fake” effect still appears, the real one isn’t trustworthy.',\n        jargon: 'placebo / permutation refuter',\n    },\n    check_dropsome: {\n        term: 'Drop-some test',\n        gist: 'We re-run on random slices of the {subjects}.',\n        detail: 'A trustworthy effect barely moves when you drop some data; a jumpy one is resting on a few {subjects}.',\n        jargon: 'data-subset refuter',\n    },\n    check_decoy: {\n        term: 'Decoy factor',\n        gist: 'We add a totally random extra factor and re-measure.',\n        detail: 'A made-up factor shouldn’t change the answer. If it does, the model is over-reacting to noise.',\n        jargon: 'random-common-cause refuter',\n    },\n    check_hidden: {\n        term: 'Hidden cause',\n        gist: 'How strong an unrecorded cause would have to be to overturn the result.',\n        detail: 'Something you didn’t measure could drive both who got {treatment} and {outcome}. “Holds throughout” means only an implausibly strong hidden cause could flip it.',\n        jargon: 'unobserved-confounding sensitivity / E-value',\n    },\n    sensitivity: {\n        term: 'Effect as a hidden cause gets stronger',\n        gist: 'What happens to the effect if an unrecorded cause is dialled up.',\n        detail: 'The line is the estimate as a simulated hidden cause grows. The point where it crosses 0 is how much hidden bias it would take to erase the result.',\n        jargon: 'sensitivity (tipping-point) curve',\n    },\n\n    // ── Dose tab ────────────────────────────────────────────────────────\n    dose_curve: {\n        term: '{outcome} gained vs. {feature}',\n        gist: 'How {outcome} responds as {feature} goes up.',\n        detail: 'The line is the average change in {outcome} at each level of {feature}, with its uncertainty band — the shape tells you where more pays off and where it flattens.',\n        jargon: 'accumulated local effects (ALE) dose-response',\n    },\n    dose_here: {\n        term: 'You are here',\n        gist: 'Where most of your {subjects} currently sit on {feature}.',\n        detail: 'The busiest level today — your starting point for deciding whether to push higher or lower.',\n        jargon: 'the modal bin',\n    },\n    dose_sweet: {\n        term: 'Sweet spot',\n        gist: 'Where the gains are solid and start to flatten.',\n        detail: 'Past here, pushing {feature} higher buys little extra {outcome} — a sensible target.',\n        jargon: 'the diminishing-returns knee',\n    },\n    dose_reco: {\n        term: 'Recommended',\n        gist: 'The level of {feature} we’d aim for.',\n        detail: 'The sweet-spot level and the {outcome} you’d expect there, with its range — and the trade-off of going one step further.',\n        jargon: 'the recommended operating point',\n    },\n    dose_marginal: {\n        term: 'Extra {outcome} per step',\n        gist: 'What each additional step of {feature} buys you.',\n        detail: 'Tall early bars then short ones is the classic diminishing-returns shape — spend effort where the bars are tall.',\n        jargon: 'marginal / incremental effect per bin',\n    },\n\n    // ── Verdicts ────────────────────────────────────────────────────────\n    verdict_causal: {\n        term: 'Causal',\n        gist: 'A real change you can credit to {treatment} — and it held up.',\n        detail: 'The like-for-like effect is clear, sizeable, and survived the trust checks. Safe to act on.',\n        jargon: 'a robust, identified effect',\n    },\n    verdict_modest: {\n        term: 'Modest / unclear',\n        gist: 'There may be an effect, but it’s small or fuzzy.',\n        detail: 'The fair comparison can’t cleanly separate it from no-effect (the range straddles 0, or it’s tiny). Don’t bet much on it.',\n        jargon: 'effect CI spans zero / below materiality',\n    },\n    verdict_adjustment_insufficient: {\n        term: 'Not trustworthy yet',\n        gist: 'We got a number, but a trust check failed.',\n        detail: 'Likely something we didn’t adjust for is still in play. Treat as provisional and look at “Can we trust it?”.',\n        jargon: 'placebo / robustness failure',\n    },\n    verdict_non_identifiable_positivity: {\n        term: 'No fair comparison',\n        gist: 'Treated and untreated {subjects} don’t overlap enough to compare.',\n        detail: 'There’s no like-for-like “other side”, so any number would be extrapolation. See the overlap chart.',\n        jargon: 'positivity / overlap violation',\n    },\n    verdict_not_estimable: {\n        term: 'Can’t be estimated',\n        gist: 'Almost everyone is on one side of {treatment} — no comparison group.',\n        detail: 'One arm is just a handful of {subjects}, so we won’t guess an effect from it.',\n        jargon: 'no treatment variation',\n    },\n\n    // ── Validate tab ────────────────────────────────────────────────────\n    tab_validate: {\n        term: 'Validate',\n        gist: 'The real experiment you’d run to prove this — for sure.',\n        detail: 'This analysis adjusted for what it could measure. A controlled trial — assigning {treatment} at random — removes any leftover doubt. This tab sizes that trial.',\n    },\n    validate_size: {\n        term: 'How many to run',\n        gist: 'The number of {subjects} the trial needs.',\n        detail: 'Enough to spot a change this size if it’s real. A bigger or cleaner effect needs fewer; a small or noisy one needs many more.',\n        jargon: 'required sample size at the target power',\n    },\n    validate_split: {\n        term: 'How to split them',\n        gist: 'How many get {treatment} versus are left alone.',\n        detail: 'Assign at random — that’s what makes the two groups comparable with no adjusting. An even split is the most efficient; treating fewer needs a larger total.',\n        jargon: 'randomised allocation between arms',\n    },\n    validate_match: {\n        term: 'Match the groups on',\n        gist: 'Keep both groups balanced on these — they were lopsided last time.',\n        detail: 'Give each group the same mix of these factors when you split, so neither one starts ahead. These are the factors that muddied the original comparison most.',\n        jargon: 'stratified / blocked randomisation on the high-imbalance covariates',\n    },\n    validate_power: {\n        term: 'Chance of detecting it',\n        gist: 'How likely the trial is to catch the effect, by size.',\n        detail: 'More {subjects} means a better chance of a clear result. The marker shows where today’s data sits — usually well short of a confident answer.',\n        jargon: 'statistical power vs sample size',\n    },\n    validate_holdback: {\n        term: 'Hold back a control',\n        gist: 'Keep a random group untreated to compare against.',\n        detail: 'Right now almost everything got {treatment}, so there’s nothing to compare to. Next time, leave a random sample untreated — that group becomes the fair baseline.',\n        jargon: 'a randomised control arm',\n    },\n\n    // ── Journal ─────────────────────────────────────────────────────────\n    journal: {\n        term: 'Committed experiments',\n        gist: 'A log of the questions you’ve saved.',\n        detail: 'Each row is a framing you committed — its verdict and headline effect — so the team can see what’s been tried and what held up.',\n        jargon: 'the experiment journal',\n    },\n} as const;\n\n/** Every valid help id. */\nexport type HelpId = keyof typeof HELP;\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Guidance affordances for the Experiment surface — a built-in glossary\n * ({@link \"./help\"}) surfaced as hover cards so a domain expert can understand\n * any heading / control / result without a statistician's vocabulary.\n *\n * The model is an **explain mode**, not per-element icons: {@link GuidanceToggle}\n * (an on/off icon button in the header) flips guidance on, and then the element\n * *itself* — a heading, a value, a chart label — is the hover trigger via\n * {@link Help}. No tiny target to aim at: you mouse over the thing you're asking\n * about. When guidance is off, {@link Help} renders its children untouched. A\n * single {@link GuidanceProvider} supplies the `{treatment}`/`{outcome}` nouns +\n * the on/off state.\n */\nimport { createContext, useContext, type ReactNode } from 'react';\nimport { Box, Text, HoverCard, Portal, useRecipe, useSlotRecipe, type SystemStyleObject } from '@chakra-ui/react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCircleInfo } from '@fortawesome/free-solid-svg-icons';\nimport { HELP, fillHelp, type HelpId } from './help.js';\n\ninterface GuidanceCtx { on: boolean; vars: Record<string, string> }\nconst GuidanceContext = createContext<GuidanceCtx>({ on: true, vars: {} });\n\n/** Provide the guidance on/off state + the `{treatment}`/`{outcome}` nouns. */\nexport function GuidanceProvider({ on, vars, children }: { on: boolean; vars: Record<string, string>; children: ReactNode }) {\n    return <GuidanceContext.Provider value={{ on, vars }}>{children}</GuidanceContext.Provider>;\n}\n\n/** The 3-tier card body — `term` uses the recipe's mono-eyebrow `title` slot, so\n *  it reads identically to every other east-ui HoverCard / Popover heading; the\n *  three depth tiers (gist → detail → muted jargon footnote) sit below it. The\n *  surrounding chrome (surface, border, shadow, padding, width) comes from the\n *  `hoverCard` recipe applied automatically to `HoverCard.Content`. */\nfunction HelpCard({ id, extraVars }: { id: HelpId; extraVars?: Record<string, string> | undefined }) {\n    const { vars } = useContext(GuidanceContext);\n    const e = fillHelp(HELP[id], { ...vars, ...extraVars });\n    const slot = useSlotRecipe({ key: 'hoverCard' })() as Record<string, SystemStyleObject>;\n    return (\n        <Box display=\"flex\" flexDirection=\"column\" gap=\"1.5\">\n            <Box css={slot.title} mb=\"0\">{e.term}</Box>\n            <Text textStyle=\"body.sm\" color=\"fg.default\" lineHeight=\"1.5\">{e.gist}</Text>\n            <Box css={slot.description} lineHeight=\"1.5\">{e.detail}</Box>\n            {e.jargon && (\n                <Text textStyle=\"caption\" color=\"fg.subtle\" mt=\"0.5\" pt=\"1.5\" borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n                    Technically: {e.jargon}\n                </Text>\n            )}\n        </Box>\n    );\n}\n\n/** Wrap a single trigger element in a HoverCard — chrome from the shared\n *  `hoverCard` recipe (same as {@link \"../../overlays/hover-card\"}), so it\n *  matches every other card. The trigger is used `asChild`, so it must be one\n *  element (its own box) — the caller owns layout / cursor. */\nfunction Hover({ id, extraVars, trigger }: { id: HelpId; extraVars?: Record<string, string> | undefined; trigger: ReactNode }) {\n    return (\n        <HoverCard.Root openDelay={150} closeDelay={80} size=\"sm\" positioning={{ placement: 'top' }}>\n            <HoverCard.Trigger asChild>{trigger}</HoverCard.Trigger>\n            <Portal>\n                <HoverCard.Positioner>\n                    <HoverCard.Content>\n                        <HoverCard.Arrow><HoverCard.ArrowTip /></HoverCard.Arrow>\n                        <HelpCard id={id} extraVars={extraVars} />\n                    </HoverCard.Content>\n                </HoverCard.Positioner>\n            </Portal>\n        </HoverCard.Root>\n    );\n}\n\n/**\n * Make an element its own help trigger — hovering the heading / value / label\n * itself opens its glossary card (no separate icon to aim at). Renders children\n * untouched when guidance is off. `display` defaults to `inline` so prose still\n * wraps; pass `inline-flex` + `gap` to keep a multi-part row laid out.\n */\nexport function Help({ id, extraVars, children, display = 'inline', gap }: {\n    id: HelpId; extraVars?: Record<string, string> | undefined; children: ReactNode;\n    display?: 'inline' | 'inline-flex'; gap?: string;\n}) {\n    const { on } = useContext(GuidanceContext);\n    if (!on) return <>{children}</>;\n    return (\n        <Hover id={id} extraVars={extraVars} trigger={\n            // `tabIndex={0}` makes the term keyboard-focusable — the HoverCard's zag\n            // machine opens on focus, so the glossary is reachable without a pointer.\n            <Box as=\"span\" cursor=\"help\" tabIndex={0} display={display} {...(gap ? { alignItems: 'center', gap } : {})}\n                _focusVisible={{ outline: '1px dotted', outlineColor: 'brand.fg', outlineOffset: '2px', borderRadius: '2px' }}>{children}</Box>\n        } />\n    );\n}\n\n/** The header guidance toggle — an icon-only on/off button (no label). The filled\n *  (`subtle`) state + brand tint show guidance is active; ghost + muted is off.\n *  Hovering it always explains the feature (even when off), so it's discoverable. */\nexport function GuidanceToggle({ on, onToggle }: { on: boolean; onToggle: () => void }) {\n    const iconButton = useRecipe({ key: 'iconButton' });\n    return (\n        <Hover id=\"guidance\" trigger={\n            <Box as=\"button\" css={iconButton({ variant: on ? 'subtle' : 'ghost', size: 'sm' })}\n                onClick={onToggle} aria-pressed={on} aria-label=\"Toggle guidance\"\n                color={on ? 'brand.fg' : 'fg.muted'}>\n                <FontAwesomeIcon icon={faCircleInfo} />\n            </Box>\n        } />\n    );\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * visx charts for the Experiment surface — a horizontal forest plot (raw-vs-\n * adjusted CI estimates with a zero reference) and a band/area-range curve\n * (low-high CI ribbon + mid line, optional zero line and vertical markers).\n *\n * Built on the same `@visx/*` primitives + theme-token resolution the east-ui\n * `Chart` renderer uses (`useChakraContext().token(...)`, mono font, labelSize\n * ≈ 10px). **Text size/family are set via inline `style`, never the SVG\n * `font-size` attribute** — an attribute is overridden by any inherited CSS\n * `font-size` (the host's base size), which is why charts must style text the\n * way the `Chart` renderer does. Width is measured synchronously (snapshot-safe).\n *\n * @packageDocumentation\n */\n\nimport { useLayoutEffect, useRef, useState, type CSSProperties, type ReactElement, type ReactNode, type RefObject } from 'react';\nimport { Box, useChakraContext } from '@chakra-ui/react';\nimport { Group } from '@visx/group';\nimport { scaleLinear } from '@visx/scale';\nimport { LinePath, Line, Circle, Area } from '@visx/shape';\nimport { curveMonotoneX } from '@visx/curve';\nimport { Help } from './help-ui.js';\nimport { type HelpId } from './help.js';\n\n/** A chart text label rendered as HTML in a `<foreignObject>` so the label\n *  *itself* can be a guidance hover trigger (same \"mouse over the thing\" model as\n *  every heading) — no separate icon to aim at inside the SVG. `overflow:visible`\n *  lets the hover card escape the SVG box; when guidance is off {@link Help}\n *  renders the label untouched. Text is styled inline (size/family/fill) so an\n *  inherited CSS `font-size` can't blow it up, matching the SVG-text rule. */\nfunction ChartLabel({ x, y, w, align, size, weight, color, family, help, children }: {\n    x: number; y: number; w: number; align: 'left' | 'center' | 'right';\n    size: number; weight?: number; color: string; family: string;\n    help?: HelpId; children: ReactNode;\n}): ReactElement {\n    const span = (\n        <span style={{ fontSize: `${size}px`, fontFamily: family, fontWeight: weight, color, lineHeight: 1, whiteSpace: 'nowrap' }}>\n            {children}\n        </span>\n    );\n    // The wrapper MUST pin font-size + line-height too: a bare `div`/`Help` span\n    // inherits the host base size (~14–16px), inflating the content line-box and\n    // shoving the label down onto the note below it. Pin both to the label size.\n    return (\n        <foreignObject x={x} y={y} width={w} height={size + 6} style={{ overflow: 'visible' }}>\n            <div style={{ textAlign: align, fontSize: `${size}px`, lineHeight: 1 }}>{help ? <Help id={help}>{span}</Help> : span}</div>\n        </foreignObject>\n    );\n}\n\n/** Build an SVG-text inline style — size/family/fill MUST be inline so inherited\n *  CSS `font-size` (the host base size) can't blow the chart text up. */\nfunction svgText(size: number, fill: string, family: string, weight?: number): CSSProperties {\n    return { fontSize: `${size}px`, fill, fontFamily: family, ...(weight !== undefined ? { fontWeight: weight } : {}) };\n}\n\n/** Synchronous container-width measurement (no debounce — snapshot-safe). */\nfunction useMeasuredWidth(): [RefObject<HTMLDivElement | null>, number] {\n    const ref = useRef<HTMLDivElement | null>(null);\n    const [w, setW] = useState(0);\n    useLayoutEffect(() => {\n        const el = ref.current;\n        if (!el) return;\n        const update = () => setW(el.clientWidth);\n        update();\n        const ro = new ResizeObserver(update);\n        ro.observe(el);\n        return () => ro.disconnect();\n    }, []);\n    return [ref, w];\n}\n\n// ---------------------------------------------------------------------------\n// Theme — resolve design tokens (colours + fonts) the way `Chart` does.\n// ---------------------------------------------------------------------------\ntype Tone = 'neg' | 'pos' | 'warn' | 'muted' | 'brand' | string;\n\ninterface ChartTheme {\n    mono: string;\n    body: string;\n    ink: string;\n    muted: string;\n    faint: string;\n    rule: string;\n    ruleStrong: string;\n    surface: string;\n    tone: (t: Tone) => string;\n    labelSize: number;\n    titleSize: number;\n    lineWidth: number;\n    barWidth: number;\n    dotRadius: number;\n    scatterRadius: number;\n    areaOpacity: number;\n}\n\nfunction useChartTheme(): ChartTheme {\n    const system = useChakraContext();\n    const tok = (k: string, fallback: string) => system.token(k, fallback) as string;\n    const tones: Record<string, string> = {\n        neg: tok('colors.fg.danger', '#b85a4a'),\n        pos: tok('colors.fg.success', '#2f7a5b'),\n        warn: tok('colors.fg.warning', '#b8862d'),\n        muted: tok('colors.fg.muted', '#6b8080'),\n        brand: tok('colors.brand.solid', '#3a7780'),\n    };\n    return {\n        mono: tok('fonts.mono', '\"JetBrains Mono\", ui-monospace, monospace'),\n        body: tok('fonts.body', 'system-ui, -apple-system, sans-serif'),\n        ink: tok('colors.fg', '#111b22'),\n        muted: tones.muted!,\n        faint: tok('colors.fg.subtle', '#9bb0b0'),\n        rule: tok('colors.border.subtle', '#e2e8e8'),\n        ruleStrong: tok('colors.border.strong', '#cbd5d5'),\n        surface: tok('colors.bg.surface', '#ffffff'),\n        tone: (t: Tone) => tones[t] ?? tones.brand!,\n        labelSize: 10,\n        titleSize: 11,\n        lineWidth: 1.8,\n        barWidth: 2.5,\n        dotRadius: 2.6,\n        scatterRadius: 3.4,\n        areaOpacity: 0.16,\n    };\n}\n\nconst fmt = (n: number) => (Number.isInteger(n) ? String(n) : n.toFixed(1));\nconst signed = (n: number) => (n > 0 ? '+' : '') + fmt(n);\n\n/** Round up to a clean step so axis ticks read as gridlines (not raw extents). */\nconst niceCeil = (v: number): number => {\n    if (v <= 1e-9) return 0;\n    const mag = Math.pow(10, Math.floor(Math.log10(v)));\n    const n = v / mag;\n    const step = n <= 1 ? 1 : n <= 1.5 ? 1.5 : n <= 2 ? 2 : n <= 3 ? 3 : n <= 4 ? 4 : n <= 5 ? 5 : n <= 6 ? 6 : n <= 8 ? 8 : 10;\n    return step * mag;\n};\n\n// ============================================================================\n// Forest plot\n// ============================================================================\n\nexport interface ForestRow {\n    label: string;\n    note?: string;\n    est: number;\n    lo: number;\n    hi: number;\n    tone: Tone;\n}\n\nexport interface ForestPlotProps {\n    rows: ForestRow[];\n    min: number;\n    max: number;\n    unit?: string;\n    height?: number;\n    /** Optional per-row help id, aligned to `rows` — renders a `.hlp` glyph\n     *  after the row label, opening that glossary entry. */\n    rowHelp?: HelpId[];\n}\n\n/** Horizontal CI estimates with a dashed zero (\"no effect\") reference. */\nexport function ForestPlot({ rows, min, max, unit, height, rowHelp }: ForestPlotProps): ReactElement {\n    const t = useChartTheme();\n    const [ref, w] = useMeasuredWidth();\n    const n = rows.length;\n    const hPx = height ?? 26 + n * 38;\n    const padL = 124, padR = 46, padT = 20, padB = 30;\n    const innerW = Math.max(0, w - padL - padR);\n    const innerH = hPx - padT - padB;\n    const x = scaleLinear({ domain: [min, max], range: [0, innerW] });\n    const rowH = innerH / Math.max(1, n);\n    const zeroX = Math.max(0, Math.min(innerW, x(0)));\n    const frac = (v: number) => (max > min ? (v - min) / (max - min) : 0.5);\n    // Anchor labels by position so a tick / the zero label never overflows an edge.\n    const anchorAt = (v: number): 'start' | 'middle' | 'end' => (frac(v) < 0.06 ? 'start' : frac(v) > 0.94 ? 'end' : 'middle');\n    // Drop a separate \"0\" tick when zero sits at an edge (all-positive / all-negative\n    // effects) — it would overlap and clip the min or max tick.\n    const zf = frac(0);\n    const ticks = (zf > 0.12 && zf < 0.88) ? [min, 0, max] : [min, max];\n    return (\n        <Box ref={ref} width=\"100%\" height={`${hPx}px`}>\n            {w > 0 && (\n                <svg width={w} height={hPx} style={{ display: 'block' }}>\n                    <Group left={padL} top={padT}>\n                        <Line from={{ x: zeroX, y: -4 }} to={{ x: zeroX, y: innerH }} stroke={t.muted} strokeWidth={1} strokeDasharray=\"3 2\" />\n                        <text x={zeroX} y={-6} textAnchor={anchorAt(0)} style={svgText(t.labelSize, t.muted, t.mono)}>no effect</text>\n                        {rows.map((r, i) => {\n                            const cy = rowH * i + rowH / 2;\n                            const col = t.tone(r.tone);\n                            return (\n                                <Group key={i} top={cy}>\n                                    <Line from={{ x: x(r.lo), y: 0 }} to={{ x: x(r.hi), y: 0 }} stroke={col} strokeWidth={t.barWidth} strokeOpacity={0.9} strokeLinecap=\"round\" />\n                                    <Line from={{ x: x(r.lo), y: -4 }} to={{ x: x(r.lo), y: 4 }} stroke={col} strokeWidth={1.5} />\n                                    <Line from={{ x: x(r.hi), y: -4 }} to={{ x: x(r.hi), y: 4 }} stroke={col} strokeWidth={1.5} />\n                                    <Circle cx={x(r.est)} cy={0} r={t.scatterRadius} fill={col} stroke={t.surface} strokeWidth={1.8} />\n                                    <ChartLabel x={-padL + 2} y={-13} w={padL - 6} align=\"left\" size={t.labelSize} weight={600} color={t.ink} family={t.body} {...(rowHelp?.[i] ? { help: rowHelp[i]! } : {})}>{r.label}</ChartLabel>\n                                    {r.note && <text x={-padL + 2} y={9} style={svgText(9, t.faint, t.body)}>{r.note}</text>}\n                                    <text x={innerW + padR - 2} y={4} textAnchor=\"end\" style={svgText(t.titleSize, col, t.mono, 700)}>{signed(r.est)}</text>\n                                </Group>\n                            );\n                        })}\n                        <Line from={{ x: 0, y: innerH }} to={{ x: innerW, y: innerH }} stroke={t.rule} strokeWidth={1} />\n                        {ticks.map((tk, i) => (\n                            <Group key={`t${i}`} left={Math.max(0, Math.min(innerW, x(tk)))}>\n                                <Line from={{ x: 0, y: innerH }} to={{ x: 0, y: innerH + 4 }} stroke={t.ruleStrong} strokeWidth={1} />\n                                <text x={0} y={innerH + 14} textAnchor={anchorAt(tk)} style={svgText(t.labelSize, t.muted, t.mono)}>{signed(tk)}</text>\n                            </Group>\n                        ))}\n                        {unit && <text x={innerW / 2} y={innerH + 26} textAnchor=\"middle\" style={svgText(t.labelSize, t.muted, t.mono)}>{unit}</text>}\n                    </Group>\n                </svg>\n            )}\n        </Box>\n    );\n}\n\n// ============================================================================\n// Area-range band\n// ============================================================================\n\nexport interface AreaMark {\n    at: number;\n    label: string;\n    tone: Tone;\n    /** Optional glossary id — renders a `.hlp` glyph after the marker label. */\n    help?: HelpId;\n}\n\nexport interface AreaRangeProps {\n    lo: number[];\n    mid: number[];\n    hi: number[];\n    xTicks?: string[];\n    yTicks?: string[];\n    zero?: number;\n    tone?: Tone;\n    marks?: AreaMark[];\n    height?: number;\n    /** Y-axis label format: `signed` (default, e.g. `+5.2`) or `percent` (`80%`). */\n    yFormat?: 'signed' | 'percent';\n}\n\ninterface BandPoint { i: number; lo: number; hi: number; mid: number }\n\n/** Low-high CI ribbon + mid line with hairline axes, optional zero + markers. */\nexport function AreaRange({ lo, mid, hi, xTicks = [], yTicks = [], zero, tone: toneName, marks = [], height, yFormat = 'signed' }: AreaRangeProps): ReactElement {\n    const t = useChartTheme();\n    const [ref, w] = useMeasuredWidth();\n    const hPx = height ?? 100;\n    const col = t.tone(toneName ?? 'brand');\n    const padL = yTicks.length ? 52 : 6;\n    const padR = 12;\n    const padT = marks.length ? 22 : 8;\n    const padB = xTicks.length ? 22 : 12;\n    const innerW = Math.max(0, w - padL - padR);\n    const innerH = hPx - padT - padB;\n    const xScale = scaleLinear({ domain: [0, Math.max(1, mid.length - 1)], range: [0, innerW] });\n    // Sanitise the band first — a non-finite CI bound (e.g. an empty edge bin's\n    // NaN) collapses to the mid line rather than poisoning Math.min/max (which\n    // would make the whole y-axis NaN).\n    const fin = (x: number | undefined, fallback: number) => (typeof x === 'number' && Number.isFinite(x) ? x : fallback);\n    const data: BandPoint[] = mid.map((m, i) => {\n        const mm = fin(m, 0);\n        return { i, lo: fin(lo[i], mm), hi: fin(hi[i], mm), mid: mm };\n    });\n    // Nice, signed y gridlines (top / mid / 0-or-bottom) — not raw band extents.\n    const dataMin = Math.min(...data.map(d => d.lo), zero ?? Infinity);\n    const dataMax = Math.max(...data.map(d => d.hi), zero ?? -Infinity);\n    const yHiN = niceCeil(Math.max(dataMax, 0));\n    const yLoN = dataMin < -0.08 * yHiN ? -niceCeil(-dataMin) : 0;\n    const yScale = scaleLinear({ domain: [yLoN, yHiN], range: [innerH, 0] });\n    const yfmt = (v: number) => (yFormat === 'percent' ? `${Math.round(v)}%` : signed(v));\n    const yLabels = [yfmt(yHiN), yfmt((yHiN + yLoN) / 2), yfmt(yLoN)];\n    return (\n        <Box ref={ref} width=\"100%\" height={`${hPx}px`}>\n            {w > 0 && (\n                <svg width={w} height={hPx} style={{ display: 'block' }}>\n                    <Group left={padL} top={padT}>\n                        <Line from={{ x: 0, y: 0 }} to={{ x: 0, y: innerH }} stroke={t.rule} strokeWidth={1} />\n                        {yTicks.length > 0 && (\n                            <>\n                                <text x={-8} y={10} textAnchor=\"end\" style={svgText(t.labelSize, t.muted, t.mono)}>{yLabels[0]}</text>\n                                <text x={-8} y={innerH / 2 + 3} textAnchor=\"end\" style={svgText(t.labelSize, t.muted, t.mono)}>{yLabels[1]}</text>\n                                <text x={-8} y={innerH - 1} textAnchor=\"end\" style={svgText(t.labelSize, t.muted, t.mono)}>{yLabels[2]}</text>\n                            </>\n                        )}\n                        {zero != null && <Line from={{ x: 0, y: yScale(zero) }} to={{ x: innerW, y: yScale(zero) }} stroke={t.muted} strokeWidth={1} strokeDasharray=\"3 2\" />}\n                        <Area<BandPoint> data={data} x={d => xScale(d.i)} y0={d => yScale(d.lo)} y1={d => yScale(d.hi)} curve={curveMonotoneX} fill={col} fillOpacity={t.areaOpacity} stroke=\"transparent\" />\n                        <LinePath<BandPoint> data={data} x={d => xScale(d.i)} y={d => yScale(d.mid)} curve={curveMonotoneX} stroke={col} strokeWidth={t.lineWidth} />\n                        {marks.map((m, i) => {\n                            const mc = t.tone(m.tone);\n                            const dotY = yScale(fin(mid[m.at], 0));\n                            const labY = Math.max(9, dotY - 9);\n                            const atEnd = m.at >= mid.length - 2;\n                            const atStart = m.at <= 1;\n                            const align = atEnd ? 'right' : atStart ? 'left' : 'center';\n                            const labW = m.label.length * 6 + 6;\n                            const labX = atEnd ? -labW : atStart ? 0 : -labW / 2;\n                            return (\n                                <Group key={`mk${i}`} left={xScale(m.at)}>\n                                    <Line from={{ x: 0, y: -2 }} to={{ x: 0, y: innerH }} stroke={mc} strokeWidth={1} strokeDasharray=\"2 3\" />\n                                    <Circle cx={0} cy={dotY} r={t.dotRadius} fill={mc} stroke={t.surface} strokeWidth={1.5} />\n                                    <ChartLabel x={labX} y={labY - 11} w={labW} align={align} size={t.labelSize} weight={500} color={mc} family={t.body} {...(m.help ? { help: m.help } : {})}>{m.label}</ChartLabel>\n                                </Group>\n                            );\n                        })}\n                        <Line from={{ x: 0, y: innerH }} to={{ x: innerW, y: innerH }} stroke={t.rule} strokeWidth={1} />\n                        {xTicks.map((tk, i) => {\n                            const word = Number.isNaN(Number(tk));\n                            return (\n                                <text key={`x${i}`} x={(innerW * i) / Math.max(1, xTicks.length - 1)} y={innerH + 14} textAnchor={i === 0 ? 'start' : i === xTicks.length - 1 ? 'end' : 'middle'} style={svgText(word ? 9 : t.labelSize, word ? t.faint : t.muted, word ? t.body : t.mono)}>{tk}</text>\n                            );\n                        })}\n                    </Group>\n                </svg>\n            )}\n        </Box>\n    );\n}\n\n// ============================================================================\n// Overlap histogram — back-to-back propensity densities (positivity zone)\n// ============================================================================\n\nexport interface OverlapHistogramProps {\n    /** Treated-arm propensity histogram (one count/fraction per bin over [0,1]). */\n    treated: number[];\n    /** Control-arm propensity histogram (same binning). */\n    control: number[];\n    /** Domain of the propensity axis (default [0,1]). */\n    domain?: [number, number];\n    /** Caption shown at top-right (e.g. \"62% common support\"). */\n    supportLabel?: string;\n    /** Whether positivity clears the guard — toggles the caption tone. */\n    positivityOk?: boolean;\n    height?: number;\n}\n\n/**\n * A mirrored (back-to-back) histogram of the two arms' propensity scores:\n * treated bars rise above a centre axis, control bars fall below it. Where the\n * two densities both have mass is the **common support** — the only region a\n * like-for-like comparison can be drawn. Contract-agnostic: the caller converts\n * the two `Vector<Float>` to `number[]` and passes the [0,1] domain.\n */\nexport function OverlapHistogram({ treated, control, domain = [0, 1], supportLabel, positivityOk, height }: OverlapHistogramProps): ReactElement {\n    const t = useChartTheme();\n    const [ref, w] = useMeasuredWidth();\n    const hPx = height ?? 150;\n    const padL = 8, padR = 8, padT = 16, padB = 26;\n    const innerW = Math.max(0, w - padL - padR);\n    const innerH = hPx - padT - padB;\n    const centerY = innerH / 2;\n    const halfH = centerY - 4;\n    const bins = Math.max(treated.length, control.length);\n    const x = scaleLinear({ domain, range: [0, innerW] });\n    const span = domain[1] - domain[0];\n    const binW = bins > 0 ? (innerW / bins) : innerW;\n    const barW = Math.max(1, binW * 0.78);\n    const maxVal = Math.max(1e-9, ...treated, ...control);\n    const tCol = t.tone('pos');\n    const cCol = t.tone('muted');\n    const ticks = [domain[0], (domain[0] + domain[1]) / 2, domain[1]];\n    // Bar centre on the propensity axis for bin i (covers [i, i+1]/bins of the span).\n    const cx = (i: number) => x(domain[0] + ((i + 0.5) / bins) * span);\n    return (\n        <Box ref={ref} width=\"100%\" height={`${hPx}px`}>\n            {w > 0 && (\n                <svg width={w} height={hPx} style={{ display: 'block' }}>\n                    <Group left={padL} top={padT}>\n                        <text x={0} y={-4} style={svgText(9, t.faint, t.body)}>treated ↑</text>\n                        {supportLabel && (\n                            <text x={innerW} y={-4} textAnchor=\"end\" style={svgText(t.labelSize, positivityOk ? t.tone('pos') : t.tone('warn'), t.mono, 600)}>{supportLabel}</text>\n                        )}\n                        {Array.from({ length: bins }, (_, i) => {\n                            const ht = (Number(treated[i] ?? 0) / maxVal) * halfH;\n                            const hc = (Number(control[i] ?? 0) / maxVal) * halfH;\n                            const left = cx(i) - barW / 2;\n                            return (\n                                <Group key={i}>\n                                    {ht > 0 && <rect x={left} y={centerY - ht} width={barW} height={ht} fill={tCol} fillOpacity={0.85} rx={0.5} />}\n                                    {hc > 0 && <rect x={left} y={centerY} width={barW} height={hc} fill={cCol} fillOpacity={0.6} rx={0.5} />}\n                                </Group>\n                            );\n                        })}\n                        <Line from={{ x: 0, y: centerY }} to={{ x: innerW, y: centerY }} stroke={t.ruleStrong} strokeWidth={1} />\n                        <text x={0} y={innerH + 4} style={svgText(9, t.faint, t.body)}>untreated ↓</text>\n                        {ticks.map((tk, i) => (\n                            <text key={`x${i}`} x={x(tk)} y={innerH + 16} textAnchor={i === 0 ? 'start' : i === ticks.length - 1 ? 'end' : 'middle'} style={svgText(t.labelSize, t.muted, t.mono)}>{fmt(tk)}</text>\n                        ))}\n                    </Group>\n                </svg>\n            )}\n        </Box>\n    );\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Derive the Experiment surface's **presentation** from the numeric contract.\n *\n * The design principle is *visual-first, derived — never authored*: the bound\n * `experiment` function returns one honest {@link \"@elaraai/e3-ui\"}\n * `Experiment.Types.Result` — the naive vs adjusted effect, confounder balance,\n * propensity overlap, a robustness summary and an **honesty verdict** — and\n * **every** word, colour, bar width and status on the surface is computed here\n * from those numbers plus the column names the user picked. Because the user\n * frames an arbitrary experiment, no sentence can be stored — the confounder\n * reasons, the trade-off line and the refuter descriptions are *templated*.\n *\n * The headline switches on the `verdict`: `causal` / `modest` /\n * `adjustment_insufficient` keep the numeric Answer zone (the engine produced an\n * `adjusted` estimate); `non_identifiable_positivity` and `not_estimable` are\n * **refusals** (`adjusted = none`) that render an explanatory zone instead of a\n * number. The output of `deriveView` is the plain view-model the React shell\n * paints, so the shell JSX stays a dumb painter — all judgement lives here.\n *\n * @packageDocumentation\n */\n\nimport { some, none } from '@elaraai/east';\nimport type { ValueTypeOf, option } from '@elaraai/east';\nimport { Experiment } from '@elaraai/e3-ui/internal';\nimport { getSomeorUndefined } from '@elaraai/east-ui-components';\nimport type { HelpId } from './help.js';\n\n// ---------------------------------------------------------------------------\n// Decoded contract shapes — the JS values the bound `experiment` function\n// returns / the staged config. Mirror the East types in\n// e3-ui/src/experiment/types.ts (snake_case, single consolidated result).\n// ---------------------------------------------------------------------------\n// Boundary marshalling for decoded East vectors → plain `number[]` (via `arr`/`arrI`\n// below). VectorType decodes to a typed array; ArrayType to a plain array — both\n// satisfy these structural widths.\ntype Vec = ArrayLike<number> & Iterable<number>;\ntype VecI = ArrayLike<bigint> & Iterable<bigint>;\n\n// Every decoded shape is DERIVED from the single source of truth (`Experiment.Types.*`)\n// via `ValueTypeOf` — never hand-rolled, so it cannot drift from the East types.\n/** The complete, honest experiment result. */\nexport type ResultValue = ValueTypeOf<typeof Experiment.Types.Result>;\n/** The staged experiment config. */\nexport type ConfigValue = ValueTypeOf<typeof Experiment.Types.Config>;\n/** A named configuration — a vetted question + scope + optional precomputed answer. */\nexport type ConfigurationValue = ValueTypeOf<typeof Experiment.Types.Configuration>;\n/** A confidence interval. */\nexport type Ci = ValueTypeOf<typeof Experiment.Types.Ci>;\n/** The adjusted (like-for-like) effect + CI. */\nexport type AdjustedValue = ValueTypeOf<typeof Experiment.Types.Adjusted>;\n/** One confounder's before-adjustment imbalance. */\nexport type BalanceValue = ValueTypeOf<typeof Experiment.Types.Balance>;\n/** The propensity-overlap diagnostic. */\nexport type OverlapValue = ValueTypeOf<typeof Experiment.Types.Overlap>;\n/** The robustness summary. */\nexport type RefutationValue = ValueTypeOf<typeof Experiment.Types.Refutation>;\n/** The unobserved-confounder sensitivity (tipping) curve. */\nexport type SensitivityValue = ValueTypeOf<typeof Experiment.Types.Sensitivity>;\n/** The ALE dose-response curve. */\nexport type DoseValue = ValueTypeOf<typeof Experiment.Types.DoseResponse>;\n/** The honesty verdict — only `not_estimable` carries a reason. */\nexport type VerdictValue = ValueTypeOf<typeof Experiment.Types.Verdict>;\nexport type VerdictTag = VerdictValue['type'];\n/** A committed journal row. */\nexport type JournalRowValue = ValueTypeOf<typeof Experiment.Types.Journal>[number];\n/** Optional per-column display metadata, keyed by column name. */\nexport type ColMeta = ValueTypeOf<typeof Experiment.Types.ColumnMeta>;\n\n/** A column the surface can frame over — name + coarse type family. */\nexport interface Column { name: string; kind: 'boolean' | 'integer' | 'float' | 'string' | 'datetime' | 'other' }\n\n// ---------------------------------------------------------------------------\n// View-model — the exact shape the shell paints (kept stable so the JSX is a\n// dumb renderer; all judgement is here).\n// ---------------------------------------------------------------------------\nexport interface VMVerdict { tag: VerdictTag; tone: string; label: string }\nexport interface VMConfounder { col: string; reason: string; imbalance: number; level: string; tone: string }\nexport interface VMSpec {\n    treatment: string; treatmentKind: string; outcome: string; outcomeKind: string;\n    comparison: string; confounders: VMConfounder[]; suggestion: string;\n    method: string; target: string; dataLabel: string;\n}\nexport interface VMBalance { col: string; treated: number; control: number; display: string; frac: number; tone: string }\nexport interface VMAnswer {\n    treatment: string; outcome: string; unit: string;\n    naive: number; naiveLo: number; naiveHi: number; effect: number; lo: number; hi: number;\n    clear: boolean; flip: boolean; cautious: boolean;\n    nTotal: bigint; nTreated: bigint; nControl: bigint; nCompared: bigint; nDropped: bigint;\n    balance: VMBalance[];\n}\n/** A refusal zone (the engine returned `adjusted = none`). */\nexport interface VMRefusal {\n    kind: 'positivity' | 'not_estimable';\n    title: string; body: string;\n    evidence: { label: string; value: string }[];\n}\n/** The propensity-overlap diagnostic (always derivable; the centrepiece of a\n *  positivity refusal, a small diagnostic card otherwise). */\nexport interface VMOverlap {\n    treated: number[]; control: number[];\n    commonSupportFrac: number; positivityOk: boolean; supportLabel: string;\n}\nexport interface VMRefuteCheck { name: string; desc: string; value: string; passed: boolean; tip: option<string>; help: HelpId }\nexport interface VMRefute { checks: VMRefuteCheck[]; sens: VMSensitivity | null }\nexport interface VMSensitivity { lo: number[]; mid: number[]; hi: number[]; xTicks: string[]; yTicks: string[] }\nexport interface VMDoseMark { at: number; label: string; tone: string; help: HelpId }\nexport interface VMMarginal { label: string; value: number; frac: number }\nexport interface VMDose {\n    feature: string; outcome: string; lo: number[]; mid: number[]; hi: number[];\n    xTicks: string[]; yTicks: string[]; marks: VMDoseMark[];\n    recoLabel: string; recoEffect: number; recoLo: number; recoHi: number;\n    tradeoff: string; marginal: VMMarginal[];\n}\nexport interface VMJournalRow {\n    treatment: string; outcome: string; confounders: string; effect: string;\n    verdict: string; verdictTone: string; who: string; when: string; preset: option<string>;\n}\n\n// ---------------------------------------------------------------------------\n// Small numeric / formatting helpers.\n// ---------------------------------------------------------------------------\nconst arr = (v: Vec | undefined): number[] => (v ? Array.from(v, Number) : []);\nconst arrI = (v: VecI | undefined): number[] => (v ? Array.from(v, Number) : []);\nconst fmt = (x: number): string => {\n    // Normalise a `-0.0` (from `(-0.04).toFixed(1)`) to `0.0` — sign-confusing on\n    // exactly the degenerate results where clarity matters most.\n    const r = Number.isInteger(x) ? String(x) : x.toFixed(1);\n    return r === '-0.0' ? '0.0' : r;\n};\nconst signed = (x: number): string => {\n    const f = fmt(x);\n    return f === '0' || f === '0.0' || f.startsWith('-') ? f : `+${f}`;\n};\nconst clamp01 = (x: number): number => (x < 0 ? 0 : x > 1 ? 1 : x);\nconst cap = (s: string): string => (s ? s.charAt(0).toUpperCase() + s.slice(1) : s);\n\n\n/** Coarse imbalance band from a standardised mean difference. */\nfunction band(absStd: number): { level: string; tone: string } {\n    if (absStd >= 0.66) return { level: 'large gap', tone: 'neg' };\n    if (absStd >= 0.33) return { level: 'some', tone: 'warn' };\n    return { level: 'small', tone: 'muted' };\n}\n\nconst colMeta = (meta: ColMeta | undefined, col: string) => meta?.get(col);\nconst unitOf = (meta: ColMeta | undefined, col: string): string => getSomeorUndefined(colMeta(meta, col)?.unit) ?? '';\nconst kindOf = (cols: Column[], name: string): Column['kind'] | undefined => cols.find(c => c.name === name)?.kind;\n\n// ---------------------------------------------------------------------------\n// Verdict → tone + headline label.\n// ---------------------------------------------------------------------------\nconst VERDICT_TONE: Record<VerdictTag, string> = {\n    causal: 'pos',\n    modest: 'warn',\n    adjustment_insufficient: 'warn',\n    non_identifiable_positivity: 'neg',\n    not_estimable: 'muted',\n};\nconst VERDICT_LABEL: Record<VerdictTag, string> = {\n    causal: 'Causal effect',\n    modest: 'Modest / unclear',\n    adjustment_insufficient: 'Not trustworthy yet',\n    non_identifiable_positivity: 'No fair comparison',\n    not_estimable: 'Can’t be estimated',\n};\n\nfunction deriveVerdict(v: VerdictValue): VMVerdict {\n    return { tag: v.type, tone: VERDICT_TONE[v.type], label: VERDICT_LABEL[v.type] };\n}\n\n// ---------------------------------------------------------------------------\n// Config → set-up rail.\n// ---------------------------------------------------------------------------\nfunction treatmentKind(cols: Column[], treatment: string): string {\n    switch (kindOf(cols, treatment)) {\n        case 'boolean': return 'yes / no';\n        case 'integer': return 'count';\n        case 'float': return 'number';\n        case 'string': return 'category';\n        default: return 'value';\n    }\n}\n\nfunction deriveSpec(config: ConfigValue, cols: Column[], result: ResultValue | null, meta: ColMeta | undefined, dataLen: number): VMSpec {\n    const tKind = kindOf(cols, config.treatment);\n    const outUnit = unitOf(meta, config.outcome);\n\n    // Join the chosen confounders with their measured imbalance (if a result is\n    // in yet). Reasons are templated from the sign of the gap.\n    // Key balance by the BASE confounder the engine reports (categoricals one-hot\n    // expand to many rows), keeping the most-imbalanced level so the rail reads the\n    // worst gap.\n    const balByCol = new Map<string, BalanceValue>();\n    for (const b of result?.balance ?? []) {\n        const prev = balByCol.get(b.base_column);\n        if (!prev || Math.abs(b.std_diff) > Math.abs(prev.std_diff)) balByCol.set(b.base_column, b);\n    }\n    const confounders: VMConfounder[] = config.common_causes.map(col => {\n        const b = balByCol.get(col);\n        const absStd = b ? Math.abs(b.std_diff) : 0;\n        const { level, tone } = band(absStd);\n        const dir = b ? (b.treated_mean < b.control_mean ? 'lower' : 'higher') : '';\n        const reason = b ? `the treated group ran ${dir} on ${col}` : 'measured once you Run';\n        return { col, reason, imbalance: clamp01(absStd), level, tone };\n    });\n\n    // Suggest the first column not already in play (treatment / outcome / confounder).\n    const inPlay = new Set([config.treatment, config.outcome, ...config.common_causes]);\n    const suggest = cols.find(c => !inPlay.has(c.name));\n    const suggestion = suggest ? `add ${suggest.name}` : '';\n\n    const methodV = getSomeorUndefined(config.method);\n    const method = methodV?.type === 'propensity_score_weighting' ? 'reweighting' : 'regression';\n    const targetV = getSomeorUndefined(config.estimand);\n    const target = targetV && (targetV.type === 'att' || targetV.type === 'atc') ? 'treated' : 'all';\n\n    return {\n        treatment: config.treatment,\n        treatmentKind: treatmentKind(cols, config.treatment),\n        outcome: config.outcome,\n        outcomeKind: outUnit ? `number · ${outUnit}` : 'number',\n        comparison: tKind === 'boolean' ? 'yes · vs no' : 'high · vs low',\n        confounders, suggestion, method, target,\n        dataLabel: `${result ? Number(result.n_total) : dataLen} rows`,\n    };\n}\n\n// ---------------------------------------------------------------------------\n// Result → Answer tab (numeric — adjusted present).\n// ---------------------------------------------------------------------------\nfunction balanceDisplay(b: BalanceValue, categorical: Set<string>): string {\n    // A one-hot level is a proportion (0..1) — format as %. Detect via the engine's\n    // `base_column` so the level matches the original categorical confounder.\n    const isProp = categorical.has(b.base_column) && b.treated_mean >= 0 && b.treated_mean <= 1 && b.control_mean >= 0 && b.control_mean <= 1;\n    return isProp\n        ? `${Math.round(b.treated_mean * 100)}% vs ${Math.round(b.control_mean * 100)}%`\n        : `${b.treated_mean.toFixed(1)} vs ${b.control_mean.toFixed(1)}`;\n}\n\nfunction deriveAnswer(config: ConfigValue, result: ResultValue, adj: AdjustedValue, meta: ColMeta | undefined): VMAnswer {\n    const ci = getSomeorUndefined(adj.ci);\n    const nci = getSomeorUndefined(result.naive_ci);\n    const categorical = new Set(getSomeorUndefined(config.categorical) ?? []);\n    const balance: VMBalance[] = [...result.balance]\n        .sort((a, b) => Math.abs(b.std_diff) - Math.abs(a.std_diff))\n        .map(b => ({\n            col: b.column, treated: b.treated_mean, control: b.control_mean,\n            display: balanceDisplay(b, categorical), frac: clamp01(Math.abs(b.std_diff)), tone: band(Math.abs(b.std_diff)).tone,\n        }));\n    const lo = ci?.lower ?? adj.effect;\n    const hi = ci?.upper ?? adj.effect;\n    const clear = result.verdict.type === 'causal' || (ci ? (lo > 0 || hi < 0) : false);\n    const flip = Math.sign(result.naive) !== Math.sign(adj.effect) && result.naive !== 0;\n    const nDropped = Number(result.n_dropped);\n    const nTotal = Number(result.n_total);\n    return {\n        treatment: config.treatment, outcome: config.outcome, unit: unitOf(meta, config.outcome),\n        naive: result.naive, naiveLo: nci?.lower ?? result.naive, naiveHi: nci?.upper ?? result.naive,\n        effect: adj.effect, lo, hi, clear, flip,\n        cautious: result.verdict.type === 'adjustment_insufficient',\n        nTotal: result.n_total, nTreated: result.n_treated, nControl: result.n_control,\n        nCompared: BigInt(Math.max(0, nTotal - nDropped)), nDropped: result.n_dropped,\n        balance,\n    };\n}\n\n// ---------------------------------------------------------------------------\n// Result → refusal zone (adjusted = none).\n// ---------------------------------------------------------------------------\nfunction deriveRefusal(config: ConfigValue, result: ResultValue): VMRefusal {\n    const nT = Number(result.n_treated), nC = Number(result.n_control), nTot = Number(result.n_total);\n    if (result.verdict.type === 'not_estimable') {\n        const reason = result.verdict.value || 'The treatment barely varies, so no comparison can be formed.';\n        return {\n            kind: 'not_estimable',\n            title: `Can’t estimate the effect of ${config.treatment}`,\n            body: reason,\n            evidence: [\n                { label: 'treated', value: String(nT) },\n                { label: 'untreated', value: String(nC) },\n                { label: 'rows', value: String(nTot) },\n            ],\n        };\n    }\n    if (result.verdict.type === 'non_identifiable_positivity') {\n        const pct = Math.round(result.overlap.common_support_frac * 100);\n        return {\n            kind: 'positivity',\n            title: 'No like-for-like comparison exists',\n            body: `The treated and untreated groups barely overlap on the confounders — only ${pct}% sit in a range where both occur — so there is no fair comparison to adjust toward.`,\n            evidence: [\n                { label: 'common support', value: `${pct}%` },\n                { label: 'treated', value: String(nT) },\n                { label: 'untreated', value: String(nC) },\n            ],\n        };\n    }\n    // Defensive: adjusted=none under any other verdict (contract drift) — refuse\n    // plainly rather than fabricate a positivity explanation.\n    return {\n        kind: 'not_estimable',\n        title: `Can’t estimate the effect of ${config.treatment}`,\n        body: 'The engine could not produce a like-for-like estimate for this configuration.',\n        evidence: [\n            { label: 'treated', value: String(nT) },\n            { label: 'untreated', value: String(nC) },\n            { label: 'rows', value: String(nTot) },\n        ],\n    };\n}\n\n// ---------------------------------------------------------------------------\n// Result → overlap diagnostic (the propensity histogram).\n// ---------------------------------------------------------------------------\nfunction deriveOverlap(o: OverlapValue): VMOverlap {\n    const pct = Math.round(o.common_support_frac * 100);\n    return {\n        treated: arr(o.treated_propensity),\n        control: arr(o.control_propensity),\n        commonSupportFrac: o.common_support_frac,\n        positivityOk: o.positivity_ok,\n        supportLabel: `${pct}% common support`,\n    };\n}\n\n// ---------------------------------------------------------------------------\n// Refutation → Trust tab (flat scalar fields; only the requested checks).\n// ---------------------------------------------------------------------------\n/** First x where the piecewise-linear (x,y) curve crosses zero, or null. */\nfunction zeroCrossing(xs: number[], ys: number[]): number | null {\n    for (let i = 1; i < ys.length && i < xs.length; i++) {\n        const y0 = ys[i - 1]!, y1 = ys[i]!;\n        if ((y0 > 0 && y1 <= 0) || (y0 < 0 && y1 >= 0)) {\n            const t = y0 / (y0 - y1);\n            return xs[i - 1]! + t * (xs[i]! - xs[i - 1]!);\n        }\n    }\n    return null;\n}\n\nfunction deriveRefute(r: RefutationValue, adj: AdjustedValue | undefined): VMRefute {\n    const checks: VMRefuteCheck[] = [];\n    const est = adj?.effect ?? 0;\n\n    const placeboEffect = getSomeorUndefined(r.placebo_effect);\n    const placeboPasses = getSomeorUndefined(r.placebo_passes);\n    if (placeboEffect !== undefined || placeboPasses !== undefined) {\n        checks.push({\n            name: 'Shuffle test',\n            desc: 'Shuffle which rows were treated; a real effect should collapse to zero.',\n            value: placeboEffect !== undefined ? `→ ${signed(placeboEffect)}` : (placeboPasses ? 'passed' : 'failed'),\n            passed: placeboPasses ?? (placeboEffect !== undefined && Math.abs(placeboEffect) < Math.max(0.5, Math.abs(est) * 0.15)),\n            tip: some('Randomly re-label which rows were treated. A genuine effect should vanish.'),\n            help: 'check_shuffle',\n        });\n    }\n    const ds = getSomeorUndefined(r.data_subset_effect);\n    if (ds !== undefined) {\n        const dstd = getSomeorUndefined(r.data_subset_std) ?? 0;\n        checks.push({\n            name: 'Drop-some test',\n            desc: 'Re-estimate on random subsamples; a trustworthy effect stays put.',\n            value: `${fmt(ds)} ± ${fmt(dstd)}`,\n            passed: Math.abs(ds - est) < Math.max(0.5, Math.abs(est) * 0.2),\n            tip: none,\n            help: 'check_dropsome',\n        });\n    }\n    const rcc = getSomeorUndefined(r.random_cc_within_ci);\n    if (rcc !== undefined) {\n        checks.push({\n            name: 'Decoy cause',\n            desc: 'Add an irrelevant random factor; the answer should not move.',\n            value: rcc ? 'within range' : 'moved',\n            passed: rcc,\n            tip: none,\n            help: 'check_decoy',\n        });\n    }\n    const sens = getSomeorUndefined(r.sensitivity);\n    const evalue = getSomeorUndefined(r.robustness_value);\n    if (sens !== undefined || evalue !== undefined) {\n        const strengths = sens ? arr(sens.strengths) : [];\n        const effects = sens ? arr(sens.effects) : [];\n        const tip = sens ? zeroCrossing(strengths, effects) : null;\n        const value = tip !== null\n            ? `tips at ${fmt(tip)}`\n            : evalue !== undefined ? `E-value ${fmt(evalue)}` : 'holds throughout';\n        checks.push({\n            name: 'Hidden cause',\n            desc: 'How strong an unrecorded common cause would need to be to overturn the result.',\n            value,\n            passed: tip === null,\n            tip: some('Something unrecorded could drive both the treatment choice and the outcome.'),\n            help: 'check_hidden',\n        });\n    }\n\n    // Sensitivity band: the unobserved curve is the mid line; the band carries\n    // the estimate's CI half-width (≈ constant, as in practice).\n    let sensVM: VMSensitivity | null = null;\n    if (sens !== undefined) {\n        const mid = arr(sens.effects);\n        if (mid.length) {\n            const ci = getSomeorUndefined(adj?.ci);\n            const half = ci ? Math.abs(ci.upper - ci.lower) / 2 : 0;\n            const lo = mid.map(m => m - half);\n            const hi = mid.map(m => m + half);\n            const yLo = Math.min(0, ...lo), yHi = Math.max(...hi, 0);\n            sensVM = { lo, mid, hi, xTicks: ['none', 'weaker', 'stronger'], yTicks: [fmt(yLo), fmt((yLo + yHi) / 2), fmt(yHi)] };\n        }\n    }\n    return { checks, sens: sensVM };\n}\n\n// ---------------------------------------------------------------------------\n// Dose response → How-much tab.\n// ---------------------------------------------------------------------------\nfunction deriveDose(dose: DoseValue, config: ConfigValue, meta: ColMeta | undefined): VMDose {\n    const grid = arr(dose.grid);\n    const mid = arr(dose.effect);\n    const lo = getSomeorUndefined(dose.lower) ? arr(getSomeorUndefined(dose.lower)) : mid.slice();\n    const hi = getSomeorUndefined(dose.upper) ? arr(getSomeorUndefined(dose.upper)) : mid.slice();\n    const sizes = arrI(dose.size);\n    // The recommendation is a point on the FEATURE x-axis (e.g. days), never the\n    // outcome unit — labelling \"3\" as \"3 MPa\" would be semantically wrong.\n    const featureUnit = unitOf(meta, dose.feature);\n\n    // \"you are here\" = the busiest dose bucket; \"sweet spot\" = where the lower CI\n    // first clears zero and marginal gain has flattened.\n    const here = sizes.length ? sizes.indexOf(Math.max(...sizes)) : 0;\n    const marg = mid.map((m, i) => (i === 0 ? 0 : m - mid[i - 1]!));\n    const maxMarg = Math.max(1e-9, ...marg.map(Math.abs));\n    let sweet = mid.length - 1;\n    for (let i = 1; i < mid.length; i++) {\n        if (lo[i]! > 0 && Math.abs(marg[i]!) < 0.25 * maxMarg) { sweet = i; break; }\n    }\n\n    const xi = grid.length ? [0, Math.floor(grid.length / 2), grid.length - 1] : [];\n    const xTicks = xi.map(i => fmt(grid[i]!));\n    const yLo = Math.min(0, ...lo), yHi = Math.max(...hi, 0);\n    const yTicks = [fmt(yLo), fmt((yLo + yHi) / 2), fmt(yHi)];\n\n    // Trim the trailing flat tail (steps whose marginal gain is negligible) so\n    // the strip shows only the decision-relevant range.\n    const margSteps = marg.slice(1);\n    let lastStep = margSteps.length - 1;\n    while (lastStep > 0 && Math.abs(margSteps[lastStep]!) < 0.12 * maxMarg) lastStep--;\n    const marginal: VMMarginal[] = margSteps.slice(0, lastStep + 1).map((v, i) => ({ label: `${fmt(grid[i + 1]!)}`, value: v, frac: clamp01(Math.abs(v) / maxMarg) }));\n\n    const stepFrom = here < sweet ? here : Math.max(0, sweet - 1);\n    const gainToSweet = (mid[sweet] ?? 0) - (mid[stepFrom] ?? 0);\n    const nextGain = sweet + 1 < mid.length ? mid[sweet + 1]! - mid[sweet]! : 0;\n    const tradeoff = `Going from ${fmt(grid[stepFrom] ?? 0)} to ${fmt(grid[sweet] ?? 0)} adds ${signed(gainToSweet)}; the next step adds only ${signed(nextGain)}.`;\n\n    const marks: VMDoseMark[] = [];\n    if (sizes.length) marks.push({ at: here, label: 'you are here', tone: 'muted', help: 'dose_here' });\n    marks.push({ at: sweet, label: 'sweet spot', tone: 'pos', help: 'dose_sweet' });\n\n    return {\n        feature: dose.feature, outcome: config.outcome, lo, mid, hi, xTicks, yTicks, marks,\n        recoLabel: `≈ ${fmt(grid[sweet] ?? 0)}${featureUnit ? ' ' + featureUnit : ''}`,\n        recoEffect: mid[sweet] ?? 0, recoLo: lo[sweet] ?? 0, recoHi: hi[sweet] ?? 0,\n        tradeoff, marginal,\n    };\n}\n\n// ---------------------------------------------------------------------------\n// Journal.\n// ---------------------------------------------------------------------------\nfunction relTime(d: Date, now: Date): string {\n    const days = Math.floor((now.getTime() - d.getTime()) / 86_400_000);\n    if (days <= 0) return 'today';\n    if (days === 1) return 'yesterday';\n    if (days < 7) return d.toLocaleDateString(undefined, { weekday: 'short' });\n    return 'last wk';\n}\n\n/** Short journal word + tone from the STORED verdict (not recomputed). */\nconst VERDICT_WORD: Record<VerdictTag, string> = {\n    causal: 'causal',\n    modest: 'modest',\n    adjustment_insufficient: 'not robust',\n    non_identifiable_positivity: 'no overlap',\n    not_estimable: 'n/a',\n};\n\nfunction deriveJournalRow(row: JournalRowValue, now: Date): VMJournalRow {\n    const adj = getSomeorUndefined(row.adjusted);\n    return {\n        treatment: row.config.treatment, outcome: row.config.outcome,\n        confounders: row.config.common_causes.join(', '),\n        effect: adj !== undefined ? signed(adj) : signed(row.naive),\n        verdict: VERDICT_WORD[row.verdict.type],\n        verdictTone: VERDICT_TONE[row.verdict.type],\n        who: row.committed_by, when: relTime(row.committed_at, now),\n        // The originating preset id (resolved to a label by the surface); `none` for a\n        // free-form / pre-presets row.\n        preset: row.preset,\n    };\n}\n\n// ---------------------------------------------------------------------------\n// Public entry — assemble the whole view-model.\n// ---------------------------------------------------------------------------\nexport interface ExperimentView {\n    spec: VMSpec;\n    verdict: VMVerdict | null;\n    answer: VMAnswer | null;\n    refusal: VMRefusal | null;\n    overlap: VMOverlap | null;\n    refute: VMRefute | null;\n    dose: VMDose | null;\n    journal: VMJournalRow[] | null;\n}\n\n/**\n * Derive the full view-model from the staged config, the bound data's columns\n * and the (possibly absent) single experiment result.\n *\n * @param config - The staged {@link ConfigValue}.\n * @param ranConfig - The config that produced `result` (the result deck reads this so its\n *   strings never drift ahead of the numbers on a live edit before the next Run).\n * @param cols - The bound dataset's columns (name + type family).\n * @param result - The experiment result, or `null` until the first Run settles.\n * @param journal - Committed rows, or `null`.\n * @param meta - Optional per-column display metadata.\n * @param dataLen - Row count of the bound dataset (for the header label).\n * @param now - \"Now\" for relative journal timestamps (injected for determinism).\n */\nexport function deriveView(\n    config: ConfigValue,\n    ranConfig: ConfigValue,\n    cols: Column[],\n    result: ResultValue | null,\n    journal: JournalRowValue[] | null,\n    meta: ColMeta | undefined,\n    dataLen: number,\n    now: Date,\n): ExperimentView {\n    const adj = result ? getSomeorUndefined(result.adjusted) : undefined;\n    const refutation = result ? getSomeorUndefined(result.refutation) : undefined;\n    const doseR = result ? getSomeorUndefined(result.dose_response) : undefined;\n    return {\n        // The set-up rail reflects the LIVE config (the editor); the result deck\n        // reflects RANCONFIG — the config that produced `result` — so the result\n        // strings never drift ahead of the numbers on a live picker edit.\n        spec: deriveSpec(config, cols, result, meta, dataLen),\n        verdict: result ? deriveVerdict(result.verdict) : null,\n        answer: result && adj ? deriveAnswer(ranConfig, result, adj, meta) : null,\n        refusal: result && !adj ? deriveRefusal(ranConfig, result) : null,\n        overlap: result ? deriveOverlap(result.overlap) : null,\n        refute: refutation ? deriveRefute(refutation, adj) : null,\n        dose: doseR && doseR.effect.length ? deriveDose(doseR, ranConfig, meta) : null,\n        journal: journal ? journal.map(r => deriveJournalRow(r, now)) : null,\n    };\n}\n\n// ---------------------------------------------------------------------------\n// Validation design — the \"Validate\" tab view-model.\n// ---------------------------------------------------------------------------\n\n/** Decoded `ExperimentDesignType` (the `design` function's result). */\nexport type DesignValue = ValueTypeOf<typeof Experiment.Types.Design>;\n\nexport interface VMDesignOption { label: string; nTotal: number; nTreated: number; nControl: number; treatedShare: number }\nexport interface VMDesignMatch { col: string; frac: number; tone: string; display: string }\nexport interface VMDesign {\n    /** Verdict-framed eyebrow headline. */\n    headline: string;\n    rationale: string;\n    /** The recommended (first) option — the KPI + split meter read from this. */\n    primary: VMDesignOption;\n    /** Alternate split options (rows under the primary). */\n    alternates: VMDesignOption[];\n    /** Categories to match the arms on, with imbalance bar widths from the result. */\n    matchOn: VMDesignMatch[];\n    /** Power curve: total-N → chance of detecting (0..100), with target + \"you're here\". */\n    curve: { mid: number[]; xTicks: string[]; marks: VMDoseMark[] };\n    /** Signed target effect with unit, e.g. \"+5.2 MPa\". */\n    targetLabel: string;\n    targetPctLabel: string;\n    /** create_control → frame the split as a hold-back; no current-power marker. */\n    holdback: boolean;\n    /** non_identifiable_positivity → point at the overlap chart. */\n    showOverlap: boolean;\n    /** Effect too faint to size sanely — the head-count is a capped sentinel. */\n    faint: boolean;\n}\n\n// Basis → eyebrow headline (the verdict-driven framing).\nconst DESIGN_HEADLINE: Record<string, string> = {\n    detect_observed: 'Confirm it with a controlled trial',\n    de_bias: 'Make it trustworthy with a controlled trial',\n    resolve_vs_null: 'Settle it with a bigger trial',\n    restrict_to_overlap: 'You can’t compare yet',\n    create_control: 'Hold some back next time',\n};\n\nfunction deriveDesignOption(o: DesignValue['options'][number]): VMDesignOption {\n    return {\n        label: o.label,\n        nTotal: Number(o.n_total),\n        nTreated: Number(o.n_treated),\n        nControl: Number(o.n_control),\n        treatedShare: o.treated_share,\n    };\n}\n\n/** Design value → the \"Validate\" tab view-model (numbers → recipe + chart). */\nexport function deriveDesign(d: DesignValue, result: ResultValue | null, ranConfig: ConfigValue, meta: ColMeta | undefined): VMDesign {\n    const basis = d.basis.type;\n    const outcome = ranConfig.outcome;\n    const unit = unitOf(meta, outcome);\n    const options = d.options.map(deriveDesignOption);\n    const primary = options[0] ?? { label: 'Even split', nTotal: 0, nTreated: 0, nControl: 0, treatedShare: 0.5 };\n\n    // Match-on bars: join each category to the result's pre-adjustment imbalance,\n    // by BASE confounder (categoricals one-hot expand to col=level / col_level).\n    const balByCol = new Map<string, BalanceValue>();\n    for (const b of result?.balance ?? []) {\n        const prev = balByCol.get(b.base_column);\n        if (!prev || Math.abs(b.std_diff) > Math.abs(prev.std_diff)) balByCol.set(b.base_column, b);\n    }\n    const matchOn: VMDesignMatch[] = d.match_on.map(col => {\n        const b = balByCol.get(col);\n        const absStd = b ? Math.abs(b.std_diff) : 0;\n        const { tone } = band(absStd);\n        return { col, frac: clamp01(absStd), tone, display: getSomeorUndefined(colMeta(meta, col)?.label) ?? col };\n    });\n\n    // Power curve → a single mid line (lo=hi=mid → no band); a \"target\" mark at the\n    // bin nearest the recommended N, and \"you're here\" at the current sample size.\n    // Zip n/power to the common length — the contract allows divergence; a defined\n    // current power past the grid is shown off-scale rather than dropped silently.\n    const ns = arrI(d.power_curve.n);\n    const powers = arr(d.power_curve.power);\n    const len = Math.min(ns.length, powers.length);\n    const nearest = (target: number) => {\n        let bi = 0, bd = Infinity;\n        for (let i = 0; i < len; i++) { const dd = Math.abs(ns[i]! - target); if (dd < bd) { bd = dd; bi = i; } }\n        return bi;\n    };\n    const xTicks = len ? [String(ns[0]), String(ns[Math.floor((len - 1) / 2)]), String(ns[len - 1])] : [];\n    const marks: VMDoseMark[] = [];\n    if (len) marks.push({ at: nearest(primary.nTotal), label: `target ${(d.target_power * 100).toFixed(0)}%`, tone: 'pos', help: 'validate_power' });\n    // \"you're here\" — only when there's a comparison group to power from.\n    const cp = getSomeorUndefined(d.current_power);\n    if (cp !== undefined && len) {\n        const curN = result ? Number(result.n_total) : 0;\n        if (curN > 0) {\n            const offScale = curN >= (ns[len - 1] ?? 0);\n            marks.push({\n                at: offScale ? len - 1 : nearest(curN),\n                label: offScale ? `you’re here · ${(cp * 100).toFixed(0)}% (off-scale)` : `you’re here ${(cp * 100).toFixed(0)}%`,\n                tone: 'muted', help: 'validate_power',\n            });\n        }\n    }\n\n    // Sentinel: the engine clamps the standardised effect to ≥0.01, so an effect\n    // too faint to size sanely returns a capped head-count — flag it, don't present\n    // a precise-looking million as a recommendation.\n    const faint = d.outcome_sd > 0 && Math.abs(d.target_effect) / d.outcome_sd <= 0.011;\n\n    return {\n        headline: DESIGN_HEADLINE[basis] ?? 'Validate this',\n        rationale: d.rationale,\n        primary,\n        alternates: options.slice(1),\n        matchOn,\n        curve: { mid: powers.slice(0, len).map(p => p * 100), xTicks, marks },\n        targetLabel: `${signed(d.target_effect)}${unit ? ` ${unit}` : ''}`,\n        targetPctLabel: `${(d.target_power * 100).toFixed(0)}%`,\n        holdback: basis === 'create_control',\n        showOverlap: basis === 'restrict_to_overlap',\n        faint,\n    };\n}\n\n// Derived helpers the shell also needs for the header / badge / banner.\nexport { fmt, signed, cap, unitOf };\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * React renderer for the `Experiment` causal-experiment surface.\n *\n * **Interactive and generic over the input row.** Binds an input dataset + a\n * staged config + ONE `experiment` function; introspects the dataset's row\n * struct to drive the treatment / outcome / confounder pickers, runs the bound\n * function on **Run** via the shared `Func.bind` runtime, and **derives** every\n * word / colour / bar from the single returned result + its honesty **verdict**.\n * Editing a picker stages a new config and marks the result stale; **Commit**\n * appends the verdict to the journal.\n *\n * The Answer tab switches on the verdict: `causal` / `modest` /\n * `adjustment_insufficient` show the numeric estimate (the engine produced an\n * `adjusted` effect); `non_identifiable_positivity` renders the propensity\n * overlap histogram and `not_estimable` the reason + evidence — both **refusals**\n * where `adjusted = none`.\n *\n * **Design-system native, like Decision.** No hand-rolled styles: shared recipes\n * (`button` / `barStrip` / `status` / `badge` / `chip` / `eyebrowRow` /\n * `segmentGroup`), layer styles (`frame` / `header.bar` / `card` /\n * `banner.stale`) and text styles. The population filter reuses Slice's\n * `SliceEditPopover` + `SlicePredicateBuilder` + `formatPredicate` and narrows\n * the rows UI-side before the call (population is not part of the config\n * contract). Charts are visx (see {@link \"./charts\"}).\n *\n * @packageDocumentation\n */\n\nimport { memo, useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from 'react';\nimport { Box, Text, Menu, Portal, Spinner, useRecipe, useSlotRecipe } from '@chakra-ui/react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowDown, faArrowUp, faCheck, faChevronDown, faPlus, faTriangleExclamation, faXmark } from '@fortawesome/free-solid-svg-icons';\nimport { fromEastTypeValue, variant, some, none, equalFor, type EastType, type EastTypeValue, type ValueTypeOf } from '@elaraai/east';\nimport { Experiment } from '@elaraai/e3-ui/internal';\nimport {\n    implementUIComponent,\n    SlicePredicateBuilder, SliceEditPopover, formatPredicate,\n    getSomeorUndefined,\n    type SliceFieldValue, type PredicateValue,\n} from '@elaraai/east-ui-components';\n\nimport { useBindingValue } from './bind-runtime.js';\nimport { useFuncCall, type FuncCallError } from './run-runtime.js';\nimport { getBindingTypes, getReactiveDatasetCache } from '../platform/index.js';\nimport { ForestPlot, AreaRange, OverlapHistogram } from './charts.js';\nimport { GuidanceProvider, GuidanceToggle, Help } from './help-ui.js';\nimport { type HelpId } from './help.js';\nimport {\n    deriveView, deriveDesign,\n    signed,\n    type Column, type ConfigValue, type ResultValue, type JournalRowValue, type DesignValue, type VMDesign, type ConfigurationValue,\n} from './derive.js';\n\n// The neutral noun for a row. `<Experiment>` is generic over any causal-analytics\n// dataset, so the renderer never assumes a domain (customer / batch / patient / …)\n// — `record(s)` reads correctly across all of them. Used in both the guidance\n// glossary (via `helpVars`) and the rail's static prose.\nconst SUBJECT_ONE = 'record';\nconst SUBJECT_MANY = 'records';\n\n// Each Run encodes + ships the full filtered dataset to the bound function, so a\n// very large dataset shouldn't auto-run on mount (it would jank before the user\n// has even framed the question) — past this row count we wait for an explicit Run.\nconst AUTORUN_MAX_ROWS = 50_000;\n\n// Tone → semantic colour token (Box `bg` / Text `color`). Semantic roles, no hex.\nconst TONE_TOKEN: Record<string, string> = {\n    neg: 'fg.danger', pos: 'fg.success', warn: 'fg.warning', muted: 'fg.muted', brand: 'brand.solid',\n};\nconst toneToken = (t: string): string => TONE_TOKEN[t] ?? 'brand.solid';\n\n// ---------------------------------------------------------------------------\n// Payload decode + column introspection.\n// ---------------------------------------------------------------------------\ntype ExperimentValueIR = ValueTypeOf<typeof Experiment.Component.schema>;\ntype Tab = 'answer' | 'trust' | 'dose' | 'validate';\n\n\nfunction kindOfTypeValue(t: EastTypeValue): Column['kind'] {\n    switch (t.type) {\n        case 'Boolean': return 'boolean';\n        case 'Integer': return 'integer';\n        case 'Float': return 'float';\n        case 'String': return 'string';\n        case 'DateTime': return 'datetime';\n        default: return 'other';\n    }\n}\n\n/** Recover the bound dataset's columns from the binding registry (Table-style). */\nfunction useColumns(workspace: string, source: unknown): { columns: Column[]; rowArrayType: EastType | null } {\n    const types = source ? getBindingTypes(workspace, source as never) : undefined;\n    return useMemo(() => {\n        const st = types?.sourceType;\n        if (!st || st.type !== 'Array') return { columns: [], rowArrayType: null };\n        const el = st.value as EastTypeValue;\n        const fields = el.type === 'Struct' ? (el.value as { name: string; type: EastTypeValue }[]) : [];\n        return {\n            columns: fields.map(f => ({ name: f.name, kind: kindOfTypeValue(f.type) })),\n            rowArrayType: fromEastTypeValue(st),\n        };\n    }, [types?.sourceType]);\n}\n\n// ---------------------------------------------------------------------------\n// UI-side population filter — population is NOT part of the config contract; the\n// FilterRail predicates narrow the rows here, before the experiment call. Safe\n// by construction: an op we don't model keeps the row (never silently drops).\n// ---------------------------------------------------------------------------\ntype Pred = { value: { fieldId: string; op: { type: string; value: unknown } } };\nfunction rowMatchesAll(row: Record<string, unknown>, preds: PredicateValue[]): boolean {\n    return preds.every(p => {\n        const { fieldId, op } = (p as unknown as Pred).value;\n        const v = row[fieldId];\n        const ov = op.value;\n        switch (op.type) {\n            case 'eq': case 'is': return v === ov;\n            case 'neq': return v !== ov;\n            case 'lt': return num(v) != null && num(ov) != null ? num(v)! < num(ov)! : true;\n            case 'lte': return num(v) != null && num(ov) != null ? num(v)! <= num(ov)! : true;\n            case 'gt': return num(v) != null && num(ov) != null ? num(v)! > num(ov)! : true;\n            case 'gte': return num(v) != null && num(ov) != null ? num(v)! >= num(ov)! : true;\n            case 'in': return ov instanceof Set ? ov.has(v) : true;\n            case 'notIn': return ov instanceof Set ? !ov.has(v) : true;\n            default: return true; // between / before / after / contains / matches — keep (modelled UI-side later)\n        }\n    });\n}\nconst num = (x: unknown): number | null => (typeof x === 'number' ? x : typeof x === 'bigint' ? Number(x) : null);\n\n// ---------------------------------------------------------------------------\n// Small presentational helpers (text-style / layer-style based).\n// ---------------------------------------------------------------------------\n\n/** Mono uppercase eyebrow caption for a card section (design `.xp-cap`). */\nfunction Cap({ children, help }: { children: ReactNode; help?: HelpId }) {\n    return <Text textStyle=\"caption.eyebrow\" fontSize=\"9px\" mb=\"2.5\">{help ? <Help id={help}>{children}</Help> : children}</Text>;\n}\n\n/** A section card (the `.frame`-inset cards in the result deck). */\nfunction Card({ children, mt = '3' }: { children: ReactNode; mt?: string }) {\n    return <Box layerStyle=\"card\" p=\"3.5\" borderRadius=\"lg\" mt={mt}>{children}</Box>;\n}\n\n/** The failure detail of a failed `experiment` run — the runner outcome message\n *  plus the captured stderr/stdout tail (so a silent failure, e.g. a missing\n *  runner, is visible in the surface instead of \"nothing happens\"). */\nfunction RunError({ error }: { error: FuncCallError }) {\n    const tail = (error.stderr || error.stdout || '').trim().split('\\n').slice(-12).join('\\n');\n    return (\n        <Box layerStyle=\"banner.stale\" display=\"flex\" flexDirection=\"column\" gap=\"2\" mt=\"3\">\n            <Box display=\"inline-flex\" alignItems=\"flex-start\" gap=\"2\" color=\"fg.danger\">\n                <Box as=\"span\" mt=\"0.5\" fontSize=\"12px\" flexShrink=\"0\"><FontAwesomeIcon icon={faTriangleExclamation} /></Box>\n                <Text textStyle=\"body.sm\" color=\"fg.default\"><Text as=\"span\" fontWeight=\"bold\">Could not run the experiment.</Text> {error.message}</Text>\n            </Box>\n            {tail && (\n                <Box as=\"pre\" m=\"0\" p=\"2\" maxH=\"160px\" overflow=\"auto\" bg=\"bg.canvas\" borderRadius=\"md\" borderWidth=\"1px\" borderColor=\"border.subtle\"\n                    fontFamily=\"mono\" fontSize=\"11px\" color=\"fg.muted\" whiteSpace=\"pre-wrap\">{tail}</Box>\n            )}\n        </Box>\n    );\n}\n\n/** A header action button (Run / Commit). */\nfunction ActionButton({ button, variant, label, onClick, disabled, pulse = false }: {\n    button: ReturnType<typeof useRecipe>;\n    variant: 'solid' | 'ghost'; label: string; onClick: () => void; disabled: boolean; pulse?: boolean;\n}) {\n    return (\n        <Box as=\"button\" css={button({ variant, size: 'sm' })}\n            onClick={disabled ? undefined : onClick} aria-disabled={disabled || undefined}\n            opacity={disabled ? 0.5 : undefined} cursor={disabled ? 'not-allowed' : 'pointer'}\n            animation={pulse && !disabled ? 'pulse 1.6s infinite' : undefined}>\n            {label}\n        </Box>\n    );\n}\n\n/** A per-tab shimmer placeholder shown while a (re-)run is in flight, so the deck\n *  never asserts the previous result as current. Built from the shared `skeleton`\n *  recipe (line / block variants) — the single \"result not ready\" vocabulary. */\nfunction DeckSkeleton({ tab }: { tab: Tab }) {\n    const sk = useRecipe({ key: 'skeleton' });\n    const bar = (w: string, h: string) => <Box css={sk({ variant: 'line' })} width={w} height={h} />;\n    const block = (h: string) => <Box css={sk({ variant: 'block' })} width=\"100%\" minHeight={h} />;\n    return (\n        <Box p=\"4.5\" display=\"flex\" flexDirection=\"column\" gap=\"4\">\n            {tab === 'answer' && (\n                <>\n                    <Box display=\"flex\" gap=\"4.5\" alignItems=\"flex-end\">\n                        <Box display=\"flex\" flexDirection=\"column\" gap=\"2\">{bar('64px', '10px')}{bar('120px', '32px')}</Box>\n                        {bar('170px', '24px')}\n                    </Box>\n                    {block('120px')}\n                    {block('120px')}\n                </>\n            )}\n            {tab === 'trust' && (<>{bar('70%', '14px')}{block('160px')}</>)}\n            {tab === 'dose' && (\n                <>\n                    {block('240px')}\n                    <Box display=\"grid\" gridTemplateColumns=\"1fr 1fr\" gap=\"3\">{block('90px')}{block('90px')}</Box>\n                </>\n            )}\n            {tab === 'validate' && (\n                <>\n                    <Box display=\"flex\" gap=\"5\" alignItems=\"flex-end\">{bar('120px', '32px')}{bar('200px', '10px')}</Box>\n                    {block('110px')}\n                    {block('150px')}\n                </>\n            )}\n        </Box>\n    );\n}\n\n/**\n * Full-surface loading skeleton — mirrors the real header + 2-column (setup rail /\n * result deck) layout so the shell is present from the first frame and live content\n * fills in WITHOUT a layout jump. Used while `data` / `configs` are still resolving.\n */\nfunction LoadingSkeleton() {\n    const sk = useRecipe({ key: 'skeleton' });\n    const line = (w: string, h: string) => <Box css={sk({ variant: 'line' })} width={w} height={h} />;\n    const block = (h: string) => <Box css={sk({ variant: 'block' })} width=\"100%\" minHeight={h} />;\n    return (\n        <Box layerStyle=\"frame\" overflow=\"visible\">\n            <Box layerStyle=\"header.bar\" display=\"flex\" alignItems=\"center\" gap=\"3.5\">\n                {line('260px', '20px')}\n                <Box flex=\"1\" />\n                {line('72px', '16px')}\n            </Box>\n            <Box display=\"grid\" gridTemplateColumns=\"304px minmax(0,1fr)\" alignItems=\"start\">\n                <Box borderRightWidth=\"1px\" borderColor=\"border.subtle\" p=\"4.5\" display=\"flex\" flexDirection=\"column\" gap=\"5\">\n                    {[0, 1, 2, 3].map(n => (\n                        <Box key={n} display=\"flex\" flexDirection=\"column\" gap=\"2\">\n                            {line('150px', '12px')}\n                            {block('40px')}\n                        </Box>\n                    ))}\n                </Box>\n                <DeckSkeleton tab=\"answer\" />\n            </Box>\n        </Box>\n    );\n}\n\n// ---------------------------------------------------------------------------\n// Renderer.\n// ---------------------------------------------------------------------------\nexport interface EastChakraExperimentProps {\n    value: ExperimentValueIR;\n    storageKey: string;\n}\n\n// Structural equality over the decoded payload — the MANDATORY memo+equalFor rule\n// (east-ui-components/CLAUDE.md). The payload is all data structs (binding\n// descriptors {name}, diff handles), so equalFor compares cleanly.\nconst experimentValueEqual = equalFor(Experiment.Component.schema);\n\nconst EastChakraExperiment = memo(function EastChakraExperiment({ value }: EastChakraExperimentProps) {\n    const v = value as unknown as ValueTypeOf<typeof Experiment.Types.Payload>;\n\n    // Recipes — acquired once (the call-once / spread-slot idiom).\n    const button = useRecipe({ key: 'button' });\n    const chip = useRecipe({ key: 'chip' });\n    const badge = useRecipe({ key: 'badge' });\n    const bs = useSlotRecipe({ key: 'barStrip' })({});\n    const statusR = useSlotRecipe({ key: 'status' });\n    const es = useSlotRecipe({ key: 'eyebrowRow' })({});\n\n    const workspace = getReactiveDatasetCache().getConfig().workspace ?? '';\n    const data = useBindingValue<Record<string, unknown>[]>(v.data as never);\n    const journalBind = useBindingValue<JournalRowValue[]>(v.journal.type === 'some' ? (v.journal.value as never) : null);\n    const meta = getSomeorUndefined(v.columnMeta);\n    const readonly = getSomeorUndefined(v.readonly) ?? false;\n    // The questions — a read-only bound list. Each entry is self-contained (its\n    // `spec` + optional precomputed `result`/`design`); selecting one seeds the\n    // working config below. The list itself is never mutated by the UI.\n    const configsBind = useBindingValue<ConfigurationValue[]>(v.configs as never);\n    const configs = useMemo(() => configsBind.value ?? [], [configsBind.value]);\n    const [currentConfigId, setCurrentConfigId] = useState<string | undefined>(undefined);\n    // Resolve the selected entry by id (resilient to a removed / relabelled entry —\n    // falls back to the first); default to the first once the list decodes.\n    const selectedEntry = useMemo<ConfigurationValue | undefined>(\n        () => configs.find(c => c.id === currentConfigId) ?? configs[0],\n        [configs, currentConfigId]);\n    useEffect(() => {\n        const first = configs[0];\n        if (currentConfigId === undefined && first !== undefined) setCurrentConfigId(first.id);\n    }, [configs, currentConfigId]);\n    // Bucket entries by their optional `group`, preserving first-appearance order\n    // (ungrouped entries fall under one default section header).\n    const configGroups = useMemo(() => {\n        const buckets = new Map<string, ConfigurationValue[]>();\n        for (const c of configs) {\n            const label = getSomeorUndefined(c.group) ?? 'Questions';\n            const bucket = buckets.get(label);\n            if (bucket) bucket.push(c); else buckets.set(label, [c]);\n        }\n        return [...buckets].map(([label, items]) => ({ label, items }));\n    }, [configs]);\n\n    const { columns, rowArrayType } = useColumns(workspace, v.data.source);\n    // The working config + population are INTERNAL — seeded from the selected entry\n    // when the selection changes, edited locally, never written back to the bound list.\n    const [workingConfig, setWorkingConfig] = useState<ConfigValue | undefined>(undefined);\n    const [localPop, setLocalPop] = useState<PredicateValue[]>([]);\n    const [stale, setStale] = useState(false);\n    const seededIdRef = useRef<string | undefined>(undefined);\n    useEffect(() => {\n        const id = selectedEntry?.id;\n        if (id === seededIdRef.current) return;   // same entry re-decoded → keep edits\n        const switching = seededIdRef.current !== undefined;  // a real switch vs the first load\n        seededIdRef.current = id;\n        setWorkingConfig(selectedEntry?.spec);\n        setLocalPop(getSomeorUndefined(selectedEntry?.population) ?? []);\n        // Pulse \"stale\" (prompt a Run) ONLY when switching questions with a live estimator\n        // bound and no precomputed answer — the prior live result no longer matches. Never\n        // on first load, never on a precomputed/no-estimator surface (nothing to re-run).\n        const precomputed = selectedEntry?.result.type === 'some';\n        const hasEstimator = v.experiment.type === 'some';\n        setStale(switching && hasEstimator && !precomputed);\n    }, [selectedEntry, v.experiment.type]);\n    const config = workingConfig;\n\n    // Population is UI-side — it narrows the rows passed to the call and NEVER enters\n    // the config the experiment function receives. Seeded from the selected entry above.\n    const population = localPop;\n    const filteredRows = useMemo(() => {\n        if (!data.value) return null;\n        return population.length ? data.value.filter(r => rowMatchesAll(r, population)) : data.value;\n    }, [data.value, population]);\n\n    // Filterable fields for the Slice predicate builder.\n    const fields = useMemo<SliceFieldValue[]>(\n        () => columns.filter(c => c.kind !== 'other').map(c => ({\n            fieldId: c.name, label: getSomeorUndefined(meta?.get(c.name)?.label) ?? c.name, kind: c.kind,\n        }) as SliceFieldValue),\n        [columns, meta],\n    );\n\n    const estInputs = useMemo(() => (rowArrayType ? [rowArrayType, Experiment.Types.Config] : null), [rowArrayType]);\n    // `experiment` is optional — a precomputed-only surface binds no estimator, so\n    // pass a null name → useFuncCall IDLEs (no call, result stays null).\n    const experiment = useFuncCall<ResultValue>(v.experiment.type === 'some' ? v.experiment.value.name : null, estInputs, Experiment.Types.Result);\n    const hasExperiment = v.experiment.type === 'some';\n    // The painted answer: a live result (only ever from an explicit Run) takes over,\n    // otherwise the selected entry's precomputed result.\n    const shownResult = experiment.result ?? getSomeorUndefined(selectedEntry?.result) ?? null;\n\n    // The optional `design` function (the \"Validate\" tab) — bound only when the\n    // surface supplies it; called lazily the first time the tab is opened.\n    const hasDesign = v.design.type === 'some';\n    const designInputs = useMemo(\n        () => (rowArrayType ? [rowArrayType, Experiment.Types.Config, Experiment.Types.Result, Experiment.Types.DesignConfig] : null),\n        [rowArrayType],\n    );\n    const design = useFuncCall<DesignValue>(v.design.type === 'some' ? v.design.value.name : null, designInputs, Experiment.Types.Design);\n\n    // The result deck reflects the config that produced the CURRENT result, not\n    // live edits — captured at call time, promoted when the result lands (below),\n    // so editing a Step-1/2 picker doesn't rewrite the result strings before Run.\n    const pendingConfigRef = useRef<ConfigValue | null>(null);\n    const [ranConfig, setRanConfig] = useState<ConfigValue | null>(null);\n\n    const runAll = useCallback(() => {\n        if (!filteredRows || !config) return;\n        pendingConfigRef.current = config;\n        experiment.call(filteredRows, config);\n    }, [filteredRows, config, experiment]);\n\n    // Auto-run once, the first time inputs are ready and nothing has produced a\n    // result yet. Latched by `autoRan` — it fires at most once and intentionally\n    // does NOT self-heal a failed first run (the user hits Run to retry), so the\n    // surface never silently re-runs behind a manual edit.\n    const autoRan = useRef(false);\n    const hasPrecomputed = selectedEntry !== undefined && selectedEntry.result.type === 'some';\n    useEffect(() => {\n        if (autoRan.current) return;\n        // Never auto-run a precomputed entry, or a surface with no estimator bound —\n        // the live estimator must not fire on a precomputed/curated surface.\n        if (hasPrecomputed || !hasExperiment) { autoRan.current = true; return; }\n        if (!filteredRows || !config || !rowArrayType) return;\n        if (experiment.result !== null || experiment.status === 'running') { autoRan.current = true; return; }\n        if (experiment.status !== 'idle') return;\n        autoRan.current = true;\n        if (filteredRows.length > AUTORUN_MAX_ROWS) return; // too large to auto-run — wait for explicit Run\n        runAll();\n    }, [hasPrecomputed, hasExperiment, filteredRows, config, rowArrayType, experiment.result, experiment.status, runAll]);\n\n    // Promote the pending config to the \"ran\" config when a result lands, so the\n    // result deck's labels change together with its numbers — never on live edits.\n    useEffect(() => {\n        if (experiment.result !== null) setRanConfig(pendingConfigRef.current);\n    }, [experiment.result]);\n\n    // Edit handlers update the INTERNAL working state — never the bound configs list.\n    // `stale` only pulses when a live estimator is bound (a precomputed/no-estimator\n    // surface has no Run, so no \"hit Run\" prompt).\n    const editConfig = useCallback((next: ConfigValue) => {\n        if (readonly) return; // never edit in readonly\n        if (v.experiment.type === 'some') setStale(true);\n        setWorkingConfig(next);\n    }, [readonly, v.experiment.type]);\n    const editPopulation = useCallback((next: PredicateValue[]) => {\n        if (readonly) return;\n        if (v.experiment.type === 'some') setStale(true);\n        setLocalPop(next);\n    }, [readonly, v.experiment.type]);\n    // Selecting a question is navigation, not mutation — allowed even in readonly (the\n    // reseed effect loads the entry's config + scope for viewing).\n    const selectEntry = useCallback((c: ConfigurationValue) => {\n        setCurrentConfigId(c.id);\n    }, []);\n    const onRun = useCallback(() => { runAll(); setStale(false); }, [runAll]);\n    const onCommit = useCallback(async () => {\n        // Commit records a freshly-run LIVE result to the journal; the `configs` list\n        // is a read-only menu, so nothing is written back to it.\n        if (!config || !experiment.result) return;\n        const r = experiment.result;\n        const row: JournalRowValue = {\n            config, verdict: r.verdict, naive: r.naive,\n            adjusted: r.adjusted.type === 'some' ? some(r.adjusted.value.effect) : none,\n            committed_at: new Date(), committed_by: 'you',\n            // Record which question framed this experiment.\n            preset: currentConfigId !== undefined ? some(currentConfigId) : none,\n        };\n        journalBind.mutate([row, ...(journalBind.value ?? [])]);\n        try {\n            await journalBind.commit();\n            setStale(false);\n        } catch { /* surface left stale; a commit failed */ }\n    }, [config, experiment.result, journalBind, currentConfigId]);\n\n    const [tab, setTab] = useState<Tab>(getSomeorUndefined(v.defaultTab)?.type ?? 'answer');\n    const [guidance, setGuidance] = useState(true);\n    const now = useMemo(() => new Date(), []);\n    const nRows = filteredRows?.length ?? 0;\n\n    // The nouns the guidance glossary interpolates — the result deck's column\n    // names (ran config), run through the friendly `columns` labels. `subject` /\n    // `subjects` is the neutral noun for a row: the component is generic over any\n    // causal-analytics dataset (customers, batches, patients, transactions …), so\n    // we never assume a domain — `record(s)` reads correctly for all of them.\n    const helpVars = useMemo(() => {\n        const rc = ranConfig ?? config;\n        const labelOf = (col: string | undefined) => (col ? (getSomeorUndefined(meta?.get(col)?.label) ?? col) : '');\n        return { treatment: labelOf(rc?.treatment), outcome: labelOf(rc?.outcome), subject: SUBJECT_ONE, subjects: SUBJECT_MANY };\n    }, [ranConfig, config, meta]);\n\n    const view = useMemo(() => {\n        if (!config) return null;\n        return deriveView(config, ranConfig ?? config, columns, shownResult, journalBind.value, meta, nRows, now);\n    }, [config, ranConfig, columns, shownResult, journalBind.value, meta, nRows, now]);\n\n    // Default design knobs — library-defaulted alpha/power/materiality, and offer\n    // both an even split and a cost-saving 30% split so the alternate row shows.\n    // Variants MUST be built with `some`/`none`/`variant` (they carry the symbol\n    // the encoder needs) — never hand-rolled `{ type, value }` literals.\n    const designConfigValue = useMemo(() => ({\n        alpha: none,\n        target_power: none,\n        materiality: none,\n        treated_shares: some([0.5, 0.3]),\n    }), []);\n\n    // The Validate tab's `design` runs LAZILY — on first open, and again whenever a\n    // fresh result lands. We snapshot the result + config the design was sized for\n    // at call time, so the recipe is always derived against ITS OWN generation and\n    // never fused with a newer result while the second async hop is in flight.\n    // A precomputed entry may carry its own \"Validate\" recipe; when present it wins\n    // and no live `design` call is made.\n    const precomputedDesign = getSomeorUndefined(selectedEntry?.design) ?? null;\n    const designSnapRef = useRef<{ result: ResultValue; config: ConfigValue } | null>(null);\n    useEffect(() => {\n        if (tab !== 'validate' || !hasDesign || design.pending || precomputedDesign !== null) return;\n        if (!filteredRows || !config || !shownResult) return;\n        if (designSnapRef.current?.result === shownResult) return;\n        designSnapRef.current = { result: shownResult, config: ranConfig ?? config };\n        design.call(filteredRows, ranConfig ?? config, shownResult, designConfigValue);\n    }, [tab, hasDesign, precomputedDesign, filteredRows, config, ranConfig, shownResult, design, designConfigValue]);\n\n    // The painted design: a precomputed entry recipe (derived against the shown result),\n    // else the live design result derived against its own SNAPSHOT generation.\n    const vmDesign = useMemo(() => {\n        if (precomputedDesign !== null && shownResult !== null && config) return deriveDesign(precomputedDesign, shownResult, ranConfig ?? config, meta);\n        return design.result && designSnapRef.current ? deriveDesign(design.result, designSnapRef.current.result, designSnapRef.current.config, meta) : null;\n    }, [precomputedDesign, shownResult, config, ranConfig, design.result, meta]);\n    // The Validate panel may paint when a precomputed recipe is present, or a live one\n    // that corresponds to the CURRENT result and is settled.\n    const designFresh = (precomputedDesign !== null && shownResult !== null)\n        || (design.result !== null && designSnapRef.current?.result === shownResult && !design.pending);\n\n    if (!config || !view) {\n        const failed = experiment.status === 'failed';\n        const noConfigs = !configsBind.error && configs.length === 0;\n        // A binding that failed to read/decode (rather than one still loading) gets\n        // surfaced as an error — never a perpetual \"loading\" spinner. Name the source\n        // so a type-version mismatch is diagnosable from the surface itself.\n        const which = data.error ? 'dataset' : configsBind.error ? 'configs' : journalBind.error ? 'journal' : null;\n        const bindError = data.error ?? configsBind.error ?? journalBind.error;\n        const bindMsg = bindError instanceof Error ? bindError.message : bindError != null ? String(bindError) : null;\n        // Terminal states (error / nothing to show / failed run) get a compact message.\n        if (bindMsg) return <Box layerStyle=\"frame\" p=\"6\"><Text textStyle=\"body.sm\" color=\"fg.danger\">Couldn’t load the experiment {which}: {bindMsg}</Text></Box>;\n        if (noConfigs) return <Box layerStyle=\"frame\" p=\"6\"><Text textStyle=\"body.sm\" color=\"fg.muted\">No questions to show — bind a non-empty configs list.</Text></Box>;\n        if (failed && experiment.error) return <Box layerStyle=\"frame\" p=\"6\"><RunError error={experiment.error} /></Box>;\n        // Still resolving `data` / `configs` — show the full-surface skeleton so the shell\n        // is stable and live content fills in without a layout jump.\n        return <LoadingSkeleton />;\n    }\n    const { spec: vs, answer: a, refusal: ref, overlap: ov, refute: vr, dose: vd, journal, verdict } = view;\n\n    const higherBetter = getSomeorUndefined(meta?.get(vs.outcome)?.higherIsBetter);\n\n    const dataStatus = statusR({ status: 'success', size: 'sm' });\n\n    // A bar list via the shared `barStrip` slot recipe (hoisted `bs`).\n    const barList = (rows: { label: string; frac: number; tone: string; value: string }[]) => (\n        <Box css={bs.root}>\n            {rows.map((r, i) => (\n                <Box key={i} css={bs.row}>\n                    <Text css={bs.label} textStyle=\"mono.sm\" color=\"fg.default\" truncate>{r.label}</Text>\n                    <Box css={bs.track}><Box css={bs.fill} width={`${Math.round(r.frac * 100)}%`} bg={toneToken(r.tone)} /></Box>\n                    <Text css={bs.value}>{r.value}</Text>\n                </Box>\n            ))}\n        </Box>\n    );\n\n    // Run / Commit affordances derive from `readonly`, live state, and the\n    // binding configuration (Commit only means something when config is bound\n    // `{ mode: 'staged' }` and a `journal` is bound).\n    const hasJournal = v.journal.type === 'some';\n    const canRun = !readonly && hasExperiment;\n    const canCommit = !readonly && hasExperiment && hasJournal;\n\n    const runDisabled = !data.value || experiment.pending;\n    // Commit only a FRESH, succeeded, un-edited result — never journal a stale or\n    // failed run against the current config.\n    const commitDisabled = experiment.status !== 'succeeded' || experiment.pending || stale;\n\n    // The single display-readiness discriminator the whole deck routes through:\n    // a precomputed answer paints immediately; a failed run shows the error; a pending\n    // (re-)run shows the skeleton; only a settled/precomputed result paints the tabs.\n    const failed = experiment.status === 'failed' && experiment.error;\n    const showResult = shownResult !== null && !experiment.pending && !failed;\n\n    // The visible result tabs — shared by the tablist render and its roving keyboard\n    // navigation. Validate shows when a `design` function is bound (it can size a trial\n    // for any config) OR any config carries its own precomputed design recipe (which the\n    // deck paints with no live call) — otherwise the precomputed-design contract would be\n    // unreachable via the tablist.\n    const anyPrecomputedDesign = configs.some(c => c.design.type === 'some');\n    const showValidate = hasDesign || anyPrecomputedDesign;\n    const tabKeys: Tab[] = [...(['answer', 'trust', 'dose'] as Tab[]), ...(showValidate ? ['validate' as Tab] : [])];\n\n    return (\n        <GuidanceProvider on={guidance} vars={helpVars}>\n        <Box layerStyle=\"frame\" overflow=\"visible\">\n            {/* header */}\n            <Box layerStyle=\"header.bar\" display=\"flex\" alignItems=\"center\" gap=\"3.5\">\n                {/* The title IS the question selector (spec #79, GitHub-repo-picker style): when\n                    more than one config is bound, the header text + a chevron open a menu of the\n                    vetted questions (current one checked). Selecting one reseeds the working config\n                    + scope for viewing/editing (navigation, not a staged write) and is permitted\n                    even when readonly. */}\n                {configs.length > 1 ? (\n                    <Menu.Root>\n                        <Menu.Trigger asChild>\n                            <Box as=\"button\" bg=\"transparent\" border=\"0\" p=\"0\" cursor=\"pointer\" display=\"inline-flex\" alignItems=\"center\" gap=\"2\" textAlign=\"start\">\n                                <Text textStyle=\"title.card\" color=\"fg.muted\">\n                                    Does&nbsp;<Text as=\"span\" color=\"brand.solid\" fontWeight=\"bold\">{vs.treatment}</Text>&nbsp;change&nbsp;<Text as=\"span\" color=\"brand.solid\" fontWeight=\"bold\">{vs.outcome}</Text>?\n                                </Text>\n                                <Box as=\"span\" color=\"fg.subtle\" fontSize=\"11px\" lineHeight=\"1\"><FontAwesomeIcon icon={faChevronDown} /></Box>\n                            </Box>\n                        </Menu.Trigger>\n                        <Portal>\n                            <Menu.Positioner>\n                                <Menu.Content minW=\"280px\">\n                                    {configGroups.map(g => (\n                                        <Menu.ItemGroup key={g.label}>\n                                            {g.label !== 'Questions' && (\n                                                <Menu.ItemGroupLabel textStyle=\"caption.eyebrow\" fontSize=\"9px\">{g.label}</Menu.ItemGroupLabel>\n                                            )}\n                                            {g.items.map(c => (\n                                                <Menu.Item key={c.id} value={c.id} onClick={() => selectEntry(c)} gap=\"2\">\n                                                    <Box as=\"span\" width=\"14px\" flexShrink=\"0\" color=\"brand.fg\">\n                                                        {c.id === selectedEntry?.id && <FontAwesomeIcon icon={faCheck} style={{ fontSize: '10px' }} />}\n                                                    </Box>\n                                                    {c.label}\n                                                </Menu.Item>\n                                            ))}\n                                        </Menu.ItemGroup>\n                                    ))}\n                                </Menu.Content>\n                            </Menu.Positioner>\n                        </Portal>\n                    </Menu.Root>\n                ) : (\n                    <Text textStyle=\"title.card\" color=\"fg.muted\">\n                        <Help id=\"header\">Does&nbsp;<Text as=\"span\" color=\"brand.solid\" fontWeight=\"bold\">{vs.treatment}</Text>&nbsp;change&nbsp;<Text as=\"span\" color=\"brand.solid\" fontWeight=\"bold\">{vs.outcome}</Text>?</Help>\n                    </Text>\n                )}\n                <Box flex=\"1\" />\n                {readonly && <Box as=\"span\" css={badge({ variant: 'plain', size: 'sm' })} textTransform=\"none\" letterSpacing=\"normal\">View only</Box>}\n                <Box as=\"span\" css={dataStatus.root}>\n                    <Box as=\"span\" css={dataStatus.indicator} />\n                    <Box as=\"span\" css={dataStatus.label}>{stale ? `${nRows} rows` : vs.dataLabel}</Box>\n                </Box>\n                <GuidanceToggle on={guidance} onToggle={() => setGuidance(g => !g)} />\n                {canRun && <ActionButton button={button} variant=\"solid\" label=\"Run\" onClick={onRun} disabled={runDisabled} pulse={stale} />}\n                {canCommit && <ActionButton button={button} variant=\"ghost\" label=\"Commit\" onClick={onCommit} disabled={commitDisabled} />}\n            </Box>\n\n            <Box display=\"grid\" gridTemplateColumns=\"304px minmax(0,1fr)\" alignItems=\"start\">\n                {/* set-up rail */}\n                <Box borderRightWidth=\"1px\" borderColor=\"border.subtle\">\n                    <Step n={1} title=\"What did you change?\" help=\"step_treatment\">\n                        <ColumnPick column={vs.treatment} kind={vs.treatmentKind} badge={badge} button={button} readonly={readonly} choices={columns.filter(c => c.kind === 'boolean' || c.kind === 'integer').map(c => c.name)} onPick={c => editConfig({ ...config, treatment: c })} />\n                        <Text textStyle=\"caption\" mt=\"1.5\">Treated = <Text as=\"span\" color=\"fg.default\" fontWeight=\"semibold\">{vs.comparison}</Text></Text>\n                    </Step>\n                    <Step n={2} title=\"What did you want it to improve?\" help=\"step_outcome\">\n                        <ColumnPick column={vs.outcome} kind={vs.outcomeKind} badge={badge} button={button} readonly={readonly} choices={columns.filter(c => c.kind === 'float' || c.kind === 'integer').map(c => c.name)} onPick={c => editConfig({ ...config, outcome: c })} />\n                    </Step>\n                    <Step n={3} title=\"What else was different?\" help=\"step_confounders\">\n                        <Box layerStyle=\"frame.flat\">\n                            <Box maxH=\"216px\" overflowY=\"auto\">\n                            {vs.confounders.map((c, i) => (\n                                <Box key={i} display=\"grid\" gridTemplateColumns={readonly ? '1fr 78px' : '1fr 78px 16px'} gap=\"2.5\" alignItems=\"center\" px=\"2.5\" py=\"2.5\" borderTopWidth={i ? '1px' : '0'} borderColor=\"border.subtle\">\n                                    <Box>\n                                        <Text textStyle=\"mono.sm\" fontWeight=\"semibold\" color=\"fg.default\">{c.col}</Text>\n                                        <Text textStyle=\"caption\" lineHeight=\"1.35\" mt=\"px\">{c.reason}</Text>\n                                    </Box>\n                                    <Box>\n                                        <Box css={bs.track}><Box css={bs.fill} width={`${Math.round(c.imbalance * 100)}%`} bg={toneToken(c.tone)} /></Box>\n                                        <Text textStyle=\"caption.eyebrow\" fontSize=\"9px\" textAlign=\"center\" mt=\"1.5\"><Help id=\"confounder_imbalance\">{c.level}</Help></Text>\n                                    </Box>\n                                    {!readonly && (\n                                        <Box as=\"button\" css={button({ variant: 'ghost', size: 'xs' })} px=\"0\" minW=\"16px\" display=\"inline-flex\" alignItems=\"center\" justifyContent=\"center\" aria-label={`Remove ${c.col}`} onClick={() => editConfig({ ...config, common_causes: config.common_causes.filter(x => x !== c.col), categorical: config.categorical.type === 'some' ? some(config.categorical.value.filter(x => x !== c.col)) : none })}><FontAwesomeIcon icon={faXmark} style={{ fontSize: '11px' }} /></Box>\n                                    )}\n                                </Box>\n                            ))}\n                            </Box>\n                            {!readonly && vs.suggestion && (\n                                <ColumnMenu choices={columns.filter(c => !new Set([config.treatment, config.outcome, ...config.common_causes]).has(c.name)).map(c => c.name)} onPick={c => editConfig({ ...config, common_causes: [...config.common_causes, c] })}>\n                                    <Box as=\"button\" css={button({ variant: 'ghost', size: 'sm' })} justifyContent=\"flex-start\" width=\"100%\" color=\"brand.fg\" fontFamily=\"mono\" display=\"inline-flex\" alignItems=\"center\" gap=\"2\"><FontAwesomeIcon icon={faPlus} style={{ fontSize: '9px' }} />add another</Box>\n                                </ColumnMenu>\n                            )}\n                        </Box>\n                    </Step>\n                    <Step n={4} title={`Which ${SUBJECT_MANY}?`} help=\"step_population\">\n                        <FilterRail fields={fields} population={population} onChange={editPopulation} chip={chip} button={button} readonly={readonly} />\n                    </Step>\n                    <Box as=\"details\" borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n                        <Box as=\"summary\" textStyle=\"caption.eyebrow\" cursor=\"pointer\" px=\"4.5\" py=\"2.5\" display=\"flex\" alignItems=\"center\" gap=\"1.5\"\n                             css={{ listStyle: 'none', '&::-webkit-details-marker': { display: 'none' } }}>\n                            <Box as=\"span\" display=\"inline-flex\" color=\"fg.subtle\" fontSize=\"10px\" transition=\"transform 180ms ease\" transform=\"rotate(-90deg)\"\n                                 css={{ 'details[open] > summary > &': { transform: 'rotate(0deg)' } }}><FontAwesomeIcon icon={faChevronDown} /></Box>\n                            Advanced\n                        </Box>\n                        <Box px=\"4.5\" pb=\"3.5\" pt=\"0.5\">\n                            <Segmented label=\"How to compare\" help=\"adv_method\" left=\"regression\" right=\"reweighting\" active={vs.method === 'reweighting' ? 'right' : 'left'} readonly={readonly} onPick={s => editConfig({ ...config, method: some(s === 'right' ? variant('propensity_score_weighting', { weighting_scheme: none }) : variant('linear_regression', null)) } as unknown as ConfigValue)} />\n                            <Segmented label=\"Answer for\" help=\"adv_estimand\" left=\"all\" right=\"only treated\" active={vs.target === 'treated' ? 'right' : 'left'} readonly={readonly} onPick={s => editConfig({ ...config, estimand: some(variant(s === 'right' ? 'att' : 'ate', null)) } as unknown as ConfigValue)} last />\n                        </Box>\n                    </Box>\n                </Box>\n\n                {/* result deck */}\n                <Box minW=\"0\">\n                    <Box display=\"flex\" alignItems=\"center\" px=\"4\" borderBottomWidth=\"1px\" borderColor=\"border.subtle\"\n                        role=\"tablist\" aria-label=\"Result views\"\n                        onKeyDown={(e) => {\n                            const i = tabKeys.indexOf(tab);\n                            let j = i;\n                            if (e.key === 'ArrowRight') j = (i + 1) % tabKeys.length;\n                            else if (e.key === 'ArrowLeft') j = (i - 1 + tabKeys.length) % tabKeys.length;\n                            else if (e.key === 'Home') j = 0;\n                            else if (e.key === 'End') j = tabKeys.length - 1;\n                            else return;\n                            e.preventDefault();\n                            setTab(tabKeys[j]!);\n                            const btns = e.currentTarget.querySelectorAll('[role=\"tab\"]');\n                            (btns[j] as HTMLElement | undefined)?.focus();\n                        }}>\n                        {tabKeys.map(tk => {\n                            const on = tab === tk;\n                            const tabHelp: HelpId = tk === 'answer' ? 'tab_answer' : tk === 'trust' ? 'tab_trust' : tk === 'dose' ? 'tab_dose' : 'tab_validate';\n                            const tabLabel = tk === 'answer' ? 'Answer' : tk === 'trust' ? 'Trust' : tk === 'dose' ? 'Dose' : 'Validate';\n                            return (\n                                <Box key={tk} as=\"button\" role=\"tab\" aria-selected={on} tabIndex={on ? 0 : -1}\n                                    onClick={() => setTab(tk)} cursor=\"pointer\"\n                                    fontSize=\"xs\" fontWeight=\"semibold\" px=\"3.5\" py=\"3\" mb=\"-1px\"\n                                    color={on ? 'brand.fg' : 'fg.muted'}\n                                    borderBottomWidth=\"2px\" borderColor={on ? 'brand.solid' : 'transparent'}\n                                    _hover={{ color: on ? 'brand.fg' : 'fg.default' }}\n                                    _focusVisible={{ outline: '2px solid', outlineColor: 'brand.solid', outlineOffset: '-2px' }}>\n                                    <Help id={tabHelp}>{tabLabel}</Help>\n                                </Box>\n                            );\n                        })}\n                        {experiment.pending && (\n                            <Box ml=\"auto\" display=\"inline-flex\" alignItems=\"center\" gap=\"2\" color=\"fg.muted\" pr=\"1\">\n                                <Spinner size=\"xs\" borderWidth=\"1.5px\" color=\"brand.solid\" />\n                                <Text textStyle=\"caption.eyebrow\">Running…</Text>\n                            </Box>\n                        )}\n                    </Box>\n\n                    {failed ? (\n                        <Box px=\"4.5\" pt=\"4.5\"><RunError error={experiment.error!} /></Box>\n                    ) : !showResult ? (\n                        <DeckSkeleton tab={tab} />\n                    ) : (\n                    <>\n                    {stale && (\n                        <Box layerStyle=\"banner.stale\" display=\"flex\" alignItems=\"center\" gap=\"2\" mx=\"4.5\" mt=\"4.5\">\n                            <Box as=\"span\" color=\"fg.warning\" flexShrink=\"0\" fontSize=\"12px\"><FontAwesomeIcon icon={faTriangleExclamation} /></Box>\n                            <Text textStyle=\"body.sm\" color=\"fg.default\"><Text as=\"span\" fontWeight=\"bold\">Showing the previous setup.</Text> Hit Run to update these results for your edits.</Text>\n                        </Box>\n                    )}\n\n                    {tab === 'answer' && a && (\n                        <AnswerNumeric a={a} verdict={verdict} higherBetter={higherBetter} badge={badge} barList={barList} />\n                    )}\n                    {tab === 'answer' && !a && ref && (\n                        <RefusalZone refusal={ref} overlap={ov} naiveValue={shownResult?.naive ?? 0} outcome={vs.outcome} />\n                    )}\n\n                    {tab === 'trust' && vr && (\n                        <Box p=\"4.5\">\n                            <Text textStyle=\"body.sm\" color=\"fg.muted\" mb=\"3.5\"><Help id=\"trust_intro\">Before trusting the answer we tried to break it — colour shows pass / caution.</Help></Text>\n                            <Box layerStyle=\"frame.flat\">\n                                {vr.checks.map((c, i) => {\n                                    const cs = statusR({ status: c.passed ? 'success' : 'warning', size: 'sm' });\n                                    return (\n                                        <Box key={i} display=\"grid\" gridTemplateColumns=\"auto 1fr minmax(96px,auto)\" gap=\"2.5\" alignItems=\"start\" px=\"3.5\" py=\"2.5\" borderTopWidth={i ? '1px' : '0'} borderColor=\"border.subtle\">\n                                            <Box as=\"span\" css={cs.root} mt=\"1\"><Box as=\"span\" css={cs.indicator} /></Box>\n                                            <Box>\n                                                <Text textStyle=\"body.sm\" fontWeight=\"semibold\" color=\"fg.default\"><Help id={c.help}>{c.name}</Help></Text>\n                                                <Text textStyle=\"caption\" lineHeight=\"1.45\" mt=\"0.5\">{c.desc}</Text>\n                                            </Box>\n                                            <Box display=\"inline-flex\" alignItems=\"center\" justifyContent=\"flex-end\" gap=\"1.5\" whiteSpace=\"nowrap\" color={c.passed ? 'fg.success' : 'fg.warning'}>\n                                                <Text textStyle=\"mono.sm\" fontWeight=\"bold\" fontVariantNumeric=\"tabular-nums\">{c.value}</Text>\n                                                <FontAwesomeIcon icon={c.passed ? faCheck : faTriangleExclamation} style={{ fontSize: '11px' }} />\n                                            </Box>\n                                        </Box>\n                                    );\n                                })}\n                            </Box>\n                            {vr.sens && (\n                                <Card>\n                                    <Cap help=\"sensitivity\">Effect as a hidden cause is made stronger</Cap>\n                                    <AreaRange lo={vr.sens.lo} mid={vr.sens.mid} hi={vr.sens.hi} zero={0} tone=\"brand\" xTicks={vr.sens.xTicks} yTicks={vr.sens.yTicks} height={132} />\n                                </Card>\n                            )}\n                        </Box>\n                    )}\n                    {tab === 'trust' && !vr && (\n                        <Box p=\"4.5\">\n                            <Box display=\"inline-flex\" alignItems=\"center\" gap=\"2\" mb=\"2\" color=\"fg.muted\">\n                                <FontAwesomeIcon icon={faTriangleExclamation} style={{ fontSize: '13px' }} />\n                                <Text textStyle=\"body.sm\" fontWeight=\"semibold\" color=\"fg.default\">Nothing to stress-test</Text>\n                            </Box>\n                            <Text textStyle=\"body.sm\" color=\"fg.muted\" lineHeight=\"1.5\">There’s no adjusted estimate to try to break — the experiment couldn’t produce one (see the <Text as=\"span\" fontWeight=\"semibold\" color=\"fg.default\">Answer</Text> tab for why).</Text>\n                        </Box>\n                    )}\n\n                    {tab === 'dose' && vd && (\n                        <Box p=\"4.5\">\n                            <Card mt=\"0\">\n                                <Cap help=\"dose_curve\">{vd.outcome} gained vs. {vd.feature}</Cap>\n                                <AreaRange lo={vd.lo} mid={vd.mid} hi={vd.hi} tone=\"pos\" xTicks={vd.xTicks} yTicks={vd.yTicks} marks={vd.marks.map(m => ({ at: m.at, label: m.label, tone: m.tone, help: m.help }))} height={256} />\n                            </Card>\n                            <Box display=\"grid\" gridTemplateColumns=\"1fr 1fr\" gap=\"3\" mt=\"3\">\n                                <Box layerStyle=\"card\" p=\"3.5\" borderRadius=\"lg\">\n                                    <Cap help=\"dose_reco\">Recommended</Cap>\n                                    <Box display=\"flex\" flexDirection=\"column\" gap=\"0.5\">\n                                        <Text textStyle=\"caption.eyebrow\">{vd.recoLabel}</Text>\n                                        <Box display=\"flex\" alignItems=\"baseline\" gap=\"2\">\n                                            <Text textStyle=\"mono-kpi\" fontFamily=\"heading\" color=\"brand.solid\">{signed(vd.recoEffect)}</Text>\n                                            <Text textStyle=\"mono.sm\" color=\"fg.muted\">{vd.outcome} · {signed(vd.recoLo)} … {signed(vd.recoHi)}</Text>\n                                        </Box>\n                                    </Box>\n                                    <Text textStyle=\"caption\" mt=\"2.5\" pt=\"2.5\" borderTopWidth=\"1px\" borderColor=\"border.subtle\">{vd.tradeoff}</Text>\n                                </Box>\n                                <Box layerStyle=\"card\" p=\"3.5\" borderRadius=\"lg\">\n                                    <Cap help=\"dose_marginal\">Extra {vd.outcome} per step</Cap>\n                                    <Box py=\"0.5\" maxH=\"200px\" overflowY=\"auto\">{barList(vd.marginal.map((m, i) => ({ label: m.label, frac: m.frac, tone: i < 2 ? 'brand' : 'muted', value: signed(m.value) })))}</Box>\n                                </Box>\n                            </Box>\n                        </Box>\n                    )}\n\n                    {tab === 'validate' && (\n                        design.status === 'failed' && design.error\n                            ? <Box px=\"4.5\" pt=\"4.5\"><RunError error={design.error} /></Box>\n                            : designFresh && vmDesign\n                                ? <ValidatePanel vm={vmDesign} barList={barList} />\n                                : (\n                                    <Box p=\"4.5\" display=\"inline-flex\" alignItems=\"center\" gap=\"2\" color=\"fg.muted\">\n                                        <Spinner size=\"xs\" borderWidth=\"1.5px\" color=\"brand.solid\" />\n                                        <Text textStyle=\"body.sm\">Sizing the trial that would confirm this…</Text>\n                                    </Box>\n                                )\n                    )}\n                    </>\n                    )}\n                </Box>\n            </Box>\n\n            {/* journal */}\n            {journal && journal.length > 0 && (\n                <>\n                    <Box css={es.root} bg=\"bg.canvas\" borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n                        <Box css={es.lbl}><Help id=\"journal\">Committed experiments</Help></Box>\n                        <Box css={es.meta}><Text as=\"span\" color=\"fg.default\" fontWeight=\"semibold\">{journal.length}</Text> on record{journal.length > 50 ? ' · showing newest 50' : ''}</Box>\n                    </Box>\n                    {journal.slice(0, 50).map((r, i) => (\n                        <Box key={i} display=\"grid\" gridTemplateColumns=\"2fr 1fr 1fr 1fr\" gap=\"3\" alignItems=\"center\" px=\"4.5\" py=\"2.5\" borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n                            <Text textStyle=\"body.sm\"><Text as=\"span\" fontWeight=\"bold\">{r.treatment} → {r.outcome}</Text> <Text as=\"span\" color=\"fg.muted\">· vs {r.confounders}</Text>{(() => {\n                                const id = getSomeorUndefined(r.preset);\n                                if (id === undefined) return null;\n                                const label = configs.find(c => c.id === id)?.label ?? id;\n                                return <>{' '}<Box as=\"span\" css={chip({ tone: 'brand', size: 'sm' })}>from {label}</Box></>;\n                            })()}</Text>\n                            <Text textStyle=\"mono.sm\" fontWeight=\"semibold\" textAlign=\"right\" fontVariantNumeric=\"tabular-nums\" color={r.verdictTone === 'pos' ? 'fg.success' : 'fg.default'}>{r.effect}</Text>\n                            <Text textStyle=\"caption.eyebrow\" textAlign=\"right\" color={toneToken(r.verdictTone)}>{r.verdict}</Text>\n                            <Text textStyle=\"mono.sm\" textAlign=\"right\" color=\"fg.muted\">{r.who} · {r.when}</Text>\n                        </Box>\n                    ))}\n                </>\n            )}\n        </Box>\n        </GuidanceProvider>\n    );\n}, (prev, next) => experimentValueEqual(prev.value, next.value) && prev.storageKey === next.storageKey);\n\n// ---------------------------------------------------------------------------\n// Answer tab — numeric (the engine produced an adjusted estimate).\n// ---------------------------------------------------------------------------\nfunction AnswerNumeric({ a, verdict, higherBetter, badge, barList }: {\n    a: NonNullable<ReturnType<typeof deriveView>['answer']>;\n    verdict: ReturnType<typeof deriveView>['verdict'];\n    higherBetter: boolean | undefined;\n    badge: ReturnType<typeof useRecipe>;\n    barList: (rows: { label: string; frac: number; tone: string; value: string }[]) => ReactNode;\n}) {\n    const dirUp = a.effect > 0;\n    const statusWord = higherBetter === undefined ? (dirUp ? 'Higher' : 'Lower') : (dirUp === higherBetter ? 'Better' : 'Worse');\n    const lowerWord = a.naive < 0 ? 'lower' : 'higher';\n    const top = a.balance[0] ?? { col: '', display: '' };\n    const kpiColor = a.clear && !a.cautious ? 'fg.success' : 'fg.warning';\n    const badgeOk = a.clear && !a.cautious;\n    const badgeText = a.cautious ? (verdict?.label ?? 'Not trustworthy yet') : a.clear ? `${statusWord} with ${a.treatment}` : 'No clear effect';\n    return (\n        <Box p=\"4.5\">\n            <Box display=\"flex\" alignItems=\"center\" gap=\"4.5\" flexWrap=\"wrap\">\n                <Box display=\"flex\" flexDirection=\"column\" gap=\"0.5\">\n                    <Text textStyle=\"mono.sm\" color=\"fg.muted\">{a.outcome}</Text>\n                    <Box display=\"flex\" alignItems=\"baseline\" gap=\"2.5\">\n                        <Text textStyle=\"mono-kpi\" fontFamily=\"heading\" fontSize=\"32px\" color={kpiColor}>\n                            <Help id=\"answer_effect\">{signed(a.effect)}</Help>\n                        </Text>\n                        <Text textStyle=\"mono.sm\" color=\"fg.muted\"><Help id=\"answer_ci\">95% CI&nbsp; {signed(a.lo)} … {signed(a.hi)}</Help></Text>\n                    </Box>\n                </Box>\n                <Box as=\"span\" css={badge({ variant: badgeOk ? 'ok' : 'warn', size: 'md' })} alignSelf=\"flex-end\" mb=\"1\" display=\"inline-flex\" alignItems=\"center\" gap=\"1\">\n                    {a.clear && !a.cautious && <FontAwesomeIcon icon={dirUp ? faArrowUp : faArrowDown} style={{ fontSize: '10px' }} />}\n                    <Help id={`verdict_${verdict?.tag ?? 'modest'}` as HelpId}>{badgeText}</Help>\n                </Box>\n            </Box>\n\n            {a.cautious && (\n                <Box layerStyle=\"banner.stale\" display=\"flex\" alignItems=\"flex-start\" gap=\"2\" mt=\"3\">\n                    <Box as=\"span\" color=\"fg.warning\" flexShrink=\"0\" mt=\"0.5\" fontSize=\"12px\"><FontAwesomeIcon icon={faTriangleExclamation} /></Box>\n                    <Text textStyle=\"body.sm\" color=\"fg.default\"><Help id=\"answer_cautious\"><Text as=\"span\" fontWeight=\"bold\">Treat this as provisional.</Text></Help> We adjusted and got a number, but a robustness check failed — the estimate may still be driven by something we didn’t adjust for. See <Text as=\"span\" fontWeight=\"semibold\">Can we trust it?</Text></Text>\n                </Box>\n            )}\n\n            {a.flip && (\n                <Box layerStyle=\"banner.stale\" display=\"flex\" alignItems=\"flex-start\" gap=\"2\" mt=\"3\">\n                    <Box as=\"span\" color=\"fg.warning\" flexShrink=\"0\" mt=\"0.5\" fontSize=\"12px\"><FontAwesomeIcon icon={faTriangleExclamation} /></Box>\n                    <Text textStyle=\"body.sm\" color=\"fg.default\"><Help id=\"answer_flip\"><Text as=\"span\" fontWeight=\"bold\">Raw and like-for-like disagree.</Text></Help> In the plain average, the <Text as=\"span\" fontFamily=\"mono\">{a.treatment}</Text> group sits <Text as=\"span\" fontStyle=\"italic\">{lowerWord}</Text> on <Text as=\"span\" fontFamily=\"mono\">{a.outcome}</Text> ({signed(a.naive)}) — but they also differ most on <Text as=\"span\" fontFamily=\"mono\">{top.col}</Text> ({top.display}). Adjusting for it reverses the result.</Text>\n                </Box>\n            )}\n\n            <Card>\n                <Cap help=\"forest_plot\">Raw average vs. like-for-like</Cap>\n                <ForestPlot\n                    rows={[\n                        { label: 'Raw average', note: 'unadjusted', est: a.naive, lo: a.naiveLo, hi: a.naiveHi, tone: a.naive < 0 ? 'neg' : 'pos' },\n                        { label: 'Like-for-like', note: 'adjusted', est: a.effect, lo: a.lo, hi: a.hi, tone: a.clear && !a.cautious ? 'pos' : 'warn' },\n                    ]}\n                    min={Math.floor(Math.min(0, a.naiveLo, a.lo) - 2)}\n                    max={Math.ceil(Math.max(0, a.naiveHi, a.hi) + 2)}\n                    unit={`change in ${a.outcome}${a.unit ? ` (${a.unit})` : ''}`}\n                    height={150}\n                    rowHelp={['forest_naive', 'forest_adjusted']}\n                />\n            </Card>\n\n            <Card>\n                <Cap help=\"balance\">How unbalanced each one was — before adjusting</Cap>\n                <Box py=\"0.5\" maxH=\"208px\" overflowY=\"auto\">{barList(a.balance.map(b => ({ label: b.col, frac: b.frac, tone: b.tone, value: b.display })))}</Box>\n            </Card>\n\n            <Box mt=\"3.5\">\n                <Help id=\"counts\" display=\"inline-flex\" gap=\"4\">\n                    {([[a.nTotal, SUBJECT_MANY], [a.nCompared, 'compared like-for-like'], [a.nDropped, 'had no fair match']] as const).map(([n, label], i) => (\n                        <Text key={i} textStyle=\"mono.sm\" color=\"fg.muted\"><Text as=\"span\" color=\"fg.default\" fontWeight=\"semibold\">{Number(n)}</Text> {label}</Text>\n                    ))}\n                </Help>\n            </Box>\n        </Box>\n    );\n}\n\n// ---------------------------------------------------------------------------\n// Answer tab — refusal (the engine returned adjusted = none).\n// ---------------------------------------------------------------------------\nfunction RefusalZone({ refusal, overlap, naiveValue, outcome }: {\n    refusal: NonNullable<ReturnType<typeof deriveView>['refusal']>;\n    overlap: ReturnType<typeof deriveView>['overlap'];\n    naiveValue: number; outcome: string;\n}) {\n    return (\n        <Box p=\"4.5\">\n            <Box display=\"inline-flex\" alignItems=\"center\" gap=\"2\" mb=\"2\" color=\"fg.warning\">\n                <FontAwesomeIcon icon={faTriangleExclamation} style={{ fontSize: '14px' }} />\n                <Text textStyle=\"title.card\" color=\"fg.default\"><Help id={refusal.kind === 'positivity' ? 'refusal_positivity' : 'refusal_not_estimable'}>{refusal.title}</Help></Text>\n            </Box>\n            <Text textStyle=\"body.sm\" color=\"fg.muted\" mb=\"3\" lineHeight=\"1.5\">{refusal.body}</Text>\n\n            {refusal.kind === 'positivity' && overlap && (\n                <Card mt=\"1\">\n                    <Cap help=\"overlap_histogram\">Propensity overlap — {overlap.supportLabel}</Cap>\n                    <OverlapHistogram treated={overlap.treated} control={overlap.control} supportLabel={overlap.supportLabel} positivityOk={overlap.positivityOk} height={170} />\n                </Card>\n            )}\n\n            <Box display=\"flex\" gap=\"4\" mt=\"3.5\">\n                {refusal.evidence.map((e, i) => (\n                    <Text key={i} textStyle=\"mono.sm\" color=\"fg.muted\"><Text as=\"span\" color=\"fg.default\" fontWeight=\"semibold\">{e.value}</Text> {e.label}</Text>\n                ))}\n            </Box>\n\n            <Text textStyle=\"caption\" color=\"fg.subtle\" mt=\"3.5\" pt=\"3\" borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n                Raw average difference in {outcome} (context only, not an answer): <Text as=\"span\" fontFamily=\"mono\" color=\"fg.muted\">{signed(naiveValue)}</Text>\n            </Text>\n        </Box>\n    );\n}\n\n// ---------------------------------------------------------------------------\n// Validate tab — the real trial that would confirm the result.\n// ---------------------------------------------------------------------------\nfunction ValidatePanel({ vm, barList }: {\n    vm: VMDesign;\n    barList: (rows: { label: string; frac: number; tone: string; value: string }[]) => ReactNode;\n}) {\n    // Shared design-system recipes for the head-count + split bar (no hand-rolled styles).\n    const stat = useSlotRecipe({ key: 'stat' })({ size: 'lg' });\n    const meter = useSlotRecipe({ key: 'segmentedMeter' })({});\n    return (\n        <Box p=\"4.5\">\n            <Cap help=\"tab_validate\">{vm.headline}</Cap>\n\n            {/* KPI head-count (`stat`) + the split meter (`segmentedMeter`) */}\n            <Box display=\"flex\" alignItems=\"flex-end\" gap=\"5\" flexWrap=\"wrap\">\n                <Box css={stat.root}>\n                    <Text css={stat.label}><Help id=\"validate_size\">{vm.holdback ? 'to hold back from' : 'to run'}</Help></Text>\n                    {vm.faint ? (\n                        <Text textStyle=\"body.sm\" fontWeight=\"semibold\" color=\"fg.warning\" maxW=\"220px\">Effect too faint to size — set a materiality threshold to size a trial.</Text>\n                    ) : (\n                        <Text css={stat.valueText} color=\"brand.solid\">{vm.primary.nTotal.toLocaleString()}</Text>\n                    )}\n                </Box>\n                <Box css={meter.root} flex=\"1\" minW=\"220px\">\n                    <Text css={meter.label}><Help id=\"validate_split\">{vm.holdback ? 'Hold-back split' : 'Split'}</Help></Text>\n                    <Box css={meter.track}>\n                        <Box css={meter.segment} flex={vm.primary.treatedShare} bg=\"brand.solid\" />\n                        <Box css={meter.segment} flex={1 - vm.primary.treatedShare} bg=\"bg.emphasized\" />\n                    </Box>\n                    <Box css={meter.keyRow} justifyContent=\"space-between\">\n                        <Box css={meter.keyItem}>\n                            <Box css={meter.keyDot} bg=\"brand.solid\" />\n                            <span><Text as=\"span\" css={meter.valueText}>{vm.primary.nTreated.toLocaleString()}</Text> {vm.holdback ? 'treated' : 'get it'}</span>\n                        </Box>\n                        <Box css={meter.keyItem}>\n                            <Box css={meter.keyDot} bg=\"bg.emphasized\" />\n                            <span><Text as=\"span\" css={meter.valueText}>{vm.primary.nControl.toLocaleString()}</Text> {vm.holdback ? 'held back' : 'left alone'}</span>\n                        </Box>\n                    </Box>\n                </Box>\n            </Box>\n\n            {/* the categories to match the arms on */}\n            {vm.matchOn.length > 0 && (\n                <Card>\n                    <Cap help=\"validate_match\">Match both groups on</Cap>\n                    <Box py=\"0.5\">{barList(vm.matchOn.map(m => ({ label: m.display, frac: m.frac, tone: m.tone, value: '' })))}</Box>\n                </Card>\n            )}\n\n            {/* chance-of-detecting curve */}\n            {vm.curve.mid.length > 0 && (\n                <Card>\n                    <Cap help=\"validate_power\">Chance of detecting it</Cap>\n                    <AreaRange lo={vm.curve.mid} mid={vm.curve.mid} hi={vm.curve.mid} tone=\"brand\"\n                        xTicks={vm.curve.xTicks} yTicks={['100', '50', '0']} yFormat=\"percent\"\n                        marks={vm.curve.marks.map(m => ({ at: m.at, label: m.label, tone: m.tone, help: m.help }))} height={170} />\n                </Card>\n            )}\n\n            <Text textStyle=\"body.sm\" color=\"fg.default\" lineHeight=\"1.5\" mt=\"3.5\">{vm.rationale}</Text>\n\n            {/* alternate split options */}\n            {vm.alternates.length > 0 && (\n                <Box display=\"flex\" flexDirection=\"column\" gap=\"1.5\" mt=\"3\" pt=\"3\" borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n                    {vm.alternates.map((o, i) => (\n                        <Text key={i} textStyle=\"caption\" color=\"fg.muted\">\n                            <Text as=\"span\" fontWeight=\"semibold\" color=\"fg.default\">{o.label}</Text> · {o.nTotal.toLocaleString()} total ({o.nTreated.toLocaleString()} / {o.nControl.toLocaleString()})\n                        </Text>\n                    ))}\n                </Box>\n            )}\n        </Box>\n    );\n}\n\n// ---------------------------------------------------------------------------\n// Population filter rail — reuses Slice's predicate editor.\n// ---------------------------------------------------------------------------\nfunction FilterRail({ fields, population, onChange, chip, button, readonly }: {\n    fields: SliceFieldValue[]; population: PredicateValue[]; onChange: (p: PredicateValue[]) => void;\n    chip: ReturnType<typeof useRecipe>; button: ReturnType<typeof useRecipe>; readonly?: boolean;\n}) {\n    const [open, setOpen] = useState<'add' | number | null>(null);\n    const replaceAt = (i: number, p: PredicateValue) => onChange(population.map((f, j) => (j === i ? p : f)));\n    const removeAt = (i: number) => onChange(population.filter((_, j) => j !== i));\n    const done = <Box as=\"button\" css={button({ variant: 'outline', size: 'xs' })} onClick={() => setOpen(null)}>Done</Box>;\n    if (readonly) {\n        // Static scope chips — same chip recipe + formatted predicate, no popover / remove\n        // / add-filter affordances. An empty population reads as \"all {SUBJECT_MANY}\".\n        return (\n            <Box display=\"flex\" flexWrap=\"wrap\" gap=\"1.5\" alignItems=\"center\">\n                {population.length === 0 ? (\n                    <Box css={chip({ tone: 'plain', numeric: true, shape: 'rounded' })}>all {SUBJECT_MANY}</Box>\n                ) : population.map((pred, i) => (\n                    <Box key={i} css={chip({ tone: 'brand', numeric: true, shape: 'rounded' })} flexShrink={0}>\n                        <Box as=\"span\" whiteSpace=\"nowrap\">{formatPredicate(pred)}</Box>\n                    </Box>\n                ))}\n            </Box>\n        );\n    }\n    return (\n        <Box display=\"flex\" flexWrap=\"wrap\" gap=\"1.5\" alignItems=\"center\">\n            {population.map((pred, i) => (\n                <SliceEditPopover key={i} open={open === i} onOpenChange={o => setOpen(o ? i : null)}\n                    label={<>{'Edit · '}<Box as=\"span\" fontFamily=\"mono\" color=\"brand.fg\">{(pred as { value: { fieldId: string } }).value.fieldId}</Box></>}\n                    footActions={done}\n                    trigger={\n                        <Box css={chip({ tone: 'brand', numeric: true, shape: 'rounded' })} cursor=\"pointer\" flexShrink={0}>\n                            <Box as=\"span\" whiteSpace=\"nowrap\">{formatPredicate(pred)}</Box>\n                            <Box as=\"button\" display=\"inline-flex\" alignItems=\"center\" cursor=\"pointer\" color=\"brand.fg\" flexShrink=\"0\" fontSize=\"10px\" onClick={e => { e.stopPropagation(); removeAt(i); }} aria-label=\"Remove filter\"><FontAwesomeIcon icon={faXmark} /></Box>\n                        </Box>\n                    }>\n                    {open === i ? <SlicePredicateBuilder fields={fields} initial={pred} lockField submitLabel=\"Apply\" onAdd={p => { replaceAt(i, p); setOpen(null); }} /> : null}\n                </SliceEditPopover>\n            ))}\n            <SliceEditPopover open={open === 'add'} onOpenChange={o => setOpen(o ? 'add' : null)} label=\"Add filter\" size=\"lg\" footActions={done}\n                trigger={<Box css={chip({ tone: 'dashed', numeric: true, shape: 'rounded' })} cursor=\"pointer\" display=\"inline-flex\" alignItems=\"center\" gap=\"1.5\"><Box as=\"span\" fontSize=\"9px\"><FontAwesomeIcon icon={faPlus} /></Box><Box as=\"span\">filter</Box></Box>}>\n                {open === 'add' ? <SlicePredicateBuilder fields={fields} onAdd={pred => { onChange([...population, pred]); setOpen(null); }} /> : null}\n            </SliceEditPopover>\n        </Box>\n    );\n}\n\n// ---------------------------------------------------------------------------\n// Set-up-rail controls (recipe + token based).\n// ---------------------------------------------------------------------------\nfunction Step({ n, title, help, children }: { n: number; title: string; help?: HelpId; children: ReactNode }) {\n    return (\n        <Box px=\"4.5\" py=\"3\" borderBottomWidth=\"1px\" borderColor=\"border.subtle\">\n            <Box display=\"flex\" alignItems=\"baseline\" gap=\"2.5\" mb=\"2\">\n                <Box as=\"span\" fontFamily=\"mono\" fontSize=\"11px\" fontWeight=\"bold\" color=\"brand.fg\" flex=\"0 0 auto\" lineHeight=\"1\">{n}</Box>\n                <Text textStyle=\"title.row\">{help ? <Help id={help}>{title}</Help> : title}</Text>\n            </Box>\n            {children}\n        </Box>\n    );\n}\n\n/** A themed dropdown menu over a set of choices. */\nfunction ColumnMenu({ choices, onPick, children }: { choices: string[]; onPick: (c: string) => void; children: ReactNode }) {\n    return (\n        <Menu.Root>\n            <Menu.Trigger asChild>{children as never}</Menu.Trigger>\n            <Portal>\n                <Menu.Positioner>\n                    <Menu.Content>\n                        {choices.map(c => (\n                            <Menu.Item key={c} value={c} onClick={() => onPick(c)}>{c}</Menu.Item>\n                        ))}\n                    </Menu.Content>\n                </Menu.Positioner>\n            </Portal>\n        </Menu.Root>\n    );\n}\n\n/** The column pick chip (Step 1 / 2) — a Menu trigger on the `button` recipe. */\nfunction ColumnPick({ column, kind, choices, onPick, badge, button, readonly }: {\n    column: string; kind: string; choices: string[]; onPick: (c: string) => void;\n    badge: ReturnType<typeof useRecipe>; button: ReturnType<typeof useRecipe>; readonly?: boolean;\n}) {\n    if (readonly) {\n        // Same outline-chip recipe + mono value + plain kind badge, but no menu trigger\n        // and no chevron — a static, aligned read-only display in the same slot. It is a\n        // plain (roleless) Box, not a button, so it carries no interactive semantics and\n        // needs no aria-readonly (which ARIA only honours on input-bearing roles).\n        return (\n            <Box css={button({ variant: 'outline', size: 'sm' })} gap=\"1.5\" cursor=\"default\">\n                <Text as=\"span\" fontFamily=\"mono\" fontWeight=\"semibold\">{column}</Text>\n                <Box as=\"span\" css={badge({ variant: 'plain', size: 'sm' })} textTransform=\"none\" letterSpacing=\"normal\">{kind}</Box>\n            </Box>\n        );\n    }\n    return (\n        <ColumnMenu choices={choices} onPick={onPick}>\n            <Box as=\"button\" css={button({ variant: 'outline', size: 'sm' })} gap=\"1.5\">\n                <Text as=\"span\" fontFamily=\"mono\" fontWeight=\"semibold\">{column}</Text>\n                <Box as=\"span\" css={badge({ variant: 'plain', size: 'sm' })} textTransform=\"none\" letterSpacing=\"normal\">{kind}</Box>\n                <Box as=\"span\" display=\"inline-flex\" color=\"fg.muted\" fontSize=\"10px\"><FontAwesomeIcon icon={faChevronDown} /></Box>\n            </Box>\n        </ColumnMenu>\n    );\n}\n\n/** A single-select segmented control built from the `segmentGroup` recipe.\n *  A `radiogroup` for assistive tech: each option is a `radio` with `aria-checked`,\n *  roving tabindex, and Left/Right arrow selection. */\nfunction SegmentSelect({ options, active, onPick, fill, size = 'xs' }: { options: string[]; active: number; onPick: (i: number) => void; fill?: boolean; size?: 'xs' }) {\n    const s = useSlotRecipe({ key: 'segmentGroup' })({ size });\n    return (\n        <Box css={s.root} {...(fill ? { width: '100%' } : {})} role=\"radiogroup\"\n            onKeyDown={(e) => {\n                const d = e.key === 'ArrowRight' || e.key === 'ArrowDown' ? 1 : e.key === 'ArrowLeft' || e.key === 'ArrowUp' ? -1 : 0;\n                if (!d) return;\n                e.preventDefault();\n                const next = (active + d + options.length) % options.length;\n                onPick(next);\n                const btns = e.currentTarget.querySelectorAll('[role=\"radio\"]');\n                (btns[next] as HTMLElement | undefined)?.focus();\n            }}>\n            {options.map((o, i) => (\n                <Box key={i} as=\"button\" role=\"radio\" aria-checked={active === i} tabIndex={active === i ? 0 : -1}\n                    css={s.item} {...(fill ? { flex: '1' } : {})} {...(active === i ? { 'data-state': 'checked' } : {})} onClick={() => onPick(i)}>\n                    <Box as=\"span\" css={s.itemText}>{o}</Box>\n                </Box>\n            ))}\n        </Box>\n    );\n}\n\n/** Static read-only twin of {@link SegmentSelect} — the active option rendered through the\n *  SAME `segmentGroup` recipe (a single, checked, non-interactive segment) so a read-only\n *  Advanced row keeps the frame/visual weight of the live toggle and of the readonly\n *  ColumnPick/FilterRail chips, rather than collapsing to bare text. */\nfunction SegmentStatic({ value, size = 'xs' }: { value: string; size?: 'xs' }) {\n    const s = useSlotRecipe({ key: 'segmentGroup' })({ size });\n    return (\n        <Box css={s.root} alignSelf=\"flex-start\">\n            <Box css={s.item} data-state=\"checked\">\n                <Box as=\"span\" css={s.itemText}>{value}</Box>\n            </Box>\n        </Box>\n    );\n}\n\n/** A labelled two-segment toggle (Advanced rail rows). */\nfunction Segmented({ label, left, right, active, onPick, last, help, readonly }: { label: string; left: string; right: string; active: 'left' | 'right'; onPick: (s: 'left' | 'right') => void; last?: boolean; help?: HelpId; readonly?: boolean }) {\n    return (\n        <Box display=\"flex\" flexDirection=\"column\" alignItems=\"stretch\" gap=\"1.5\" py=\"2\" borderBottomWidth={last ? '0' : '1px'} borderColor=\"border.subtle\">\n            <Text textStyle=\"caption.eyebrow\" textTransform=\"none\" letterSpacing=\"normal\" color=\"fg.default\">{help ? <Help id={help}>{label}</Help> : label}</Text>\n            {readonly\n                ? <SegmentStatic value={active === 'left' ? left : right} />\n                : <SegmentSelect options={[left, right]} active={active === 'left' ? 0 : 1} onPick={i => onPick(i === 0 ? 'left' : 'right')} fill size=\"xs\" />}\n        </Box>\n    );\n}\n\nimplementUIComponent(Experiment.Component, EastChakraExperiment);\n\nexport { EastChakraExperiment };\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Runtime implementation of `Decision.bind` (`decision_bind`) + the React\n * hook that consumes a handle.\n *\n * The platform implementation is the `Data.bind` / `Slice.bind` pattern:\n * given the binding descriptors, it builds the per-source bind handles\n * through the shared {@link defaultBindRuntime} and implements the handle's\n * closures once — union, write-routing by case id, judgement get-or-init and\n * writes, resolve (verdict + removal + selection clear), and the derived\n * commit gate. The case selection lives in workspace UI state under a key\n * derived from the bound source paths — owned entirely by this runtime,\n * visible nowhere.\n *\n * @packageDocumentation\n */\n\nimport { useCallback, useMemo, useSyncExternalStore } from 'react';\nimport {\n    OptionType,\n    StringType,\n    encodeBeast2For,\n    decodeBeast2For,\n    variant,\n    some,\n    none,\n    type ValueTypeOf,\n} from '@elaraai/east';\nimport type { PlatformFunction } from '@elaraai/east/internal';\nimport type { TreePath } from '@elaraai/e3-types';\nimport {\n    decisionBindPlatformFn,\n    DiffBindingType,\n    DecisionHandleType,\n    DecisionHandleRefType,\n    CommitStateType,\n    JudgementInputType,\n    DecisionConstraintType,\n    VerdictType,\n    type AnswerLiteral,\n} from '@elaraai/e3-ui/internal';\nimport { StateRuntime, registerPlatformImplementation, buildSliceHandle, DEFAULT_SLICE_STATE, getSomeorUndefined } from '@elaraai/east-ui-components';\nimport type { Slice as SliceNS } from '@elaraai/east-ui/internal';\n\ntype SliceStateValue = ValueTypeOf<typeof SliceNS.Types.State>;\nimport {\n    defaultBindRuntime,\n    getBindingTypes,\n    getReactiveDatasetCache,\n    getStagedStore,\n    datasetCacheKey,\n    datasetPathToString,\n    type BindHandle,\n} from '../platform/index.js';\nimport type { Decision } from './types.js';\n\ntype DiffBindingValue = ValueTypeOf<typeof DiffBindingType>;\n\n/** JS-side shape of a decoded {@link DecisionHandleType} value. */\nexport type DecisionHandleValue = ValueTypeOf<typeof DecisionHandleType>;\n/** JS-side shape of a decoded {@link DecisionHandleRefType} payload value —\n *  the binding descriptors an extension payload carries. */\nexport type DecisionHandleRefValue = ValueTypeOf<typeof DecisionHandleRefType>;\n/** JS-side shape of one staged judgement. */\nexport type Judgement = ValueTypeOf<typeof JudgementInputType>;\n/** JS-side shape of the derived commit gate. */\nexport type CommitState = ValueTypeOf<typeof CommitStateType>;\n/** JS-side shape of a verdict value. */\nexport type Verdict = ValueTypeOf<typeof VerdictType>;\n/** JS-side shape of one typed constraint (a contract-variant value — the\n *  default contract's shape stands in for any solution contract here). */\nexport type ConstraintValue = ValueTypeOf<typeof DecisionConstraintType>;\n\ntype SelectionValue = ValueTypeOf<OptionType<StringType>>;\n\nconst SELECTION_TYPE = OptionType(StringType);\nconst encodeSelection = encodeBeast2For(SELECTION_TYPE);\nconst decodeSelection = decodeBeast2For(SELECTION_TYPE);\n\n/** The UI-state key holding a handle's case selection — derived from the\n *  bound source paths so it is stable across reloads without anyone naming\n *  it. Shared by the platform impl (reads/writes) and the React hook\n *  (subscription). */\nexport function deriveSelectionKey(decisions: readonly DiffBindingValue[]): string {\n    return ['decision.selection', ...decisions.map(d => datasetPathToString(d.source as TreePath))].join('|');\n}\n\n// =============================================================================\n// Platform implementation.\n// =============================================================================\n\nfunction viewFor(binding: DiffBindingValue): BindHandle {\n    const workspace = getReactiveDatasetCache().getConfig().workspace ?? '';\n    const source = binding.source as TreePath;\n    const types = getBindingTypes(workspace, source);\n    if (!types) {\n        throw new Error(\n            `Decision.bind: no binding registered for ${datasetPathToString(source)} — bind it with Data.bind on the same surface first`,\n        );\n    }\n    const patch = binding.patch.type === 'some' ? (binding.patch.value as TreePath) : undefined;\n    return defaultBindRuntime.buildBindHandle(types.sourceType, source, patch, binding.mode.type);\n}\n\n/**\n * The canonical slice config over the fixed `DecisionType` — kind / title /\n * value filterable, kind + title searchable. Decoded form (plain JS\n * accessors); also what the queue's narrowing matches against.\n */\nexport const DECISION_SLICE_CONFIG = {\n    fields: new Map<string, unknown>([\n        ['kind', variant('string', { label: 'Kind', accessor: (d: Decision) => d.kind })],\n        ['title', variant('string', { label: 'Title', accessor: (d: Decision) => d.title })],\n        ['value', variant('float', { label: 'Value', accessor: (d: Decision) => d.value })],\n    ]),\n    rangeFieldId: none,\n    searchFieldIds: ['kind', 'title'],\n    breakdownFieldIds: [],\n};\n\n/**\n * The handle-owned slice key — derived from the bound source paths (like the\n * selection) plus a hash of the seed. The slice store is first-write-wins\n * (operator narrowing persists across reloads), so the seed must be part of\n * the key's identity: a changed seed binds a fresh key and always applies,\n * while edits over any given seed still persist.\n */\nfunction deriveSliceKey(decisions: readonly DiffBindingValue[], sliceInit?: SliceStateValue): string {\n    const sources = decisions.map(d => datasetPathToString(d.source as TreePath));\n    const seed = sliceInit === undefined ? 'none' : hashString(stableStringify(sliceInit));\n    return ['decision.slice', ...sources, seed].join('|');\n}\n\n/** Stable JSON for slice-state values (bigint / Date / Set / Map safe). */\nfunction stableStringify(v: unknown): string {\n    return JSON.stringify(v, (_k, x) => {\n        if (typeof x === 'bigint') return `${x}n`;\n        if (x instanceof Date) return x.toISOString();\n        if (x instanceof Set) return [...x].sort();\n        if (x instanceof Map) return [...x.entries()].sort((a, b) => String(a[0]).localeCompare(String(b[0])));\n        return x;\n    });\n}\n\n/** djb2 — short, stable, good enough for key identity. */\nfunction hashString(s: string): string {\n    let h = 5381;\n    for (let i = 0; i < s.length; i++) h = ((h << 5) + h + s.charCodeAt(i)) | 0;\n    return (h >>> 0).toString(36);\n}\n\nfunction buildDecisionHandle(decisions: DiffBindingValue[], judgements: DiffBindingValue, sliceInit?: SliceStateValue) {\n    const selectionKey = deriveSelectionKey(decisions);\n\n    const readSelection = (): SelectionValue => {\n        StateRuntime.trackKey(selectionKey);\n        const bytes = StateRuntime.getStore().read(selectionKey);\n        return bytes === undefined ? none : decodeSelection(bytes) as SelectionValue;\n    };\n    const writeSelection = (value: SelectionValue): null => {\n        StateRuntime.getStore().write(selectionKey, encodeSelection(value));\n        return null;\n    };\n\n    const queue = (): Decision[] => decisions.flatMap(b => viewFor(b).read() as Decision[]);\n\n    const readJudgements = (): Map<string, Judgement> => viewFor(judgements).read() as Map<string, Judgement>;\n    const writeJudgements = (next: Map<string, Judgement>): void => { viewFor(judgements).write(next); };\n\n    const judgementFor = (caseId: string): Judgement =>\n        readJudgements().get(caseId) ?? {\n            caseId,\n            answers: new Map(),\n            knowledge: none,\n            constraints: [],\n            verdict: none,\n            resolvedAt: none,\n        };\n\n    const stageJudgement = (caseId: string, change: Partial<Judgement>): null => {\n        const dict = new Map(readJudgements());\n        dict.set(caseId, { ...judgementFor(caseId), ...change });\n        writeJudgements(dict);\n        return null;\n    };\n\n    const removeFromOwningView = (caseId: string): void => {\n        for (const binding of decisions) {\n            const view = viewFor(binding);\n            const rows = view.read() as Decision[];\n            if (rows.some(d => d.id === caseId)) {\n                view.write(rows.filter(d => d.id !== caseId));\n            }\n        }\n    };\n\n    const slice = buildSliceHandle(\n        deriveSliceKey(decisions, sliceInit),\n        DECISION_SLICE_CONFIG,\n        sliceInit ?? DEFAULT_SLICE_STATE,\n        () => queue(),\n        none,\n    );\n\n    return {\n        decisions,\n        judgements,\n        sliceInit: sliceInit !== undefined ? some(sliceInit) : none,\n        slice,\n        queue,\n        selected: readSelection,\n        select: (caseId: string) => writeSelection(some(caseId)),\n        clearSelection: () => writeSelection(none),\n        decision: () => {\n            const selection = readSelection();\n            if (selection.type === 'none') return none;\n            const found = queue().find(d => d.id === selection.value);\n            return found === undefined ? none : some(found);\n        },\n        update: (edited: Decision): null => {\n            for (const binding of decisions) {\n                const view = viewFor(binding);\n                const rows = view.read() as Decision[];\n                if (rows.some(d => d.id === edited.id)) {\n                    view.write(rows.map(d => (d.id === edited.id ? edited : d)));\n                }\n            }\n            return null;\n        },\n        judgement: judgementFor,\n        answer: (caseId: string, prompt: string, response: Judgement['answers'] extends Map<string, infer A> ? A : never): null => {\n            const answers = new Map(judgementFor(caseId).answers);\n            answers.set(prompt, response);\n            return stageJudgement(caseId, { answers });\n        },\n        addKnowledge: (caseId: string, text: string): null =>\n            stageJudgement(caseId, { knowledge: some(text) }),\n        inject: (caseId: string, constraint: ConstraintValue): null => {\n            // Upsert by contract case name — one constraint per lever.\n            const constraints = judgementFor(caseId).constraints\n                .filter(c => c.type !== constraint.type)\n                .concat([constraint]);\n            return stageJudgement(caseId, { constraints });\n        },\n        resolve: (caseId: string, verdict: Verdict): null => {\n            stageJudgement(caseId, { verdict: some(verdict), resolvedAt: some(new Date()) });\n            removeFromOwningView(caseId);\n            writeSelection(none);\n            return null;\n        },\n        journal: (): Judgement[] => {\n            const entries = [...readJudgements().values()].filter(j => j.verdict.type === 'some');\n            const at = (j: Judgement) => (j.resolvedAt.type === 'some' ? j.resolvedAt.value.getTime() : 0);\n            return entries.sort((a, b) => at(b) - at(a));\n        },\n        commitState: (caseId: string): CommitState => {\n            const decision = queue().find(d => d.id === caseId);\n            const prompts = decision?.prompts ?? [];\n            const answers = judgementFor(caseId).answers;\n            const responses = prompts.map(p => answers.get(p.id)?.type);\n            if (responses.some(r => r === 'no')) return variant('blocked', null);\n            if (responses.some(r => r === 'unknown')) return variant('handoff', null);\n            const unanswered = responses.filter(r => r === undefined).length;\n            if (unanswered > 0) return variant('gated', BigInt(unanswered));\n            return variant('ready', null);\n        },\n    };\n}\n\n/** The `decision_bind` implementation. Registered on module load. */\nexport const DecisionBindPlatform: PlatformFunction[] = [\n    // Generic over the constraint contract — the type argument resolver\n    // receives the contract type value; the JS impl is type-agnostic.\n    decisionBindPlatformFn.implement((_constraintType: unknown) =>\n        (decisionsArg: unknown, judgementsArg: unknown, sliceInitArg: unknown) =>\n            buildDecisionHandle(\n                decisionsArg as DiffBindingValue[],\n                judgementsArg as DiffBindingValue,\n                getSomeorUndefined(sliceInitArg as never) as SliceStateValue | undefined,\n            )),\n];\n\nregisterPlatformImplementation(DecisionBindPlatform);\n\n// =============================================================================\n// React hook.\n// =============================================================================\n\nexport interface UseDecisionHandleResult {\n    /** The visible queue (union of every bound view). `null` until the\n     *  bindings' types are registered and readable. */\n    decisions: Decision[] | null;\n    /** The selected case id, or `null` when no case is open. */\n    selected: string | null;\n    /** Resolved cases (judgements carrying a verdict), newest first; `null`\n     *  while the bindings aren't readable. */\n    journal: Judgement[] | null;\n    /** The staged judgement for a case (a fresh empty one when nothing is\n     *  staged yet); `null` while the bindings aren't readable. */\n    judgementFor: (caseId: string) => Judgement | null;\n    /** The derived commit gate for a case; `null` while unreadable. */\n    commitStateFor: (caseId: string) => CommitState | null;\n    select: (caseId: string) => void;\n    clearSelection: () => void;\n    /** Probe edit — routed to the owning view's patch overlay by `id`. */\n    update: (next: Decision) => void;\n    /** Record the response to one judgement prompt (by prompt id). */\n    answer: (caseId: string, promptId: string, response: AnswerLiteral) => void;\n    addKnowledge: (caseId: string, text: string) => void;\n    /** Stage a typed constraint (a contract-variant value; upserts by case name). */\n    inject: (caseId: string, constraint: ConstraintValue) => void;\n    /** Commit a verdict: judgement write + removal through the owning patch\n     *  + selection clear. */\n    resolve: (caseId: string, verdict: Verdict) => void;\n    /** The handle-owned slice over the queue (closures; key derived from the\n     *  bound source paths). `null` until the bindings are readable. */\n    slice: ReturnType<typeof buildSliceHandle> | null;\n}\n\n/** Subscribe to every store the handle projects from: each binding's source\n *  and patch (staged store + dataset cache) plus the selection state key. */\nfunction useHandleVersion(handle: DecisionHandleRefValue | null): number {\n    const staged = getStagedStore();\n    const cache = getReactiveDatasetCache();\n    const state = StateRuntime.getStore();\n    const workspace = cache.getConfig().workspace ?? '';\n\n    const keys = useMemo(() => {\n        if (!handle) return [] as string[];\n        const bindings = [...handle.decisions, handle.judgements];\n        const ks: string[] = [];\n        for (const b of bindings) {\n            ks.push(datasetCacheKey(workspace, b.source as TreePath));\n            if (b.patch.type === 'some') ks.push(datasetCacheKey(workspace, b.patch.value as TreePath));\n        }\n        return ks;\n    }, [workspace, handle]);\n\n    const selectionKey = handle ? deriveSelectionKey(handle.decisions) : undefined;\n\n    const subscribe = useCallback((cb: () => void) => {\n        const unsubs = keys.flatMap(k => [staged.subscribe(k, cb), cache.subscribe(k, cb)]);\n        if (selectionKey !== undefined) unsubs.push(state.subscribe(selectionKey, cb));\n        return () => { for (const u of unsubs) u(); };\n    }, [staged, cache, state, keys, selectionKey]);\n\n    const getSnapshot = useCallback(\n        () => keys.reduce((sum, k) => sum + staged.getKeyVersion(k) + cache.getKeyVersion(k), 0)\n            + (selectionKey !== undefined ? state.getKeyVersion(selectionKey) : 0),\n        [staged, cache, state, keys, selectionKey],\n    );\n\n    return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/**\n * Resolve a {@link DecisionHandleRefType} payload value into live reads +\n * stable writers. The hook reconstructs the handle from its descriptors\n * (the same construction the platform impl performs) and adds store\n * subscriptions so the surface re-renders when any bound value or the\n * selection changes.\n */\nexport function useDecisionHandle(ref: DecisionHandleRefValue | null): UseDecisionHandleResult {\n    const version = useHandleVersion(ref);\n\n    // The ref is the handle's encodable identity; the live handle is\n    // (re)constructed locally — the same construction the `decision_bind`\n    // platform impl performs for East-side callers.\n    const fns = useMemo(\n        () => (ref\n            ? buildDecisionHandle([...ref.decisions], ref.judgements,\n                getSomeorUndefined(ref.slice as never) as SliceStateValue | undefined)\n            : null),\n        [ref],\n    );\n\n    const { decisions, selected, journal } = useMemo(() => {\n        try {\n            if (!fns) return { decisions: null, selected: null, journal: null };\n            const sel = fns.selected();\n            return {\n                decisions: fns.queue(),\n                selected: sel.type === 'some' ? (sel.value as string) : null,\n                journal: fns.journal(),\n            };\n        } catch {\n            // Binding types not registered yet (first render before the\n            // surface's Data.bind calls run) — render the loading state.\n            return { decisions: null, selected: null, journal: null };\n        }\n        // `version` drives recompute when any underlying store changes.\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [fns, version]);\n\n    const judgementFor = useCallback((caseId: string): Judgement | null => {\n        try { return fns ? fns.judgement(caseId) : null; } catch { return null; }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [fns, version]);\n\n    const commitStateFor = useCallback((caseId: string): CommitState | null => {\n        try { return fns ? fns.commitState(caseId) : null; } catch { return null; }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [fns, version]);\n\n    const select = useCallback((caseId: string) => { fns?.select(caseId); }, [fns]);\n    const clearSelection = useCallback(() => { fns?.clearSelection(); }, [fns]);\n    const update = useCallback((next: Decision) => { fns?.update(next); }, [fns]);\n    const answer = useCallback((caseId: string, promptId: string, response: AnswerLiteral) => {\n        fns?.answer(caseId, promptId, variant(response, null));\n    }, [fns]);\n    const addKnowledge = useCallback((caseId: string, text: string) => {\n        fns?.addKnowledge(caseId, text);\n    }, [fns]);\n    const inject = useCallback((caseId: string, constraint: ConstraintValue) => {\n        fns?.inject(caseId, constraint);\n    }, [fns]);\n    const resolve = useCallback((caseId: string, verdict: Verdict) => {\n        fns?.resolve(caseId, verdict);\n    }, [fns]);\n\n    return {\n        decisions,\n        selected,\n        journal,\n        judgementFor,\n        commitStateFor,\n        select,\n        clearSelection,\n        update,\n        answer,\n        addKnowledge,\n        inject,\n        resolve,\n        slice: fns ? (fns.slice as ReturnType<typeof buildSliceHandle>) : null,\n    };\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Formatting for injected constraints — one place that turns a\n * contract-variant value into the words a chip renders, shared by the\n * judgement facet and the journal.\n *\n * A constraint is `variant(leverCase, payload)` where the payload shape is\n * the solution's choice: an op variant (`atMost 36`), a struct\n * (`person Patel · from Mar 12 · to Mar 15`), or a bare primitive. The\n * lever's display label comes from the decision's `levers` when available,\n * falling back to the contract case name.\n */\n\nimport type { ValueTypeOf } from '@elaraai/east';\nimport type { LeverType } from '@elaraai/e3-ui/internal';\n\nimport type { ConstraintValue } from './handle-runtime.js';\nimport type { TypeNode } from './lever-editor.js';\n\ntype LeverValue = ValueTypeOf<typeof LeverType>;\n\n/** Words for the well-known bounded-op case names. */\nexport const OP_WORDS: Record<string, string> = {\n    eq: '=',\n    neq: '≠',\n    atMost: 'at most',\n    atLeast: 'at least',\n    between: 'between',\n    before: 'before',\n    after: 'after',\n    in: 'in',\n    notIn: 'not in',\n    is: 'is',\n};\n\nfunction formatScalar(v: unknown): string {\n    if (v instanceof Date) {\n        return `${v.toLocaleString('en', { month: 'short' })} ${v.getDate()}`;\n    }\n    if (v instanceof Set) {\n        return `{${[...v].map(formatScalar).join(', ')}}`;\n    }\n    if (v !== null && typeof v === 'object' && !(v as { type?: unknown }).type) {\n        // struct payload: \"k v · k v\"\n        return Object.entries(v as Record<string, unknown>)\n            .map(([k, x]) => `${k} ${formatScalar(x)}`)\n            .join(' · ');\n    }\n    return String(v);\n}\n\n/**\n * The lever's display words plus the formatted payload. Dispatch is\n * type-directed: `payloadType` is the contract case's payload type (walked\n * off the judgements binding, same as the lever editor) — the value's shape\n * is never guessed.\n */\nexport function formatConstraint(\n    constraint: ConstraintValue,\n    payloadType: TypeNode | undefined,\n    levers?: readonly LeverValue[],\n): { lever: string; op: string; value: string } {\n    const c = constraint as unknown as { type: string; value: unknown };\n    const lever = levers?.find(l => l.case === c.type)?.label ?? c.type;\n    if (payloadType?.type === 'Variant') {\n        // op-variant payload: \"<lever> <op-word> <value>\"\n        const op = c.value as { type: string; value: unknown };\n        const word = OP_WORDS[op.type] ?? op.type;\n        const opType = payloadType.cases?.[op.type];\n        if (opType?.type === 'Struct' && op.value !== null && typeof op.value === 'object') {\n            const r = op.value as { min?: unknown; max?: unknown };\n            if ('min' in r && 'max' in r) {\n                return { lever, op: word, value: `${formatScalar(r.min)} – ${formatScalar(r.max)}` };\n            }\n        }\n        return { lever, op: word, value: formatScalar(op.value) };\n    }\n    // struct / primitive payload: \"<lever> · <payload>\"\n    return { lever, op: '·', value: formatScalar(c.value) };\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Internal — the judgement facet's typed constraint editor for one lever.\n *\n * The lever names a case of the solution's constraint contract (a by-name\n * `VariantType`); this editor derives its controls from that case's payload\n * type, read off the judgements binding's registered type:\n *\n * - variant of ops over primitives (`atMost` / `between {min,max}` / …) —\n *   an op select plus typed input(s);\n * - struct of primitives (a blackout `{person, from, to}`) — one typed\n *   input per field;\n * - bare primitive — a single typed input.\n *\n * Submission builds the contract-variant value and hands it to the handle's\n * `inject` (which upserts by case name).\n */\n\nimport { useMemo, useRef, useState, type ReactNode } from 'react';\nimport { Box, chakra, useRecipe } from '@chakra-ui/react';\nimport { none, some, variant } from '@elaraai/east';\nimport {\n    EastChakraSelect,\n    EastChakraStringInput,\n    EastChakraIntegerInput,\n    EastChakraFloatInput,\n    EastChakraDateTimeInput,\n} from '@elaraai/east-ui-components';\n\nimport type { ConstraintValue } from './handle-runtime.js';\nimport { OP_WORDS } from './constraint-format.js';\n\n/** Minimal structural view of an East runtime type object. */\nexport interface TypeNode {\n    type: string;\n    cases?: Record<string, TypeNode>;\n    fields?: Record<string, TypeNode>;\n    key?: TypeNode;\n    value?: TypeNode;\n}\n\nconst PRIMITIVES = new Set(['String', 'Integer', 'Float', 'DateTime', 'Boolean']);\n\n/**\n * Normalize a registered binding type to {@link TypeNode}. Platform type\n * arguments arrive as decoded `EastTypeValue` variants\n * (`{type:'Struct', value:[{name,type}…]}`); runtime `EastType` objects use\n * the flattened shape (`{type:'Struct', fields:{…}}`). Accept both.\n */\nexport function normalizeTypeValue(tv: unknown): TypeNode {\n    const n = tv as { type: string; value?: unknown; cases?: unknown; fields?: unknown; key?: unknown };\n    if (n.cases !== undefined || n.fields !== undefined) {\n        // Runtime-object form — already TypeNode-shaped; normalize children.\n        const out: TypeNode = { type: n.type };\n        if (n.cases) out.cases = Object.fromEntries(Object.entries(n.cases as Record<string, unknown>).map(([k, v]) => [k, normalizeTypeValue(v)]));\n        if (n.fields) out.fields = Object.fromEntries(Object.entries(n.fields as Record<string, unknown>).map(([k, v]) => [k, normalizeTypeValue(v)]));\n        if (n.key) out.key = normalizeTypeValue(n.key);\n        if (n.value !== undefined && (n.type === 'Array' || n.type === 'Dict')) out.value = normalizeTypeValue(n.value);\n        return out;\n    }\n    switch (n.type) {\n        case 'Struct':\n            return { type: 'Struct', fields: Object.fromEntries((n.value as { name: string; type: unknown }[]).map(f => [f.name, normalizeTypeValue(f.type)])) };\n        case 'Variant':\n            return { type: 'Variant', cases: Object.fromEntries((n.value as { name: string; type: unknown }[]).map(f => [f.name, normalizeTypeValue(f.type)])) };\n        case 'Array':\n            return { type: 'Array', value: normalizeTypeValue(n.value) };\n        case 'Dict': {\n            const d = n.value as { key: unknown; value: unknown };\n            return { type: 'Dict', key: normalizeTypeValue(d.key), value: normalizeTypeValue(d.value) };\n        }\n        case 'Recursive': {\n            // Unwrap one level when the wrapper carries an inner type.\n            const w = n.value as { type?: string; value?: { inner?: unknown } };\n            if (w?.type === 'wrapper' && w.value?.inner) return normalizeTypeValue(w.value.inner);\n            return { type: n.type };\n        }\n        default:\n            return { type: n.type };\n    }\n}\n\nfunction emptyFor(node: TypeNode): unknown {\n    switch (node.type) {\n        case 'Integer': return 0n;\n        case 'Float': return 0;\n        case 'DateTime': return new Date();\n        case 'Boolean': return false;\n        case 'String': return '';\n        case 'Struct': return Object.fromEntries(Object.entries(node.fields ?? {}).map(([k, f]) => [k, emptyFor(f)]));\n        default: return null;\n    }\n}\n\n/** Editable shapes: bare primitive, struct of primitives, or an op variant\n *  whose case payloads are primitives / structs of primitives. */\nexport function leverPayloadEditable(node: TypeNode | undefined): boolean {\n    if (!node) return false;\n    if (PRIMITIVES.has(node.type)) return true;\n    if (node.type === 'Struct') return Object.values(node.fields ?? {}).every(f => PRIMITIVES.has(f.type));\n    if (node.type === 'Variant') return Object.values(node.cases ?? {}).every(c => PRIMITIVES.has(c.type) || (c.type === 'Struct' && Object.values(c.fields ?? {}).every(f => PRIMITIVES.has(f.type))));\n    return false;\n}\n\nexport interface LeverEditorProps {\n    /** The contract case name this lever injects. */\n    leverCase: string;\n    /** The case's payload type, walked off the judgements binding type. */\n    payload: TypeNode;\n    onInject: (constraint: ConstraintValue) => void;\n}\n\nconst inputStyle = some({ size: some(variant('sm', null)) });\n\nexport function LeverEditor({ leverCase, payload, onInject }: LeverEditorProps) {\n    const button = useRecipe({ key: 'button' });\n\n    const isOpVariant = payload.type === 'Variant';\n    const ops = useMemo(() => (isOpVariant ? Object.keys(payload.cases ?? {}) : []), [isOpVariant, payload]);\n    const [opTag, setOpTag] = useState(ops[0] ?? '');\n    const active: TypeNode = isOpVariant ? (payload.cases?.[opTag] ?? { type: 'Null' }) : payload;\n\n    // Typed controls own their in-progress state; commits land in a ref so\n    // typing never re-renders this component (the Ark NumberInput resets if\n    // its payload identity changes mid-edit).\n    const valRef = useRef<unknown>(emptyFor(active));\n    const keyRef = useRef(`${leverCase}:${opTag}`);\n    if (keyRef.current !== `${leverCase}:${opTag}`) {\n        keyRef.current = `${leverCase}:${opTag}`;\n        valRef.current = emptyFor(active);\n    }\n\n    const primitiveInput = (node: TypeNode, key: string, get: () => unknown, set: (v: unknown) => void): ReactNode => {\n        switch (node.type) {\n            case 'Integer':\n                return <EastChakraIntegerInput key={key} value={{ value: get() as bigint, onChange: some(set), style: inputStyle } as never} />;\n            case 'Float':\n                return <EastChakraFloatInput key={key} value={{ value: get() as number, onChange: some(set), style: inputStyle } as never} />;\n            case 'DateTime':\n                return <EastChakraDateTimeInput key={key} value={{ value: get() as Date, onChange: some(set), style: inputStyle } as never} />;\n            case 'Boolean':\n                return (\n                    <EastChakraSelect\n                        key={key}\n                        ariaLabel={key}\n                        value={{\n                            value: some(String(get())),\n                            items: [{ value: 'true', label: 'true', disabled: none }, { value: 'false', label: 'false', disabled: none }],\n                            placeholder: none, multiple: none, disabled: none,\n                            onChange: some((v: string) => set(v === 'true')), onChangeMultiple: none, onOpenChange: none,\n                            style: inputStyle,\n                        } as never}\n                    />\n                );\n            default:\n                return <EastChakraStringInput key={key} value={{ value: String(get() ?? ''), onChange: some(set), style: inputStyle } as never} />;\n        }\n    };\n\n    const valueControls = useMemo<ReactNode>(() => {\n        const k = keyRef.current;\n        if (active.type === 'Struct') {\n            return Object.entries(active.fields ?? {}).map(([field, node]) => (\n                <Box key={`${k}.${field}`} display=\"flex\" alignItems=\"center\" gap=\"6px\" minW={0}>\n                    <Box as=\"span\" textStyle=\"caption.eyebrow\" color=\"fg.subtle\" flexShrink={0}>{field}</Box>\n                    {primitiveInput(node, `${k}.${field}.in`,\n                        () => (valRef.current as Record<string, unknown>)[field],\n                        v => { (valRef.current as Record<string, unknown>)[field] = v; })}\n                </Box>\n            ));\n        }\n        return (\n            <Box key={`${k}.wrap`} width=\"180px\" flexShrink={0}>\n                {primitiveInput(active, `${k}.value`, () => valRef.current, v => { valRef.current = v; })}\n            </Box>\n        );\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [active, opTag, leverCase]);\n\n    const submit = () => {\n        const value = valRef.current;\n        const payloadValue = active.type === 'Struct' ? { ...(value as object) } : value;\n        const constraint = (isOpVariant\n            ? variant(leverCase, variant(opTag, payloadValue))\n            : variant(leverCase, payloadValue)) as unknown as ConstraintValue;\n        onInject(constraint);\n        valRef.current = emptyFor(active);\n    };\n\n    return (\n        <Box\n            display=\"flex\"\n            alignItems=\"center\"\n            gap=\"8px\"\n            flexWrap=\"wrap\"\n            minW={0}\n            css={{\n                '& [data-scope=select][data-part=root]': { width: 'auto', minWidth: '110px', flexShrink: 0 },\n                '& [data-scope=number-input][data-part=root]': { width: '150px', flexShrink: 0 },\n            }}\n        >\n            {isOpVariant && (\n                <EastChakraSelect\n                    ariaLabel=\"Operator\"\n                    value={{\n                        value: some(opTag),\n                        items: ops.map(o => ({ value: o, label: OP_WORDS[o] ?? o, disabled: none })),\n                        placeholder: none, multiple: none, disabled: none,\n                        onChange: some((v: string) => setOpTag(v)), onChangeMultiple: none, onOpenChange: none,\n                        style: inputStyle,\n                    } as never}\n                />\n            )}\n            {valueControls}\n            <chakra.button type=\"button\" css={button({ variant: 'solid', size: 'xs' })} onClick={submit}>\n                Add\n            </chakra.button>\n        </Box>\n    );\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Internal — the decision-queue row's facet panels. One facet open at a\n * time beneath the selected row, swapped by the row's segmented toggles:\n *\n * - `Evidence` — the model's argument: stakes / if-wrong / confidence line,\n *   typed evidence chips, and the host's per-decision `detail` canvas.\n * - `Options` — the ranked stack (recommendation + alternatives) with\n *   zero-anchored downside / uplift bars.\n * - `Judgement` — the operator's staged response: prompts, knowledge, and\n *   the lever builder (typed editors from the solution's constraint\n *   contract), with the gate hint + Defer as the footer.\n *\n * (The `Modify` facet is the host's probe editor, rendered by the queue\n * directly through the `modify` slot.)\n */\n\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { Box, Text, chakra, useRecipe } from '@chakra-ui/react';\nimport { none, some, variant } from '@elaraai/east';\nimport { EastChakraSelect, getSomeorUndefined, formatTick, type TickFormatOpt } from '@elaraai/east-ui-components';\n\nimport type { UseDecisionHandleResult, Judgement, ConstraintValue } from './handle-runtime.js';\nimport { LeverEditor, leverPayloadEditable, type TypeNode } from './lever-editor.js';\nimport { formatConstraint } from './constraint-format.js';\nimport type { Decision } from './types.js';\n\nfunction fmt(d: Decision, n: number, showSign = false): string {\n    return formatTick(n, getSomeorUndefined(d.format) as TickFormatOpt, showSign);\n}\n\nconst caption = { textStyle: 'caption.eyebrow', color: 'fg.muted' } as const;\n\n// =============================================================================\n// Evidence — the model's argument + the host's detail canvas (rendered by\n// the queue as children, since it owns the component dispatcher).\n// =============================================================================\n\nexport interface EvidenceFacetProps {\n    decision: Decision;\n    /** The host's `detail` canvas, already rendered by the queue. */\n    children?: React.ReactNode;\n}\n\nexport const EvidenceFacet = memo(function EvidenceFacet({ decision, children }: EvidenceFacetProps) {\n    const stakes = getSomeorUndefined(decision.stakes);\n    const downside = getSomeorUndefined(decision.downside);\n    const confidence = getSomeorUndefined(decision.confidence);\n    const detail = getSomeorUndefined(decision.detail);\n    return (\n        <Box display=\"flex\" flexDirection=\"column\" gap=\"10px\">\n            <Box display=\"flex\" alignItems=\"baseline\" gap=\"12px\" flexWrap=\"wrap\">\n                <Text {...caption} color=\"fg\">Why this is recommended</Text>\n                <Text {...caption}>\n                    {stakes !== undefined && <>stakes <Text as=\"span\" fontFamily=\"mono\" fontWeight=\"semibold\">{stakes.type}</Text> · </>}\n                    {downside !== undefined && <>if wrong <Text as=\"span\" fontFamily=\"mono\" fontWeight=\"semibold\" color=\"fg.danger\">{fmt(decision, downside, true)}</Text> · </>}\n                    {confidence !== undefined && <>confidence <Text as=\"span\" fontFamily=\"mono\" fontWeight=\"semibold\">{Math.round(confidence * 100)}%</Text></>}\n                </Text>\n            </Box>\n            {detail !== undefined && <Text fontSize=\"12.5px\" color=\"fg.muted\">{detail}</Text>}\n            {decision.evidence.length > 0 && (\n                <Box display=\"grid\" gridTemplateColumns=\"repeat(auto-fit, minmax(180px, 1fr))\" gap=\"8px\">\n                    {decision.evidence.map((e, i) => {\n                        const note = getSomeorUndefined(e.note);\n                        return (\n                            <Box key={i} borderWidth=\"1px\" borderColor=\"border.subtle\" borderRadius=\"4px\" px=\"10px\" py=\"8px\" bg=\"bg.canvas\">\n                                <Text {...caption}>{e.label}</Text>\n                                <Text fontSize=\"13px\" fontWeight=\"medium\">{e.text}</Text>\n                                {note !== undefined && <Text fontSize=\"11px\" fontFamily=\"mono\" color=\"fg.subtle\">{note}</Text>}\n                            </Box>\n                        );\n                    })}\n                </Box>\n            )}\n            {children}\n        </Box>\n    );\n});\n\n// =============================================================================\n// Options — the ranked stack with zero-anchored bars.\n// =============================================================================\n\ninterface RankedOption {\n    rank: number;\n    label: string;\n    value: number;\n    downside: number | undefined;\n    confidence: number | undefined;\n    note: string | undefined;\n    recommended: boolean;\n}\n\nfunction rankOptions(d: Decision): RankedOption[] {\n    const alternatives = [...d.alternatives]\n        .sort((a, b) => b.value - a.value)\n        .map(a => ({\n            label: a.label,\n            value: a.value,\n            downside: getSomeorUndefined(a.downside),\n            confidence: getSomeorUndefined(a.confidence),\n            note: getSomeorUndefined(a.note),\n            recommended: false,\n        }));\n    return [\n        {\n            label: d.title,\n            value: d.value,\n            downside: getSomeorUndefined(d.downside),\n            confidence: getSomeorUndefined(d.confidence),\n            note: getSomeorUndefined(d.summary),\n            recommended: true,\n        },\n        ...alternatives,\n    ].map((o, i) => ({ ...o, rank: i + 1 }));\n}\n\nfunction metaLine(o: RankedOption): string {\n    const parts: string[] = [];\n    if (o.recommended) parts.push('recommended');\n    if (o.confidence !== undefined) parts.push(`${Math.round(o.confidence * 100)}% conf`);\n    if (!o.recommended && o.note !== undefined) parts.push(o.note);\n    return parts.join(' · ');\n}\n\nexport interface OptionsFacetProps {\n    decision: Decision;\n    /** Narrow hosts render the stacked meter-card layout. */\n    narrow?: boolean;\n}\n\nexport const OptionsFacet = memo(function OptionsFacet({ decision, narrow }: OptionsFacetProps) {\n    const options = rankOptions(decision);\n    const maxUp = Math.max(...options.map(o => Math.max(o.value, 0)), 1e-9);\n    const maxDown = Math.max(...options.map(o => Math.abs(o.downside ?? 0)), 1e-9);\n\n    if (narrow) {\n        const meter = (label: string, frac: number, display: string, tone: 'success' | 'danger' | 'neutral') => (\n            <Box display=\"grid\" gridTemplateColumns=\"80px 1fr 64px\" alignItems=\"center\" gap=\"8px\">\n                <Text {...caption} whiteSpace=\"nowrap\">{label}</Text>\n                <Box height=\"6px\" bg=\"border.subtle\" borderRadius=\"3px\" overflow=\"hidden\">\n                    <Box height=\"100%\" width={`${Math.round(Math.min(Math.abs(frac), 1) * 100)}%`} bg={tone === 'success' ? 'fg.success' : tone === 'danger' ? 'fg.danger' : 'fg.subtle'} opacity={0.7} />\n                </Box>\n                <Text fontSize=\"11px\" fontFamily=\"mono\" fontWeight=\"semibold\" textAlign=\"right\">{display}</Text>\n            </Box>\n        );\n        return (\n            <Box display=\"flex\" flexDirection=\"column\" gap=\"10px\">\n                <Text {...caption} color=\"fg\">Options · {options.length} evaluated</Text>\n                {options.map(o => (\n                    <Box key={o.rank} display=\"flex\" flexDirection=\"column\" gap=\"4px\" pl=\"8px\" {...(o.recommended ? { boxShadow: 'inset 2px 0 0 var(--chakra-colors-accent-brand)' } : {})}>\n                        <Text fontSize=\"12.5px\"><Text as=\"span\" fontFamily=\"mono\" color=\"fg.subtle\">{o.rank}</Text> <Text as=\"span\" fontWeight={o.recommended ? 'semibold' : 'normal'}>{o.label}</Text></Text>\n                        {meter('Uplift', o.value / maxUp, fmt(decision, o.value, true), 'success')}\n                        {meter('If wrong', (o.downside ?? 0) / maxDown, o.downside !== undefined ? fmt(decision, o.downside, true) : '—', 'danger')}\n                    </Box>\n                ))}\n            </Box>\n        );\n    }\n\n    return (\n        <Box display=\"flex\" flexDirection=\"column\" gap=\"6px\">\n            <Box display=\"grid\" gridTemplateColumns=\"minmax(180px, 1.1fr) 1fr 1fr\" alignItems=\"baseline\" gap=\"8px\">\n                <Text {...caption} color=\"fg\">Options · {options.length} evaluated</Text>\n                <Text {...caption} textAlign=\"center\">If wrong</Text>\n                <Text {...caption} textAlign=\"right\">Uplift</Text>\n            </Box>\n            {options.map(o => {\n                const downFrac = Math.min(Math.abs(o.downside ?? 0) / maxDown, 1);\n                const upFrac = Math.min(Math.max(o.value, 0) / maxUp, 1);\n                return (\n                    <Box\n                        key={o.rank}\n                        display=\"grid\"\n                        gridTemplateColumns=\"minmax(180px, 1.1fr) 1fr 1fr\"\n                        alignItems=\"center\"\n                        gap=\"8px\"\n                        py=\"4px\"\n                        {...(o.recommended ? { bg: 'bg.brand.subtle', boxShadow: 'inset 2px 0 0 var(--chakra-colors-accent-brand)' } : {})}\n                    >\n                        <Box minW={0} pl={o.recommended ? '6px' : '0'} display=\"flex\" alignItems=\"baseline\" gap=\"6px\">\n                            <Text as=\"span\" fontFamily=\"mono\" fontSize=\"11px\" color=\"fg.subtle\" flexShrink={0}>{o.rank}</Text>\n                            <Text as=\"span\" fontSize=\"12.5px\" fontWeight={o.recommended ? 'semibold' : 'normal'} flexShrink={0}>{o.label}</Text>\n                            {metaLine(o) !== '' && (\n                                <Text as=\"span\" fontFamily=\"mono\" fontSize=\"10.5px\" color=\"fg.muted\" minW={0} truncate>{metaLine(o)}</Text>\n                            )}\n                        </Box>\n                        <Box display=\"flex\" justifyContent=\"flex-end\" alignItems=\"center\" gap=\"6px\" height=\"16px\">\n                            {o.downside !== undefined && (\n                                <>\n                                    <Text fontSize=\"10.5px\" fontFamily=\"mono\" color=\"fg.danger\" flexShrink={0}>{fmt(decision, o.downside, true)}</Text>\n                                    <Box height=\"12px\" width={`${Math.round(downFrac * 100)}%`} bg=\"fg.danger\" opacity={0.55} />\n                                </>\n                            )}\n                        </Box>\n                        <Box display=\"flex\" alignItems=\"center\" gap=\"6px\" height=\"16px\" borderLeftWidth=\"1px\" borderColor=\"border.strong\">\n                            {o.value > 0 && (\n                                <>\n                                    <Box height=\"12px\" width={`${Math.round(upFrac * 100)}%`} bg=\"fg.success\" opacity={0.6} />\n                                    <Text fontSize=\"10.5px\" fontFamily=\"mono\" color=\"fg.success\" flexShrink={0}>{fmt(decision, o.value, true)}</Text>\n                                </>\n                            )}\n                        </Box>\n                    </Box>\n                );\n            })}\n        </Box>\n    );\n});\n\n// =============================================================================\n// Judgement — prompts · knowledge · lever builder · gate footer.\n// =============================================================================\n\nconst ANSWERS = [\n    { literal: 'yes', label: 'Yes' },\n    { literal: 'no', label: 'No' },\n    { literal: 'unknown', label: \"Don't know\" },\n] as const;\n\nexport interface JudgementFacetProps {\n    decision: Decision;\n    handle: UseDecisionHandleResult;\n    /** Contract case name → payload type, walked off the judgements binding. */\n    leverPayloads: Record<string, TypeNode>;\n}\n\nexport const JudgementFacet = memo(function JudgementFacet({ decision, handle, leverPayloads }: JudgementFacetProps) {\n    const button = useRecipe({ key: 'button' });\n    const input = useRecipe({ key: 'input' });\n\n    const judgement: Judgement | null = handle.judgementFor(decision.id);\n    const stagedKnowledge = judgement?.knowledge.type === 'some' ? judgement.knowledge.value : '';\n    const [knowledge, setKnowledge] = useState(stagedKnowledge);\n    useEffect(() => { setKnowledge(stagedKnowledge); }, [stagedKnowledge]);\n    const commitKnowledge = useCallback(() => {\n        if (knowledge !== stagedKnowledge) handle.addKnowledge(decision.id, knowledge);\n    }, [knowledge, stagedKnowledge, handle, decision.id]);\n\n    const levers = useMemo(\n        () => decision.levers.filter(l => leverPayloadEditable(leverPayloads[l.case])),\n        [decision.levers, leverPayloads],\n    );\n    const [leverCase, setLeverCase] = useState(levers[0]?.case ?? '');\n    const activeLever = levers.find(l => l.case === leverCase) ?? levers[0];\n\n    const gate = handle.commitStateFor(decision.id);\n    const gateHint = gate?.type === 'gated'\n        ? (gate.value === 1n ? 'Answer the judgement question to enable apply' : `Answer the ${gate.value} judgement questions to enable apply`)\n        : gate?.type === 'blocked' ? 'Commit blocked — an answer contradicts the recommendation'\n        : gate?.type === 'handoff' ? \"Awaiting handoff — an answer was don't know\"\n        : null;\n\n    const onInject = useCallback((constraint: ConstraintValue) => {\n        handle.inject(decision.id, constraint);\n    }, [handle, decision.id]);\n\n    if (!judgement) return null;\n\n    return (\n        <Box display=\"flex\" flexDirection=\"column\" gap=\"10px\">\n            <Box display=\"flex\" alignItems=\"baseline\" gap=\"12px\">\n                <Text {...caption} color=\"fg.warning\">Required before commit</Text>\n                <Text {...caption} marginLeft=\"auto\">human-only signal · model can&rsquo;t see this</Text>\n            </Box>\n\n            {decision.prompts.map(prompt => {\n                const current = judgement.answers.get(prompt.id)?.type;\n                return (\n                    <Box key={prompt.id} display=\"flex\" alignItems=\"center\" gap=\"12px\" flexWrap=\"wrap\">\n                        <Text fontSize=\"13px\" fontWeight=\"medium\" flex=\"1\" minW=\"180px\">{prompt.text}</Text>\n                        <Box display=\"flex\" gap=\"6px\" flexShrink={0}>\n                            {ANSWERS.map(a => (\n                                <chakra.button\n                                    key={a.literal}\n                                    type=\"button\"\n                                    css={button({ variant: current === a.literal ? 'solid' : 'outline', size: 'xs' })}\n                                    onClick={() => handle.answer(decision.id, prompt.id, a.literal)}\n                                >\n                                    {a.label}\n                                </chakra.button>\n                            ))}\n                        </Box>\n                    </Box>\n                );\n            })}\n\n            <Box display=\"flex\" flexDirection=\"column\" gap=\"4px\">\n                <Text {...caption}>Knowledge · what the model can&rsquo;t see</Text>\n                <chakra.textarea\n                    css={input({ size: 'sm' })}\n                    rows={2}\n                    value={knowledge}\n                    placeholder=\"Private context — persists with the case\"\n                    onChange={e => setKnowledge(e.target.value)}\n                    onBlur={commitKnowledge}\n                />\n            </Box>\n\n            {(levers.length > 0 || judgement.constraints.length > 0) && (\n                <Box display=\"flex\" flexDirection=\"column\" gap=\"6px\">\n                    <Text {...caption}>Inject constraint · next run folds it in</Text>\n                    {judgement.constraints.length > 0 && (\n                        <Box display=\"flex\" gap=\"12px\" flexWrap=\"wrap\">\n                            {judgement.constraints.map((c, i) => {\n                                const tag = (c as unknown as { type: string }).type;\n                                const f = formatConstraint(c, leverPayloads[tag], decision.levers);\n                                return (\n                                    <Text key={i} as=\"span\" fontFamily=\"mono\" fontSize=\"11px\">\n                                        <Text as=\"span\" color=\"accent.brand\" fontWeight=\"semibold\">{f.lever}</Text>{' '}\n                                        <Text as=\"span\" color=\"fg.subtle\">{f.op}</Text>{' '}\n                                        <Text as=\"span\" fontWeight=\"semibold\">{f.value}</Text>\n                                    </Text>\n                                );\n                            })}\n                        </Box>\n                    )}\n                    {activeLever !== undefined && (\n                        <Box display=\"flex\" alignItems=\"center\" gap=\"8px\" flexWrap=\"wrap\">\n                            {levers.length > 1 ? (\n                                <Box flexShrink={0} css={{ '& [data-scope=select][data-part=root]': { width: 'auto', minWidth: '160px' } }}>\n                                    <EastChakraSelect\n                                        ariaLabel=\"Lever\"\n                                        value={{\n                                            value: some(activeLever.case),\n                                            items: levers.map(l => ({ value: l.case, label: l.label, disabled: none })),\n                                            placeholder: none, multiple: none, disabled: none,\n                                            onChange: some((v: string) => setLeverCase(v)), onChangeMultiple: none, onOpenChange: none,\n                                            style: some({ size: some(variant('sm', null)) }),\n                                        } as never}\n                                    />\n                                </Box>\n                            ) : (\n                                <Text {...caption} color=\"fg\" flexShrink={0}>{activeLever.label}</Text>\n                            )}\n                            <Box flex=\"1\" minW=\"260px\">\n                                <LeverEditor\n                                    key={activeLever.case}\n                                    leverCase={activeLever.case}\n                                    payload={leverPayloads[activeLever.case]!}\n                                    onInject={onInject}\n                                />\n                            </Box>\n                        </Box>\n                    )}\n                </Box>\n            )}\n\n            {gateHint !== null && (\n                <Box display=\"flex\" alignItems=\"center\" gap=\"8px\" pt=\"4px\">\n                    <Box width=\"7px\" height=\"7px\" borderRadius=\"full\" bg=\"fg.warning\" flexShrink={0} />\n                    <Text {...caption}>{gateHint}</Text>\n                    <chakra.button\n                        type=\"button\"\n                        css={button({ variant: 'outline', size: 'xs' })}\n                        marginLeft=\"auto\"\n                        onClick={() => handle.resolve(decision.id, variant('deferred', none))}\n                    >\n                        Defer\n                    </chakra.button>\n                </Box>\n            )}\n        </Box>\n    );\n});\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * Renderer-side aliases derived from the East `DecisionType` so the renderer\n * tracks any structural change to the source-of-truth type as a compile error\n * — adding a field to `DecisionType` / `DecisionOptionType` or a tag to\n * `UrgencyType` surfaces here, not as silent runtime drift.\n *\n * @packageDocumentation\n */\n\nimport type { ValueTypeOf } from '@elaraai/east';\nimport { DecisionType as EastDecisionType, UrgencyType as EastUrgencyType } from '@elaraai/e3-ui/internal';\n\n/** JS-side shape of a `DecisionType` value. */\nexport type Decision = ValueTypeOf<typeof EastDecisionType>;\n\n/** JS-side shape of one `DecisionOptionType` (a decision's alternative). */\nexport type DecisionOption = Decision['alternatives'][number];\n\n/** JS string-union of every `UrgencyType` variant tag. */\nexport type UrgencyKind = ValueTypeOf<typeof EastUrgencyType>['type'];\n\n/** Queue sort weight — overdue first, routine last. */\nexport const URGENCY_RANK: Record<UrgencyKind, number> = {\n    overdue: 0,\n    due: 1,\n    routine: 2,\n};\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `EastChakraDecisionQueue` — Chakra v3 renderer for the `DecisionQueue`\n * extension component declared in `@elaraai/e3-ui`: *the* Decide surface.\n * Urgency-sorted rows over the handle's unioned cases, the routine tail\n * collapsed under a bulk-accept band. Selecting a row opens one compact\n * facet beneath it (Evidence · Options · Judgement · Modify), swapped by\n * the row's segmented toggles; Apply / Reject stay on the row, Apply gated\n * by the judgement. Narrow hosts wrap rows to two lines: collapsed rows\n * are display-only, the toggles become a full-width segment, and the\n * Options facet stacks.\n *\n * Composes the shared chrome recipes (`frame` / `eyebrowRow` / `status` /\n * `button` / `facetTabs`) plus the `decisionQueue` row recipe; holds no\n * design values of its own. Registers against\n * {@link DecisionQueue.Component} at module load via\n * {@link implementUIComponent}.\n *\n * @packageDocumentation\n */\n\nimport { memo, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Box, Text, useRecipe, useSlotRecipe } from '@chakra-ui/react';\nimport { variant, type ValueTypeOf } from '@elaraai/east';\nimport type { TreePath } from '@elaraai/e3-types';\nimport { DecisionQueue } from '@elaraai/e3-ui/internal';\nimport { sliceMatches } from '@elaraai/east-ui/internal';\nimport {\n    EastChakraComponent,\n    implementUIComponent,\n    getSomeorUndefined,\n    formatTick,\n    SliceRailCluster,\n    useSliceReactivity,\n    type TickFormatOpt,\n} from '@elaraai/east-ui-components';\n\nimport { getBindingTypes, getReactiveDatasetCache } from '../platform/index.js';\nimport { useDecisionHandle, DECISION_SLICE_CONFIG, type UseDecisionHandleResult, type DecisionHandleRefValue } from './handle-runtime.js';\nimport { EvidenceFacet, OptionsFacet, JudgementFacet } from './facets.js';\nimport { normalizeTypeValue, type TypeNode } from './lever-editor.js';\nimport { URGENCY_RANK, type Decision, type UrgencyKind } from './types.js';\n\ntype DecisionQueueValue = ValueTypeOf<typeof DecisionQueue.Component.schema>;\ntype FacetKey = 'evidence' | 'options' | 'judgement' | 'modify';\n\nconst FACETS: ReadonlyArray<{ key: FacetKey; label: string }> = [\n    { key: 'evidence', label: 'Evidence' },\n    { key: 'options', label: 'Options' },\n    { key: 'judgement', label: 'Judgement' },\n    { key: 'modify', label: 'Modify' },\n];\n\n/** Urgency tag → `status` recipe tone + display label. */\nconst URGENCY_TONE: Record<UrgencyKind, 'danger' | 'warning' | 'neutral'> = {\n    overdue: 'danger',\n    due: 'warning',\n    routine: 'neutral',\n};\n\n/** How a row left the queue — selects the exit treatment in the `rowShell`\n *  recipe (apply sweeps right in the success tone, reject sweeps left in the\n *  danger tone, an external removal fades quietly). */\ntype ExitReason = 'apply' | 'reject' | 'removed';\n\n/** Slightly past the `rowShell` transition chain so the height collapse\n *  completes before an exited row unmounts. */\nconst EXIT_MS = 560;\n\n/** Hosts narrower than this wrap rows to the two-line rail layout. */\nconst NARROW_PX = 560;\n\nfunction decisionValue(d: Decision, n: number, showSign = false): string {\n    return formatTick(n, getSomeorUndefined(d.format) as TickFormatOpt, showSign);\n}\n\n/** Deadline qualifier for the urgency flag — \"overdue 2h\" / \"due 4pm\". */\nfunction deadlineSuffix(d: Decision): string {\n    const deadline = getSomeorUndefined(d.deadline);\n    if (deadline === undefined) return '';\n    if (d.urgency.type === 'overdue') {\n        const hours = Math.round((Date.now() - deadline.getTime()) / 3_600_000);\n        if (hours < 1) return ' <1h';\n        if (hours < 48) return ` ${hours}h`;\n        return ` ${Math.round(hours / 24)}d`;\n    }\n    if (d.urgency.type === 'due') {\n        const h = deadline.getHours();\n        const m = deadline.getMinutes();\n        const meridiem = h >= 12 ? 'pm' : 'am';\n        const clock = h % 12 === 0 ? 12 : h % 12;\n        return m === 0 ? ` ${clock}${meridiem}` : ` ${clock}:${String(m).padStart(2, '0')}${meridiem}`;\n    }\n    return '';\n}\n\n/** Walk the judgements binding's registered type to the contract's case\n *  payload types — what the lever editor and constraint chips dispatch on. */\nfunction useLeverPayloads(ref: DecisionHandleRefValue | null): Record<string, TypeNode> {\n    const cache = getReactiveDatasetCache();\n    const workspace = cache.getConfig().workspace ?? '';\n    return useMemo(() => {\n        if (!ref) return {};\n        const judgements = getBindingTypes(workspace, ref.judgements.source as TreePath);\n        if (!judgements?.sourceType) return {};\n        const root = normalizeTypeValue(judgements.sourceType);\n        const constraint = root.value?.fields?.['constraints']?.value;\n        return constraint?.type === 'Variant' ? (constraint.cases ?? {}) : {};\n    }, [ref, workspace]);\n}\n\n// =============================================================================\n// Row — one line; selected row opens one facet beneath, toggled by the\n// segmented group. Apply / Reject are commands on the row.\n// =============================================================================\n\ninterface RowProps {\n    decision: Decision;\n    handle: UseDecisionHandleResult;\n    selected: boolean;\n    narrow: boolean;\n    leverPayloads: Record<string, TypeNode>;\n    modify: ((d: Decision, update: (next: Decision) => void) => unknown) | undefined;\n    detail: ((d: Decision) => unknown) | undefined;\n    defaultFacet: FacetKey;\n    apply: (d: Decision) => void;\n    reject: (d: Decision) => void;\n    leaving: ExitReason | undefined;\n    storageKey: string;\n}\n\nconst Row = memo(function Row({ decision, handle, selected, narrow, leverPayloads, modify, detail, defaultFacet, apply, reject, leaving, storageKey }: RowProps) {\n    const dq = useSlotRecipe({ key: 'decisionQueue' });\n    const status = useSlotRecipe({ key: 'status' });\n    const tabs = useSlotRecipe({ key: 'facetTabs' });\n    const button = useRecipe({ key: 'button' });\n    const rs = dq({});\n    const ts = tabs({});\n    const st = status({ status: URGENCY_TONE[decision.urgency.type], size: 'md' });\n\n    const [facet, setFacet] = useState<FacetKey>(defaultFacet);\n    useEffect(() => { if (!selected) setFacet(defaultFacet); }, [selected, defaultFacet]);\n\n    const gate = handle.commitStateFor(decision.id);\n    const applyEnabled = gate === null || gate.type === 'ready';\n    const gatePulse = !applyEnabled && decision.prompts.length > 0;\n\n    const summary = getSomeorUndefined(decision.summary);\n\n    const handleSelect = useCallback(() => {\n        if (!selected) handle.select(decision.id);\n    }, [selected, handle, decision.id]);\n\n    const handleApply = useCallback(() => { if (applyEnabled) apply(decision); }, [applyEnabled, apply, decision]);\n    const handleReject = useCallback(() => { reject(decision); }, [reject, decision]);\n\n    // Host slots — `UIComponentType` values rendered by the nested dispatcher.\n    const probe = useMemo<unknown>(() => {\n        if (!selected || facet !== 'modify' || !modify) return null;\n        return modify(decision, handle.update);\n    }, [selected, facet, modify, decision, handle.update]);\n    const canvas = useMemo<unknown>(() => {\n        if (!selected || facet !== 'evidence' || !detail) return null;\n        return detail(decision);\n    }, [selected, facet, detail, decision]);\n\n    const facetTabs = (\n        <Box css={ts.root} {...(narrow ? { display: 'flex', width: '100%' } : {})}>\n            {FACETS.filter(f => f.key !== 'modify' || modify !== undefined).map(f => (\n                <Box\n                    key={f.key}\n                    as=\"button\"\n                    css={ts.tab}\n                    {...(narrow ? { flex: 1 } : {})}\n                    {...(facet === f.key ? { 'data-on': '' } : {})}\n                    {...(f.key === 'judgement' && gatePulse ? { 'data-pulse': '' } : {})}\n                    aria-pressed={facet === f.key}\n                    onClick={() => setFacet(f.key)}\n                >\n                    {f.label}\n                </Box>\n            ))}\n        </Box>\n    );\n\n    const commands = (\n        <Box display=\"flex\" gap=\"6px\" {...(narrow ? { justifyContent: 'flex-end' } : {})}>\n            <Box\n                as=\"button\"\n                css={button({ variant: 'solid', size: 'xs' })}\n                aria-disabled={!applyEnabled}\n                opacity={applyEnabled ? undefined : 0.5}\n                cursor={applyEnabled ? undefined : 'not-allowed'}\n                title={applyEnabled ? undefined : 'Answer the judgement to enable apply'}\n                onClick={handleApply}\n            >\n                Apply\n            </Box>\n            <Box as=\"button\" css={button({ variant: 'ghost', size: 'xs' })} onClick={handleReject}>\n                Reject\n            </Box>\n        </Box>\n    );\n\n    const title = (\n        <Box minW={0} cursor={selected ? undefined : 'pointer'} onClick={handleSelect}>\n            <Text as=\"span\" fontWeight=\"semibold\">{decision.kind}</Text>\n            <Text as=\"span\" color=\"fg.subtle\"> · </Text>\n            <Text as=\"span\">{decision.title}</Text>\n            {summary !== undefined && !narrow && (\n                <>\n                    <Text as=\"span\" color=\"fg.subtle\"> · </Text>\n                    <Text as=\"span\" color=\"fg.muted\">{summary}</Text>\n                </>\n            )}\n        </Box>\n    );\n\n    const urgency = (\n        <Box as=\"span\" css={st.root} flexShrink={0}>\n            <Box as=\"span\" css={st.indicator} />\n            <Box as=\"span\" css={st.label}>{decision.urgency.type}{deadlineSuffix(decision)}</Box>\n        </Box>\n    );\n    const valueText = (\n        <Text fontFamily=\"mono\" fontWeight=\"semibold\" textAlign=\"right\" {...(decision.value >= 0 && selected ? { color: 'fg.success' } : {})}>\n            {decisionValue(decision, decision.value, selected)}\n        </Text>\n    );\n\n    return (\n        <Box css={rs.rowShell} {...(leaving ? { 'data-leaving': leaving } : {})}>\n            {narrow ? (\n                <Box px=\"14px\" py=\"10px\">\n                    <Box display=\"flex\" justifyContent=\"space-between\" alignItems=\"baseline\">\n                        {urgency}\n                        {valueText}\n                    </Box>\n                    <Box mt=\"2px\" fontSize=\"13px\">{title}</Box>\n                    {selected && (\n                        <>\n                            <Box mt=\"8px\">{facetTabs}</Box>\n                            <Box mt=\"8px\">{commands}</Box>\n                        </>\n                    )}\n                </Box>\n            ) : (\n                <Box css={rs.row}>\n                    {urgency}\n                    <Box css={rs.title} p={0}>{title}</Box>\n                    {valueText}\n                    <Box display=\"flex\" alignItems=\"center\" gap=\"12px\">\n                        {selected && facetTabs}\n                        {commands}\n                    </Box>\n                </Box>\n            )}\n\n            {selected && (\n                <Box px={narrow ? '14px' : '18px'} py=\"12px\" borderTopWidth=\"1px\" borderColor=\"border.subtle\" bg=\"bg.canvas\">\n                    {facet === 'evidence' && (\n                        <EvidenceFacet decision={decision}>\n                            {canvas != null && (\n                                <EastChakraComponent value={canvas as never} storageKey={`${storageKey}-detail-${decision.id}`} />\n                            )}\n                        </EvidenceFacet>\n                    )}\n                    {facet === 'options' && <OptionsFacet decision={decision} narrow={narrow} />}\n                    {facet === 'judgement' && (\n                        <JudgementFacet decision={decision} handle={handle} leverPayloads={leverPayloads} />\n                    )}\n                    {facet === 'modify' && probe != null && (\n                        <EastChakraComponent value={probe as never} storageKey={`${storageKey}-modify-${decision.id}`} />\n                    )}\n                </Box>\n            )}\n        </Box>\n    );\n});\n\n// =============================================================================\n// Routine collapse — compact rows + a single bulk-accept summary.\n// =============================================================================\n\ninterface RoutineGroupProps {\n    routine: Decision[];\n    acceptAll: ((ds: Decision[]) => void) | undefined;\n    leaving: ReadonlyMap<string, ExitReason>;\n    narrow: boolean;\n}\n\nconst RoutineGroup = memo(function RoutineGroup({ routine, acceptAll, leaving, narrow }: RoutineGroupProps) {\n    const dq = useSlotRecipe({ key: 'decisionQueue' });\n    const status = useSlotRecipe({ key: 'status' });\n    const button = useRecipe({ key: 'button' });\n    const rs = dq({});\n    const st = status({ status: 'neutral', size: 'md' });\n\n    const total = useMemo(() => routine.reduce((acc, d) => acc + d.value, 0), [routine]);\n    const format = routine[0] ? (getSomeorUndefined(routine[0].format) as TickFormatOpt) : undefined;\n\n    const handleAcceptAll = useCallback(() => {\n        if (acceptAll) acceptAll(routine);\n    }, [acceptAll, routine]);\n\n    if (routine.length === 0) return null;\n\n    return (\n        <Box css={rs.routineGroup}>\n            {routine.map(d => (\n                <Box key={d.id} css={rs.rowShell} {...(leaving.has(d.id) ? { 'data-leaving': leaving.get(d.id) } : {})}>\n                    <Box css={rs.routineRow}>\n                        <Box as=\"span\" css={st.root}>\n                            <Box as=\"span\" css={st.indicator} />\n                            <Box as=\"span\" css={st.label}>routine</Box>\n                        </Box>\n                        <Box minW={0} overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\">\n                            <Text as=\"span\" fontFamily=\"mono\">{d.id}</Text>\n                            <Text as=\"span\" color=\"fg.muted\"> · {d.kind}</Text>\n                        </Box>\n                        <Box css={rs.routineValue}>{decisionValue(d, d.value)}</Box>\n                    </Box>\n                </Box>\n            ))}\n            <Box css={rs.summary} {...(narrow ? { marginLeft: '0', flexWrap: 'wrap' } : {})}>\n                <Box as=\"span\" css={rs.summaryCap}>{routine.length} routine</Box>\n                <Text as=\"span\" color=\"fg.subtle\">·</Text>\n                <Text as=\"span\" fontFamily=\"mono\" fontWeight=\"semibold\">{formatTick(total, format)}</Text>\n                <Text as=\"span\" color=\"fg.muted\">total</Text>\n                {acceptAll && (\n                    <Box as=\"button\" css={button({ variant: 'solid', size: 'xs' })} ml=\"auto\" onClick={handleAcceptAll}>\n                        Accept all\n                    </Box>\n                )}\n            </Box>\n        </Box>\n    );\n});\n\n// =============================================================================\n// Main component.\n// =============================================================================\n\nexport interface EastChakraDecisionQueueProps {\n    value: DecisionQueueValue;\n    storageKey: string;\n}\n\nconst EastChakraDecisionQueue = memo(function EastChakraDecisionQueue({ value, storageKey }: EastChakraDecisionQueueProps) {\n    const eyebrow = useSlotRecipe({ key: 'eyebrowRow' });\n    const es = eyebrow({});\n\n    const handleRef = value.handle;\n    const handle = useDecisionHandle(handleRef);\n    const decisions = handle.decisions;\n    const leverPayloads = useLeverPayloads(handleRef);\n\n    // The slice is handle-owned (bound by Decision.bind, seeded there); the\n    // payload's `slice` field only lists which affordances mount in the rail.\n    // Its narrowing applies whether or not a rail shows — initial state with\n    // no rail is an invisible author scope.\n    const railAffordances = getSomeorUndefined(value.slice);\n    const sliceHandle = handle.slice;\n    useSliceReactivity(sliceHandle?.key as string | undefined);\n    // Read at render level: the handle's identity is stable across slice\n    // writes, so the narrowing memo must depend on the state value itself\n    // (a fresh decode per write — the subscription above drives the render).\n    const sliceState = sliceHandle !== null ? sliceHandle.read() : null;\n\n    // Narrow hosts (a rail) wrap rows to two lines.\n    const rootRef = useRef<HTMLDivElement | null>(null);\n    const [narrow, setNarrow] = useState(false);\n    useLayoutEffect(() => {\n        const el = rootRef.current;\n        if (!el || typeof ResizeObserver === 'undefined') return;\n        const ro = new ResizeObserver(entries => {\n            const width = entries[0]?.contentRect.width ?? 0;\n            setNarrow(width > 0 && width < NARROW_PX);\n        });\n        ro.observe(el);\n        return () => ro.disconnect();\n    }, []);\n\n    // Exit animation is data-driven: a row leaves because the bound array no\n    // longer contains its id — whoever wrote the change (Apply here, another\n    // operator's commit, a dataflow re-run). Just-removed rows keep rendering\n    // from their last-seen value with `data-leaving` until the `rowShell`\n    // transition completes, then unmount.\n    const [exiting, setExiting] = useState<ReadonlyMap<string, { decision: Decision; reason: ExitReason }>>(new Map());\n    const prevRef = useRef<Decision[] | null>(null);\n    const reasonsRef = useRef(new Map<string, ExitReason>());\n    const timersRef = useRef<ReturnType<typeof setTimeout>[]>([]);\n    useLayoutEffect(() => {\n        const prev = prevRef.current;\n        prevRef.current = decisions;\n        if (!prev || !decisions) return;\n        const ids = new Set(decisions.map(d => d.id));\n        const removed = prev.filter(d => !ids.has(d.id));\n        if (removed.length === 0) return;\n        setExiting(old => {\n            const next = new Map(old);\n            for (const d of removed) {\n                next.set(d.id, { decision: d, reason: reasonsRef.current.get(d.id) ?? 'removed' });\n                reasonsRef.current.delete(d.id);\n            }\n            return next;\n        });\n        timersRef.current.push(setTimeout(() => {\n            setExiting(old => {\n                const next = new Map(old);\n                for (const d of removed) next.delete(d.id);\n                return next;\n            });\n        }, EXIT_MS));\n    }, [decisions]);\n    useEffect(() => () => { for (const t of timersRef.current) clearTimeout(t); }, []);\n\n    const heading = getSomeorUndefined(value.heading) ?? 'Decisions waiting';\n    const onApply = useMemo(() => getSomeorUndefined(value.onApply) as ((d: Decision) => unknown) | undefined, [value.onApply]);\n    const onReject = useMemo(() => getSomeorUndefined(value.onReject) as ((d: Decision) => unknown) | undefined, [value.onReject]);\n    const modify = useMemo(\n        () => getSomeorUndefined(value.modify) as\n            ((d: Decision, update: (next: Decision) => void) => unknown) | undefined,\n        [value.modify],\n    );\n    const detail = useMemo(\n        () => getSomeorUndefined(value.detail) as ((d: Decision) => unknown) | undefined,\n        [value.detail],\n    );\n    const defaultFacet = (getSomeorUndefined(value.defaultFacet)?.type ?? 'evidence') as FacetKey;\n    const defaultExpanded = getSomeorUndefined(value.defaultExpanded);\n\n    // Selection is the expanded row; before any selection exists the host's\n    // display-only default (derived from data) shows expanded.\n    const selectedId = handle.selected ?? defaultExpanded?.id ?? null;\n\n    // Apply / Reject resolve through the handle: verdict → judgement, removal\n    // → the owning patch overlay, selection cleared. Host callbacks are\n    // side-effect hooks; the row's exit falls out of the data diff above.\n    const resolve = useCallback((ds: Decision[], hook: ((d: Decision) => unknown) | undefined, reason: ExitReason) => {\n        if (hook) for (const d of ds) {\n            const decision = d;\n            queueMicrotask(() => hook(decision));\n        }\n        for (const d of ds) {\n            reasonsRef.current.set(d.id, reason);\n            handle.resolve(d.id, reason === 'reject' ? variant('rejected', null) : variant('accepted', ''));\n        }\n    }, [handle]);\n    const apply = useCallback((d: Decision) => resolve([d], onApply, 'apply'), [resolve, onApply]);\n    const reject = useCallback((d: Decision) => resolve([d], onReject, 'reject'), [resolve, onReject]);\n    const acceptAll = useCallback((ds: Decision[]) => resolve(ds, onApply, 'apply'), [resolve, onApply]);\n\n    // Urgency sort (overdue → due → routine; deadline within bucket), with\n    // exiting rows merged back in at their old positions.\n    const { active, routine, pastSla, visible } = useMemo(() => {\n        const scoped = decisions ?? [];\n        const now = new Date();\n        const live = sliceState !== null\n            ? scoped.filter(d => sliceMatches(sliceState as never, DECISION_SLICE_CONFIG as never, d as never, now))\n            : scoped;\n        const merged = [...live];\n        for (const { decision } of exiting.values()) {\n            if (!merged.some(d => d.id === decision.id)) merged.push(decision);\n        }\n        merged.sort((a, b) => {\n            const r = URGENCY_RANK[a.urgency.type] - URGENCY_RANK[b.urgency.type];\n            if (r !== 0) return r;\n            const da = getSomeorUndefined(a.deadline)?.getTime() ?? Infinity;\n            const db = getSomeorUndefined(b.deadline)?.getTime() ?? Infinity;\n            if (da !== db) return da - db;\n            return b.value - a.value;\n        });\n        return {\n            active: merged.filter(d => d.urgency.type !== 'routine'),\n            routine: merged.filter(d => d.urgency.type === 'routine'),\n            pastSla: merged.filter(d => d.urgency.type === 'overdue').length,\n            visible: live.length,\n        };\n    }, [decisions, exiting, sliceState]);\n\n    const exitingReasons = useMemo(() => {\n        const m = new Map<string, ExitReason>();\n        for (const [id, e] of exiting) m.set(id, e.reason);\n        return m;\n    }, [exiting]);\n\n    if (decisions === null) {\n        return (\n            <Box layerStyle=\"frame\" p=\"16px\">\n                <Text color=\"fg.muted\" fontSize=\"13px\">Loading decisions…</Text>\n            </Box>\n        );\n    }\n\n    return (\n        <Box ref={rootRef} layerStyle=\"frame\" overflow=\"hidden\">\n            <Box css={es.root}>\n                <Box css={es.lbl}>{heading}</Box>\n                {sliceHandle !== null && railAffordances !== undefined && (\n                    <Box display=\"flex\" alignItems=\"center\" minWidth=\"0\" flex=\"1\" justifyContent=\"flex-end\" marginRight=\"10px\">\n                        <SliceRailCluster\n                            slice={sliceHandle as never}\n                            affordanceKinds={railAffordances.map(a => a.type)}\n                        />\n                    </Box>\n                )}\n                <Box css={es.meta} gap=\"10px\">\n                    <Box as=\"span\"><Text as=\"span\" color=\"fg\" fontWeight=\"semibold\">{visible}</Text>{narrow ? '' : ' decisions'}</Box>\n                    {pastSla > 0 && (\n                        <>\n                            <Box as=\"span\" css={es.sep}>·</Box>\n                            <Box as=\"span\"><Text as=\"span\" color=\"fg.danger\" fontWeight=\"semibold\">{pastSla}</Text>{narrow ? ' SLA' : ' past SLA'}</Box>\n                        </>\n                    )}\n                </Box>\n            </Box>\n\n            <Box\n                maxHeight={getSomeorUndefined(value.maxHeight)}\n                overflowY={value.maxHeight.type === 'some' ? 'auto' : undefined}\n            >\n                {active.map(d => (\n                    <Row\n                        key={d.id}\n                        decision={d}\n                        handle={handle}\n                        selected={selectedId === d.id}\n                        narrow={narrow}\n                        leverPayloads={leverPayloads}\n                        modify={modify}\n                        detail={detail}\n                        defaultFacet={defaultFacet}\n                        apply={apply}\n                        reject={reject}\n                        leaving={exitingReasons.get(d.id)}\n                        storageKey={storageKey}\n                    />\n                ))}\n\n                <RoutineGroup routine={routine} acceptAll={acceptAll} leaving={exitingReasons} narrow={narrow} />\n            </Box>\n        </Box>\n    );\n});\n\nimplementUIComponent(DecisionQueue.Component, EastChakraDecisionQueue);\n\nexport { EastChakraDecisionQueue };\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `EastChakraDecisionJournal` — Chakra v3 renderer for the `DecisionJournal`\n * extension component declared in `@elaraai/e3-ui`: the resolved-cases\n * read-back. One row per judgement carrying a verdict, newest first — the\n * verdict (accepted / rejected / deferred / handoff), the case id, the\n * operator's captured knowledge as the rationale quote, injected constraints\n * as the meta line, and the resolution time on the right edge.\n *\n * @packageDocumentation\n */\n\nimport { memo, useMemo } from 'react';\nimport { Box, Text, useSlotRecipe } from '@chakra-ui/react';\nimport { type ValueTypeOf } from '@elaraai/east';\nimport { DecisionJournal } from '@elaraai/e3-ui/internal';\nimport { implementUIComponent, getSomeorUndefined, ClauseChip } from '@elaraai/east-ui-components';\n\nimport type { TreePath } from '@elaraai/e3-types';\nimport { getBindingTypes, getReactiveDatasetCache } from '../platform/index.js';\nimport { useDecisionHandle, type Judgement, type Verdict } from './handle-runtime.js';\nimport { normalizeTypeValue, type TypeNode } from './lever-editor.js';\nimport { formatConstraint } from './constraint-format.js';\n\ntype DecisionJournalValue = ValueTypeOf<typeof DecisionJournal.Component.schema>;\n\ntype StatusTone = 'success' | 'danger' | 'warning' | 'neutral';\n\nfunction verdictPresentation(verdict: Verdict): { tone: StatusTone; verb: string; detail: string | null } {\n    switch (verdict.type) {\n        case 'accepted':\n            return { tone: 'success', verb: 'accepted', detail: verdict.value !== '' ? verdict.value : null };\n        case 'rejected':\n            return { tone: 'danger', verb: 'rejected', detail: null };\n        case 'deferred':\n            return { tone: 'neutral', verb: 'deferred', detail: verdict.value.type === 'some' ? verdict.value.value : null };\n        case 'handoff':\n            return { tone: 'warning', verb: 'handed off', detail: verdict.value !== '' ? verdict.value : null };\n    }\n}\n\nfunction formatResolvedAt(j: Judgement): string | null {\n    if (j.resolvedAt.type !== 'some') return null;\n    const d = j.resolvedAt.value;\n    const month = d.toLocaleString('en', { month: 'short' });\n    const time = `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`;\n    return `${month} ${d.getDate()} · ${time}`;\n}\n\nexport interface EastChakraDecisionJournalProps {\n    value: DecisionJournalValue;\n    storageKey: string;\n}\n\nconst EastChakraDecisionJournal = memo(function EastChakraDecisionJournal({ value }: EastChakraDecisionJournalProps) {\n    const eyebrow = useSlotRecipe({ key: 'eyebrowRow' });\n    const status = useSlotRecipe({ key: 'status' });\n    const es = eyebrow({});\n\n    const handle = useDecisionHandle(value.handle);\n    const heading = getSomeorUndefined(value.heading) ?? 'Decision journal';\n    const cache = getReactiveDatasetCache();\n    const workspace = cache.getConfig().workspace ?? '';\n    const leverPayloads = useMemo<Record<string, TypeNode>>(() => {\n        const judgements = getBindingTypes(workspace, value.handle.judgements.source as TreePath);\n        if (!judgements?.sourceType) return {};\n        const root = normalizeTypeValue(judgements.sourceType);\n        const constraint = root.value?.fields?.['constraints']?.value;\n        return constraint?.type === 'Variant' ? (constraint.cases ?? {}) : {};\n    }, [workspace, value.handle]);\n\n    const entries = useMemo(() => handle.journal ?? [], [handle.journal]);\n\n    return (\n        <Box borderWidth=\"1px\" borderColor=\"border.strong\" borderRadius=\"6px\" background=\"bg.canvas\" overflow=\"hidden\">\n            <Box css={es.root}>\n                <Box css={es.lbl}>{heading}</Box>\n                <Box css={es.meta}>\n                    {entries.length === 1 ? '1 entry' : `${entries.length} entries`}\n                </Box>\n            </Box>\n\n            <Box\n                maxHeight={getSomeorUndefined(value.maxHeight)}\n                overflowY={value.maxHeight.type === 'some' ? 'auto' : undefined}\n            >\n            {entries.length === 0 ? (\n                <Text px=\"16px\" py=\"14px\" fontSize=\"13px\" color=\"fg.muted\">\n                    No resolved cases yet — verdicts land here as the queue clears.\n                </Text>\n            ) : entries.map((j, i) => {\n                const verdict = j.verdict.type === 'some' ? j.verdict.value : null;\n                if (!verdict) return null;\n                const { tone, verb, detail } = verdictPresentation(verdict);\n                const st = status({ status: tone, size: 'md' });\n                const when = formatResolvedAt(j);\n                const knowledge = j.knowledge.type === 'some' && j.knowledge.value !== '' ? j.knowledge.value : null;\n                return (\n                    <Box\n                        key={j.caseId}\n                        px=\"16px\"\n                        py=\"10px\"\n                        borderTopWidth={i === 0 ? undefined : '1px'}\n                        borderColor=\"border.subtle\"\n                        display=\"flex\"\n                        flexDirection=\"column\"\n                        gap=\"6px\"\n                    >\n                        <Box display=\"flex\" alignItems=\"baseline\" gap=\"10px\">\n                            <Box as=\"span\" css={st.root} flexShrink={0}>\n                                <Box as=\"span\" css={st.indicator} />\n                                <Box as=\"span\" css={st.label}>{verb}</Box>\n                            </Box>\n                            <Text as=\"span\" fontFamily=\"mono\" fontSize=\"12px\" color=\"fg.muted\">{j.caseId}</Text>\n                            {detail !== null && (\n                                <Text as=\"span\" fontSize=\"13px\" minW={0} flex=\"1\" truncate>{detail}</Text>\n                            )}\n                            {when !== null && (\n                                <Text as=\"span\" fontFamily=\"mono\" fontSize=\"11.5px\" color=\"fg.muted\" marginLeft=\"auto\" flexShrink={0}>\n                                    {when}\n                                </Text>\n                            )}\n                        </Box>\n                        {knowledge !== null && (\n                            <Text\n                                fontSize=\"12.5px\"\n                                fontStyle=\"italic\"\n                                color=\"fg.muted\"\n                                borderLeftWidth=\"2px\"\n                                borderColor=\"border.strong\"\n                                paddingLeft=\"10px\"\n                            >\n                                &ldquo;{knowledge}&rdquo;\n                            </Text>\n                        )}\n                        {j.constraints.length > 0 && (\n                            <Box display=\"flex\" gap=\"12px\" flexWrap=\"wrap\">\n                                {j.constraints.map((c, k) => {\n                                    const tag = (c as unknown as { type: string }).type;\n                                    const f = formatConstraint(c, leverPayloads[tag]);\n                                    return <ClauseChip key={k} field={f.lever} op={f.op} value={f.value} />;\n                                })}\n                            </Box>\n                        )}\n                    </Box>\n                );\n            })}\n            </Box>\n        </Box>\n    );\n});\n\nimplementUIComponent(DecisionJournal.Component, EastChakraDecisionJournal);\n\nexport { EastChakraDecisionJournal };\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { ApiError } from '@elaraai/e3-api-client';\nimport { EastError } from '@elaraai/east';\n\n/**\n * Extract a human-readable message and optional details from an error.\n * For ApiError, separates the error code from the actual error details.\n */\nexport function formatApiError(error: unknown): { message: string; details?: string } {\n    if (error instanceof ApiError && error.details != null) {\n        const details = error.details;\n        if (typeof details === 'string') return { message: error.message, details };\n        if (typeof details === 'object' && 'message' in details) return { message: error.message, details: String((details as Record<string, unknown>).message) };\n        return { message: error.message, details: JSON.stringify(details) };\n    }\n    return { message: error instanceof Error ? error.message : String(error) };\n}\n\n/**\n * Format an error for display. For EastError, includes location stack trace.\n */\nexport function formatError(error: Error): string {\n    if (error instanceof EastError) return error.formattedMessage;\n    return error.message;\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useQuery, useMutation, type UseMutationResult, type UseQueryResult } from '@tanstack/react-query';\nimport { repoList, repoStatus, repoGc, repoGcStart, repoGcStatus, repoCreate, repoRemove } from '@elaraai/e3-api-client';\nimport type { RequestOptions, GcRequest, GcResult, GcStartResult, GcStatusResult } from '@elaraai/e3-api-client';\nimport type { QueryOverrides } from './types.js';\n\nexport function useRepoList(url: string, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['repoList', url],\n        queryFn: () => repoList(url, requestOptions ?? { token: null }),\n        enabled: true,\n        ...queryOptions,\n    });\n}\n\nexport function useRepoStatus(url: string, repo: string, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['repoStatus', url, repo],\n        queryFn: () => repoStatus(url, repo, requestOptions ?? { token: null }),\n        enabled: !!repo,\n        ...queryOptions,\n    });\n}\n\nexport function useRepoGc(url: string, repo: string, requestOptions?: RequestOptions): UseMutationResult<GcResult, Error, GcRequest> {\n    return useMutation<GcResult, Error, GcRequest>({\n        mutationFn: (gcOptions) => repoGc(url, repo, gcOptions, requestOptions ?? { token: null }),\n    });\n}\n\nexport function useRepoGcStart(url: string, repo: string, requestOptions?: RequestOptions): UseMutationResult<GcStartResult, Error, GcRequest> {\n    return useMutation<GcStartResult, Error, GcRequest>({\n        mutationFn: (gcOptions) => repoGcStart(url, repo, gcOptions, requestOptions ?? { token: null }),\n    });\n}\n\nexport function useRepoGcStatus(url: string, repo: string, executionId: string, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<GcStatusResult, Error> {\n    return useQuery({\n        queryKey: ['repoGcStatus', url, repo, executionId],\n        queryFn: () => repoGcStatus(url, repo, executionId, requestOptions ?? { token: null }),\n        enabled: !!repo && !!executionId,\n        ...queryOptions,\n    });\n}\n\nexport function useRepoCreate(url: string, requestOptions?: RequestOptions) {\n    return useMutation<string, Error, string>({\n        mutationFn: (name) => repoCreate(url, name, requestOptions ?? { token: null }),\n    });\n}\n\nexport function useRepoRemove(url: string, requestOptions?: RequestOptions) {\n    return useMutation<void, Error, string>({\n        mutationFn: (name) => repoRemove(url, name, requestOptions ?? { token: null }),\n    });\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useQuery, useMutation, type UseQueryResult } from '@tanstack/react-query';\nimport type { QueryOverrides } from './types.js';\nimport { packageList, packageGet, packageImport, packageExport, packageRemove } from '@elaraai/e3-api-client';\nimport type { RequestOptions, PackageImportResult } from '@elaraai/e3-api-client';\nimport type { PackageObject } from '@elaraai/e3-types';\n\nexport function usePackageList(url: string, repo: string, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['packageList', url, repo],\n        queryFn: () => packageList(url, repo, requestOptions ?? { token: null }),\n        enabled: !!repo,\n        ...queryOptions,\n    });\n}\n\nexport function usePackageGet(url: string, repo: string, name: string, version: string, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<PackageObject, Error> {\n    return useQuery({\n        queryKey: ['packageGet', url, repo, name, version],\n        queryFn: () => packageGet(url, repo, name, version, requestOptions ?? { token: null }),\n        enabled: !!repo && !!name && !!version,\n        ...queryOptions,\n    });\n}\n\nexport function usePackageImport(url: string, repo: string, requestOptions?: RequestOptions) {\n    return useMutation<PackageImportResult, Error, Uint8Array>({\n        mutationFn: (archive) => packageImport(url, repo, archive, requestOptions ?? { token: null }),\n    });\n}\n\nexport function usePackageExport(url: string, repo: string, name: string, version: string, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['packageExport', url, repo, name, version],\n        queryFn: () => packageExport(url, repo, name, version, requestOptions ?? { token: null }),\n        enabled: !!repo && !!name && !!version,\n        ...queryOptions,\n    });\n}\n\nexport function usePackageRemove(url: string, repo: string, requestOptions?: RequestOptions) {\n    return useMutation<void, Error, { name: string; version: string }>({\n        mutationFn: ({ name, version }) => packageRemove(url, repo, name, version, requestOptions ?? { token: null }),\n    });\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useQuery, useMutation, type UseMutationResult, type UseQueryResult } from '@tanstack/react-query';\nimport type { QueryOverrides } from './types.js';\nimport { workspaceList, workspaceCreate, workspaceGet, workspaceStatus, workspaceRemove, workspaceDeploy, workspaceExport } from '@elaraai/e3-api-client';\nimport type { RequestOptions, WorkspaceInfo, WorkspaceStatusResult } from '@elaraai/e3-api-client';\nimport type { WorkspaceState } from '@elaraai/e3-types';\n\nexport function useWorkspaceList(url: string, repo: string, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<WorkspaceInfo[], Error> {\n    return useQuery({\n        queryKey: ['workspaceList', url, repo],\n        queryFn: () => workspaceList(url, repo, requestOptions ?? { token: null }),\n        enabled: !!repo,\n        ...queryOptions,\n    });\n}\n\nexport function useWorkspaceCreate(url: string, repo: string, requestOptions?: RequestOptions): UseMutationResult<WorkspaceInfo, Error, string> {\n    return useMutation<WorkspaceInfo, Error, string>({\n        mutationFn: (name) => workspaceCreate(url, repo, name, requestOptions ?? { token: null }),\n    });\n}\n\nexport function useWorkspaceGet(url: string, repo: string, name: string | null, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<WorkspaceState, Error> {\n    return useQuery({\n        queryKey: ['workspaceGet', url, repo, name],\n        queryFn: () => workspaceGet(url, repo, name!, requestOptions ?? { token: null }),\n        enabled: !!repo && !!name,\n        ...queryOptions,\n    });\n}\n\nexport function useWorkspaceStatus(url: string, repo: string, name: string | null, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<WorkspaceStatusResult, Error> {\n    return useQuery({\n        queryKey: ['workspaceStatus', url, repo, name],\n        queryFn: () => workspaceStatus(url, repo, name!, requestOptions ?? { token: null }),\n        enabled: !!repo && !!name,\n        ...queryOptions,\n    });\n}\n\nexport function useWorkspaceRemove(url: string, repo: string, requestOptions?: RequestOptions) {\n    return useMutation<void, Error, string>({\n        mutationFn: (name) => workspaceRemove(url, repo, name, requestOptions ?? { token: null }),\n    });\n}\n\nexport function useWorkspaceDeploy(url: string, repo: string, requestOptions?: RequestOptions) {\n    return useMutation<void, Error, { name: string; packageRef: string }>({\n        mutationFn: ({ name, packageRef }) => workspaceDeploy(url, repo, name, packageRef, requestOptions ?? { token: null }),\n    });\n}\n\nexport function useWorkspaceExport(url: string, repo: string, name: string | null, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['workspaceExport', url, repo, name],\n        queryFn: () => workspaceExport(url, repo, name!, requestOptions ?? { token: null }),\n        enabled: !!repo && !!name,\n        ...queryOptions,\n    });\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useQuery, useMutation, type UseQueryResult } from '@tanstack/react-query';\nimport type { QueryOverrides } from './types.js';\nimport { datasetList, datasetListAt, datasetListRecursive, datasetListRecursivePaths, datasetListWithStatus, datasetGet, datasetGetStatus, datasetSet } from '@elaraai/e3-api-client';\nimport type { RequestOptions, ListEntry, DatasetStatusDetail } from '@elaraai/e3-api-client';\nimport type { TreePath } from '@elaraai/e3-types';\n\nexport function useDatasetList(url: string, repo: string, workspace: string | null, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['datasetList', url, repo, workspace],\n        queryFn: () => datasetList(url, repo, workspace!, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useDatasetListAt(url: string, repo: string, workspace: string | null, path: TreePath, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['datasetListAt', url, repo, workspace, path],\n        queryFn: () => datasetListAt(url, repo, workspace!, path, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useDatasetListRecursive(url: string, repo: string, workspace: string | null, path: TreePath, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<ListEntry[], Error> {\n    return useQuery({\n        queryKey: ['datasetListRecursive', url, repo, workspace, path],\n        queryFn: () => datasetListRecursive(url, repo, workspace!, path, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useDatasetListRecursivePaths(url: string, repo: string, workspace: string | null, path: TreePath, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['datasetListRecursivePaths', url, repo, workspace, path],\n        queryFn: () => datasetListRecursivePaths(url, repo, workspace!, path, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useDatasetListWithStatus(url: string, repo: string, workspace: string | null, path: TreePath, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<ListEntry[], Error> {\n    return useQuery({\n        queryKey: ['datasetListWithStatus', url, repo, workspace, path],\n        queryFn: () => datasetListWithStatus(url, repo, workspace!, path, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useDatasetGetStatus(url: string, repo: string, workspace: string | null, path: TreePath, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<DatasetStatusDetail, Error> {\n    return useQuery({\n        queryKey: ['datasetGetStatus', url, repo, workspace, path],\n        queryFn: () => datasetGetStatus(url, repo, workspace!, path, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useDatasetGet(url: string, repo: string, workspace: string | null, path: TreePath, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['datasetGet', url, repo, workspace, path],\n        queryFn: () => datasetGet(url, repo, workspace!, path, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useDatasetSet(url: string, repo: string, workspace: string | null, requestOptions?: RequestOptions) {\n    return useMutation<void, Error, { path: TreePath; data: Uint8Array }>({\n        mutationFn: ({ path, data }) => datasetSet(url, repo, workspace!, path, data, requestOptions ?? { token: null }),\n    });\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport type { QueryOverrides } from './types.js';\nimport { taskList, taskGet, taskExecutionList } from '@elaraai/e3-api-client';\nimport type { RequestOptions, TaskDetails, ExecutionListItem } from '@elaraai/e3-api-client';\n\nexport function useTaskList(url: string, repo: string, workspace: string | null, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['taskList', url, repo, workspace],\n        queryFn: () => taskList(url, repo, workspace!, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useTaskGet(url: string, repo: string, workspace: string | null, name: string | null, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<TaskDetails, Error> {\n    return useQuery({\n        queryKey: ['taskGet', url, repo, workspace, name],\n        queryFn: () => taskGet(url, repo, workspace!, name!, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace && !!name,\n        ...queryOptions,\n    });\n}\n\nexport function useTaskExecutionList(url: string, repo: string, workspace: string | null, taskName: string | null, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<ExecutionListItem[], Error> {\n    return useQuery({\n        queryKey: ['taskExecutionList', url, repo, workspace, taskName],\n        queryFn: () => taskExecutionList(url, repo, workspace!, taskName!, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace && !!taskName,\n        ...queryOptions,\n    });\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useQuery, useMutation, type UseMutationResult, type UseQueryResult } from '@tanstack/react-query';\nimport type { QueryOverrides } from './types.js';\nimport { dataflowExecute, dataflowExecuteLaunch, dataflowGraph, dataflowExecutePoll, dataflowCancel, taskLogs } from '@elaraai/e3-api-client';\nimport type { RequestOptions, DataflowOptions, DataflowPollOptions, ExecutionStateOptions, LogOptions, DataflowResult, DataflowExecutionState } from '@elaraai/e3-api-client';\n\nexport function useDataflowExecute(url: string, repo: string, workspace: string | null, requestOptions?: RequestOptions): UseMutationResult<DataflowResult, Error, { dataflowOptions?: DataflowOptions; pollOptions?: DataflowPollOptions }> {\n    return useMutation<DataflowResult, Error, { dataflowOptions?: DataflowOptions; pollOptions?: DataflowPollOptions }>({\n        mutationFn: ({ dataflowOptions, pollOptions } = {}) =>\n            dataflowExecute(url, repo, workspace!, dataflowOptions, requestOptions ?? { token: null }, pollOptions),\n    });\n}\n\nexport function useDataflowStart(url: string, repo: string, workspace: string | null, requestOptions?: RequestOptions) {\n    return useMutation<void, Error, DataflowOptions | undefined>({\n        mutationFn: (dataflowOptions) =>\n            dataflowExecuteLaunch(url, repo, workspace!, dataflowOptions, requestOptions ?? { token: null }),\n    });\n}\n\nexport function useDataflowGraph(url: string, repo: string, workspace: string | null, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['dataflowGraph', url, repo, workspace],\n        queryFn: () => dataflowGraph(url, repo, workspace!, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useDataflowExecution(url: string, repo: string, workspace: string | null, stateOptions?: ExecutionStateOptions, requestOptions?: RequestOptions, queryOptions?: QueryOverrides): UseQueryResult<DataflowExecutionState, Error> {\n    return useQuery({\n        queryKey: ['dataflowExecution', url, repo, workspace, stateOptions],\n        queryFn: () => dataflowExecutePoll(url, repo, workspace!, stateOptions, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace,\n        ...queryOptions,\n    });\n}\n\nexport function useDataflowCancel(url: string, repo: string, workspace: string | null, requestOptions?: RequestOptions) {\n    return useMutation<void, Error, void>({\n        mutationFn: () => dataflowCancel(url, repo, workspace!, requestOptions ?? { token: null }),\n    });\n}\n\nexport function useTaskLogs(url: string, repo: string, workspace: string | null, task: string | null, logOptions?: LogOptions, requestOptions?: RequestOptions, queryOptions?: QueryOverrides) {\n    return useQuery({\n        queryKey: ['taskLogs', url, repo, workspace, task, logOptions],\n        queryFn: () => taskLogs(url, repo, workspace!, task!, logOptions, requestOptions ?? { token: null }),\n        enabled: !!repo && !!workspace && !!task,\n        ...queryOptions,\n    });\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useMemo } from 'react';\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { datasetGetStatus } from '@elaraai/e3-api-client';\nimport type { RequestOptions } from '@elaraai/e3-api-client';\nimport { variant, type EastTypeValue } from '@elaraai/east';\nimport type { QueryOverrides } from './types.js';\n\nexport interface DatasetStatus {\n    path: string;\n    type: EastTypeValue;\n    /** \"unassigned\" | \"null\" | \"value\" */\n    refType: string;\n    hash: string | null;\n    sizeBytes: number | null;\n}\n\nexport interface UseDatasetStatusOptions {\n    requestOptions?: RequestOptions;\n    pollInterval?: number;\n    queryOverrides?: QueryOverrides;\n}\n\n/** Lightweight status fetch — hash, type, size. No value bytes. */\nexport function useDatasetStatus(\n    apiUrl: string,\n    repo: string,\n    workspace: string | null,\n    datasetPath: string | null,\n    options?: UseDatasetStatusOptions,\n): UseQueryResult<DatasetStatus, Error> {\n    const { requestOptions, pollInterval = 5000, queryOverrides } = options ?? {};\n    const reqOpts = requestOptions ?? { token: null };\n\n    const pathParts = useMemo(() =>\n        datasetPath?.split('.').filter(Boolean).map((v) => variant('field', v)) ?? [],\n        [datasetPath],\n    );\n\n    return useQuery({\n        queryKey: ['datasetStatus', apiUrl, repo, workspace, datasetPath],\n        queryFn: async (): Promise<DatasetStatus> => {\n            const raw = await datasetGetStatus(apiUrl, repo, workspace!, pathParts, reqOpts);\n            return {\n                path: raw.path,\n                type: raw.type as EastTypeValue,\n                refType: raw.refType,\n                hash: raw.hash?.type === 'some' ? raw.hash.value : null,\n                sizeBytes: raw.size?.type === 'some' ? Number(raw.size.value) : null,\n            };\n        },\n        enabled: !!workspace && !!datasetPath,\n        refetchInterval: pollInterval,\n        ...queryOverrides,\n    });\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useMemo, useCallback } from 'react';\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { datasetGet } from '@elaraai/e3-api-client';\nimport type { RequestOptions } from '@elaraai/e3-api-client';\nimport { variant, decodeBeast2For, type EastTypeValue } from '@elaraai/east';\nimport {\n    StateImpl,\n    NavImpl,\n    SliceImpl,\n    SliceApplyImpl,\n    OverlayImpl,\n    ClipboardImpl,\n    DownloadImpl,\n    ShareImpl,\n} from '@elaraai/east-ui-components';\nimport type { PlatformFunction } from '@elaraai/east/internal';\nimport { BindPlatform } from '../platform/bind-runtime.js';\nimport { FuncPlatform } from '../platform/func-runtime.js';\nimport { RecordPlatform } from '../platform/record-runtime.js';\nimport { DecisionBindPlatform } from '../decision/handle-runtime.js';\nimport type { QueryOverrides } from './types.js';\n\n// Fallback platform set (used when a caller doesn't pass `platforms`). It must include EVERY browser-local impl\n// from east-ui-components + e3-ui-components, plus the UNSCOPED global data/func/record binds — so a ui() value\n// decoded through this path never throws \"Platform function 'X' is not available\" (see east-contribute\n// \"Common traps\"). UITaskPreview passes a manifest-scoped set instead; this is the unscoped fallback.\nconst defaultPlatformImplementations: PlatformFunction[] =\n    [\n        ...StateImpl, ...NavImpl, ...SliceImpl, ...SliceApplyImpl, ...OverlayImpl,\n        ...ClipboardImpl, ...DownloadImpl, ...ShareImpl, ...DecisionBindPlatform,\n        ...BindPlatform, ...FuncPlatform, ...RecordPlatform,\n    ];\n\nexport interface UseDatasetValueOptions {\n    requestOptions?: RequestOptions;\n    queryOverrides?: QueryOverrides;\n    /** Set false to skip the fetch (e.g. when oversized). Defaults to true. */\n    enabled?: boolean;\n    /**\n     * Hash of the current dataset version. Used as part of the query key so\n     * the cached value invalidates when the underlying data changes. Pass\n     * `null` if not yet known — the fetch is gated on it being non-null.\n     */\n    hash?: string | null;\n    /**\n     * Platform implementations passed to `decodeBeast2For`. Closures inside\n     * the decoded value (callbacks, etc) close over these. Defaults to the\n     * global Data/State/Overlay impls. Pass a manifest-scoped variant for\n     * per-subtree read/write validation.\n     */\n    platforms?: PlatformFunction[];\n    /** East type to decode against. Required. */\n    type: EastTypeValue;\n}\n\nexport interface DatasetValueResult {\n    decoded: unknown;\n    sizeBytes: number;\n}\n\n/** Fetch + decode a dataset value. Caller is responsible for size gating. */\nexport function useDatasetValue(\n    apiUrl: string,\n    repo: string,\n    workspace: string | null,\n    datasetPath: string | null,\n    options: UseDatasetValueOptions,\n): UseQueryResult<DatasetValueResult, Error> {\n    const { requestOptions, queryOverrides, enabled = true, hash, platforms, type } = options;\n    const platformImpls = platforms ?? defaultPlatformImplementations;\n    const reqOpts = requestOptions ?? { token: null };\n\n    const pathParts = useMemo(() =>\n        datasetPath?.split('.').filter(Boolean).map((v) => variant('field', v)) ?? [],\n        [datasetPath],\n    );\n\n    return useQuery({\n        queryKey: ['datasetValue', apiUrl, repo, workspace, datasetPath, hash ?? null],\n        queryFn: async (): Promise<DatasetValueResult> => {\n            const result = await datasetGet(apiUrl, repo, workspace!, pathParts, reqOpts);\n            const t0 = performance.now();\n            const decoded = decodeBeast2For(type, { platform: platformImpls })(result.data);\n            const kind = (type as { type?: string })?.type ?? 'unknown';\n            console.log(\n                `[east-value] decode ${kind} ${(result.data.length / 1024).toFixed(1)}KB in ${(performance.now() - t0).toFixed(1)}ms (${datasetPath})`,\n            );\n            return { decoded, sizeBytes: result.data.length };\n        },\n        enabled: enabled && !!workspace && !!datasetPath && hash != null,\n        ...queryOverrides,\n    });\n}\n\n/** Trigger a binary download of a dataset value. */\nexport function useDatasetDownload(\n    apiUrl: string,\n    repo: string,\n    workspace: string | null,\n    datasetPath: string | null,\n    requestOptions?: RequestOptions,\n) {\n    const reqOpts = useMemo(\n        () => requestOptions ?? { token: null },\n        [requestOptions],\n    );\n\n    const pathParts = useMemo(() =>\n        datasetPath?.split('.').filter(Boolean).map((v) => variant('field', v)) ?? [],\n        [datasetPath],\n    );\n\n    return useCallback(async () => {\n        if (!workspace || !datasetPath) return;\n        const result = await datasetGet(apiUrl, repo, workspace, pathParts, reqOpts);\n        const blob = new Blob([new Uint8Array(result.data)], { type: 'application/octet-stream' });\n        const url = URL.createObjectURL(blob);\n        const a = document.createElement('a');\n        a.href = url;\n        a.download = `${datasetPath.replace(/\\./g, '_')}.beast2`;\n        document.body.appendChild(a);\n        a.click();\n        document.body.removeChild(a);\n        URL.revokeObjectURL(url);\n    }, [apiUrl, repo, workspace, datasetPath, pathParts, reqOpts]);\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { taskGet } from '@elaraai/e3-api-client';\nimport type { RequestOptions, TaskDetails } from '@elaraai/e3-api-client';\nimport type { QueryOverrides } from './types.js';\n\nexport interface UseTaskDetailsOptions {\n    requestOptions?: RequestOptions;\n    queryOverrides?: QueryOverrides;\n}\n\n/** Fetch a task's details (name, kind, metadata, output, ...). */\nexport function useTaskDetails(\n    apiUrl: string,\n    repo: string,\n    workspace: string | null,\n    taskName: string | null,\n    options?: UseTaskDetailsOptions,\n): UseQueryResult<TaskDetails, Error> {\n    const reqOpts = options?.requestOptions ?? { token: null };\n    return useQuery({\n        queryKey: ['taskDetails', apiUrl, repo, workspace, taskName],\n        queryFn: () => taskGet(apiUrl, repo, workspace!, taskName!, reqOpts),\n        enabled: !!repo && !!workspace && !!taskName,\n        ...options?.queryOverrides,\n    });\n}\n\n/** Read `kind` from TaskDetails as a plain string ('ui' | 'data' | etc) or null. */\nexport function getTaskKind(details: TaskDetails): string | null {\n    return details.kind?.type === 'some' ? details.kind.value : null;\n}\n\n/** Read `metadata` blob from TaskDetails or null. */\nexport function getTaskMetadata(details: TaskDetails): Uint8Array | null {\n    return details.metadata?.type === 'some' ? details.metadata.value : null;\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { Box, Text, VStack, Spinner, Code, Clipboard, IconButton } from '@chakra-ui/react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCopy, faCheck } from '@fortawesome/free-solid-svg-icons';\n\ntype StatusVariant = 'error' | 'warning' | 'info' | 'loading';\n\nexport interface StatusDisplayProps {\n    variant: StatusVariant;\n    title: string;\n    message?: string;\n    /** Optional code/details block to show below the message */\n    details?: string;\n}\n\nconst variantStyles: Record<StatusVariant, {\n    bg: string;\n    titleColor: string;\n    messageColor: string;\n    detailsBg: string;\n    detailsColor: string;\n}> = {\n    error: {\n        bg: 'red.50',\n        titleColor: 'red.600',\n        messageColor: 'red.500',\n        detailsBg: 'red.100',\n        detailsColor: 'red.800',\n    },\n    warning: {\n        bg: 'yellow.50',\n        titleColor: 'yellow.700',\n        messageColor: 'yellow.600',\n        detailsBg: 'yellow.100',\n        detailsColor: 'yellow.800',\n    },\n    info: {\n        bg: 'gray.50',\n        titleColor: 'gray.500',\n        messageColor: 'gray.400',\n        detailsBg: 'gray.100',\n        detailsColor: 'gray.700',\n    },\n    loading: {\n        bg: 'gray.50',\n        titleColor: 'gray.500',\n        messageColor: 'gray.400',\n        detailsBg: 'gray.100',\n        detailsColor: 'gray.700',\n    },\n};\n\n/**\n * Reusable component for displaying status messages (errors, warnings, info, loading).\n */\nexport function StatusDisplay({ variant, title, message, details }: StatusDisplayProps) {\n    const styles = variantStyles[variant];\n\n    // Centered layout for info and loading states\n    if (variant === 'info' || variant === 'loading') {\n        return (\n            <Box\n                data-status={variant}\n                height=\"100%\"\n                width=\"100%\"\n                display=\"flex\"\n                alignItems=\"center\"\n                justifyContent=\"center\"\n                bg={styles.bg}\n            >\n                <VStack gap={2}>\n                    {variant === 'loading' && <Spinner size=\"md\" />}\n                    <Text color={styles.titleColor} fontSize={variant === 'loading' ? 'sm' : 'lg'}>\n                        {title}\n                    </Text>\n                    {message && (\n                        <Text color={styles.messageColor} fontSize=\"sm\">\n                            {message}\n                        </Text>\n                    )}\n                    {details && (\n                        <Box position=\"relative\" mt={2} width=\"100%\">\n                            <Code\n                                display=\"block\"\n                                whiteSpace=\"pre-wrap\"\n                                p={4}\n                                pr={10}\n                                bg={styles.detailsBg}\n                                color={styles.detailsColor}\n                                borderRadius=\"md\"\n                                fontSize=\"sm\"\n                                overflow=\"auto\"\n                                maxHeight=\"300px\"\n                            >\n                                {details}\n                            </Code>\n                            <Clipboard.Root value={details} position=\"absolute\" top={1} right={1}>\n                                <Clipboard.Trigger asChild>\n                                    <IconButton size=\"xs\" variant=\"ghost\" aria-label=\"Copy error details\">\n                                        <Clipboard.Indicator copied={<FontAwesomeIcon icon={faCheck} />}>\n                                            <FontAwesomeIcon icon={faCopy} />\n                                        </Clipboard.Indicator>\n                                    </IconButton>\n                                </Clipboard.Trigger>\n                            </Clipboard.Root>\n                        </Box>\n                    )}\n                </VStack>\n            </Box>\n        );\n    }\n\n    // Block layout for error and warning states\n    return (\n        <Box data-status={variant} p={6} bg={styles.bg} height=\"100%\" width=\"100%\">\n            <Text fontSize=\"lg\" fontWeight=\"bold\" color={styles.titleColor} mb={4}>\n                {title}\n            </Text>\n            {message && (\n                <Text color={styles.messageColor} mb={details ? 4 : 0}>\n                    {message}\n                </Text>\n            )}\n            {details && (\n                <Box position=\"relative\">\n                    <Code\n                        display=\"block\"\n                        whiteSpace=\"pre-wrap\"\n                        p={4}\n                        pr={10}\n                        bg={styles.detailsBg}\n                        color={styles.detailsColor}\n                        borderRadius=\"md\"\n                        fontSize=\"sm\"\n                        overflow=\"auto\"\n                        maxHeight=\"300px\"\n                    >\n                        {details}\n                    </Code>\n                    <Clipboard.Root value={details} position=\"absolute\" top={1} right={1}>\n                        <Clipboard.Trigger asChild>\n                            <IconButton size=\"xs\" variant=\"ghost\" aria-label=\"Copy error details\">\n                                <Clipboard.Indicator copied={<FontAwesomeIcon icon={faCheck} />}>\n                                    <FontAwesomeIcon icon={faCopy} />\n                                </Clipboard.Indicator>\n                            </IconButton>\n                        </Clipboard.Trigger>\n                    </Clipboard.Root>\n                </Box>\n            )}\n        </Box>\n    );\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { Component, type ErrorInfo, type ReactNode } from 'react';\nimport { StatusDisplay } from './StatusDisplay.js';\nimport { formatError } from '../errors.js';\n\nexport interface ErrorBoundaryProps {\n    children: ReactNode;\n}\n\ninterface ErrorBoundaryState {\n    error: Error | null;\n}\n\n/**\n * React Error Boundary that catches rendering errors in East UI components.\n * Displays EastError details (including source locations) using StatusDisplay.\n *\n * @remarks\n * `componentDidUpdate` clears the error when `children` changes, so a\n * transient render exception followed by a successful re-render shows up\n * as a brief \"flash\" of the error UI. We always `console.error` the caught\n * exception so the failure is preserved even when the visual flash is too\n * fast to read.\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n    constructor(props: ErrorBoundaryProps) {\n        super(props);\n        this.state = { error: null };\n    }\n\n    static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n        return { error };\n    }\n\n    override componentDidCatch(error: Error, info: ErrorInfo): void {\n        console.error('[ErrorBoundary] render exception caught:', error, info.componentStack);\n    }\n\n    override componentDidUpdate(prevProps: ErrorBoundaryProps) {\n        // Reset error when children change (new data loaded)\n        if (this.state.error !== null && prevProps.children !== this.props.children) {\n            this.setState({ error: null });\n        }\n    }\n\n    override render() {\n        if (this.state.error !== null) {\n            return (\n                <StatusDisplay\n                    variant=\"error\"\n                    title=\"Rendering error\"\n                    details={formatError(this.state.error)}\n                />\n            );\n        }\n        return this.props.children;\n    }\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { Box, Text, Badge } from '@chakra-ui/react';\nimport type { EastTypeValue } from '@elaraai/east';\n\nexport interface EastValueViewerProps {\n    type: EastTypeValue;\n    value: unknown;\n}\n\n// Format a primitive value for display\nfunction formatPrimitive(type: EastTypeValue, value: unknown): string {\n    switch (type.type) {\n        case 'Null':\n            return 'null';\n        case 'Boolean':\n            return value ? 'true' : 'false';\n        case 'Integer':\n            return String(value);\n        case 'Float': {\n            const num = value as number;\n            if (Number.isNaN(num)) return 'NaN';\n            if (!Number.isFinite(num)) return num > 0 ? 'Infinity' : '-Infinity';\n            return String(num);\n        }\n        case 'String':\n            return `\"${value}\"`;\n        case 'DateTime':\n            return (value as Date).toISOString();\n        case 'Blob':\n            return `Blob[${(value as Uint8Array).length} bytes]`;\n        default:\n            return String(value);\n    }\n}\n\n// Check if a type is a primitive (renders inline without nesting)\nfunction isPrimitive(type: EastTypeValue): boolean {\n    return ['Null', 'Boolean', 'Integer', 'Float', 'String', 'DateTime', 'Blob', 'Never'].includes(type.type);\n}\n\n// Get a short type label for display\nfunction getTypeLabel(type: EastTypeValue, value: unknown): string {\n    switch (type.type) {\n        case 'Array':\n            return `Array[${(value as unknown[]).length}]`;\n        case 'Set':\n            return `Set[${(value as Set<unknown>).size}]`;\n        case 'Dict':\n            return `Dict[${(value as Map<unknown, unknown>).size}]`;\n        case 'Struct':\n            return 'Struct';\n        case 'Variant':\n            return `Variant.${(value as { type: string }).type}`;\n        case 'Ref':\n            return 'Ref';\n        default:\n            return type.type;\n    }\n}\n\n// Single value node - handles both primitives and complex types\nfunction ValueNode({\n    type,\n    value,\n    label,\n    depth,\n}: {\n    type: EastTypeValue;\n    value: unknown;\n    label?: string;\n    depth: number;\n}) {\n    // Prevent infinite recursion\n    if (depth > 20) {\n        return (\n            <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n                {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                <Text as=\"span\" color=\"gray.500\">[max depth reached]</Text>\n            </Box>\n        );\n    }\n\n    // Primitives render inline\n    if (isPrimitive(type)) {\n        return (\n            <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n                {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                <Text as=\"span\" color={type.type === 'String' ? 'green.400' : type.type === 'Integer' || type.type === 'Float' ? 'blue.400' : 'gray.300'}>\n                    {formatPrimitive(type, value)}\n                </Text>\n                <Badge size=\"xs\" colorPalette=\"gray\" variant=\"subtle\">{type.type}</Badge>\n            </Box>\n        );\n    }\n\n    // Complex types render as expandable nodes\n    const typeLabel = getTypeLabel(type, value);\n\n    // Array type\n    if (type.type === 'Array') {\n        const items = value as unknown[];\n        const elementType = type.value as EastTypeValue;\n        if (items.length === 0) {\n            return (\n                <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n                    {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                    <Text as=\"span\" color=\"gray.500\">[]</Text>\n                    <Badge size=\"xs\" colorPalette=\"blue\" variant=\"subtle\">Array[0]</Badge>\n                </Box>\n            );\n        }\n        return (\n            <Box>\n                <details>\n                    <summary style={{ cursor: 'pointer', padding: '2px 0', display: 'flex', alignItems: 'center', gap: '8px' }}>\n                        {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                        <Badge size=\"xs\" colorPalette=\"blue\" variant=\"subtle\">{typeLabel}</Badge>\n                    </summary>\n                    <Box pl={4}>\n                        {items.map((item, index) => (\n                            <Box\n                                key={index}\n                                py={1}\n                                borderBottom={index < items.length - 1 ? '1px solid' : undefined}\n                                borderColor=\"gray.700\"\n                            >\n                                <ValueNode\n                                    type={elementType}\n                                    value={item}\n                                    label={`[${index}]`}\n                                    depth={depth + 1}\n                                />\n                            </Box>\n                        ))}\n                    </Box>\n                </details>\n            </Box>\n        );\n    }\n\n    // Struct type\n    if (type.type === 'Struct') {\n        const fields = type.value as Array<{ name: string; type: EastTypeValue }>;\n        const obj = value as Record<string, unknown>;\n        if (fields.length === 0) {\n            return (\n                <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n                    {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                    <Text as=\"span\" color=\"gray.500\">{'{}'}</Text>\n                    <Badge size=\"xs\" colorPalette=\"orange\" variant=\"subtle\">Struct</Badge>\n                </Box>\n            );\n        }\n        return (\n            <Box>\n                <details>\n                    <summary style={{ cursor: 'pointer', padding: '2px 0', display: 'flex', alignItems: 'center', gap: '8px' }}>\n                        {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                        <Badge size=\"xs\" colorPalette=\"orange\" variant=\"subtle\">{typeLabel}</Badge>\n                    </summary>\n                    <Box pl={4}>\n                        {fields.map((field) => (\n                            <ValueNode\n                                key={field.name}\n                                type={field.type}\n                                value={obj[field.name]}\n                                label={field.name}\n                                depth={depth + 1}\n                            />\n                        ))}\n                    </Box>\n                </details>\n            </Box>\n        );\n    }\n\n    // Variant type\n    if (type.type === 'Variant') {\n        const cases = type.value as Array<{ name: string; type: EastTypeValue }>;\n        const variant = value as { type: string; value: unknown };\n        const activeCase = cases.find(c => c.name === variant.type);\n        if (!activeCase) {\n            return (\n                <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n                    {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                    <Text as=\"span\" color=\"red.400\">Unknown variant: {variant.type}</Text>\n                </Box>\n            );\n        }\n        // If the variant value is Null, render inline\n        if (activeCase.type.type === 'Null') {\n            return (\n                <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n                    {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                    <Badge size=\"xs\" colorPalette=\"purple\" variant=\"subtle\">.{variant.type}</Badge>\n                </Box>\n            );\n        }\n        return (\n            <Box>\n                <details>\n                    <summary style={{ cursor: 'pointer', padding: '2px 0', display: 'flex', alignItems: 'center', gap: '8px' }}>\n                        {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                        <Badge size=\"xs\" colorPalette=\"purple\" variant=\"subtle\">.{variant.type}</Badge>\n                    </summary>\n                    <Box pl={4}>\n                        <ValueNode\n                            type={activeCase.type}\n                            value={variant.value}\n                            depth={depth + 1}\n                        />\n                    </Box>\n                </details>\n            </Box>\n        );\n    }\n\n    // Dict type (Map)\n    if (type.type === 'Dict') {\n        const map = value as Map<unknown, unknown>;\n        const keyType = (type.value as { key: EastTypeValue; value: EastTypeValue }).key;\n        const valueType = (type.value as { key: EastTypeValue; value: EastTypeValue }).value;\n        if (map.size === 0) {\n            return (\n                <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n                    {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                    <Text as=\"span\" color=\"gray.500\">{'Map{}'}</Text>\n                    <Badge size=\"xs\" colorPalette=\"teal\" variant=\"subtle\">Dict[0]</Badge>\n                </Box>\n            );\n        }\n        const entries = Array.from(map.entries()) as [unknown, unknown][];\n        return (\n            <Box>\n                <details>\n                    <summary style={{ cursor: 'pointer', padding: '2px 0', display: 'flex', alignItems: 'center', gap: '8px' }}>\n                        {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                        <Badge size=\"xs\" colorPalette=\"teal\" variant=\"subtle\">{typeLabel}</Badge>\n                    </summary>\n                    <Box pl={4}>\n                        {entries.map(([k, v], i) => (\n                            <Box\n                                key={i}\n                                py={2}\n                                borderBottom={i < entries.length - 1 ? '1px solid' : undefined}\n                                borderColor=\"gray.700\"\n                            >\n                                <ValueNode type={keyType} value={k} depth={depth + 1} />\n                                <ValueNode type={valueType} value={v} depth={depth + 1} />\n                            </Box>\n                        ))}\n                    </Box>\n                </details>\n            </Box>\n        );\n    }\n\n    // Set type\n    if (type.type === 'Set') {\n        const set = value as Set<unknown>;\n        const elementType = type.value as EastTypeValue;\n        if (set.size === 0) {\n            return (\n                <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n                    {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                    <Text as=\"span\" color=\"gray.500\">{'Set{}'}</Text>\n                    <Badge size=\"xs\" colorPalette=\"pink\" variant=\"subtle\">Set[0]</Badge>\n                </Box>\n            );\n        }\n        const items = Array.from(set);\n        return (\n            <Box>\n                <details>\n                    <summary style={{ cursor: 'pointer', padding: '2px 0', display: 'flex', alignItems: 'center', gap: '8px' }}>\n                        {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                        <Badge size=\"xs\" colorPalette=\"pink\" variant=\"subtle\">{typeLabel}</Badge>\n                    </summary>\n                    <Box pl={4}>\n                        {items.map((item, i) => (\n                            <Box\n                                key={i}\n                                py={1}\n                                borderBottom={i < items.length - 1 ? '1px solid' : undefined}\n                                borderColor=\"gray.700\"\n                            >\n                                <ValueNode\n                                    type={elementType}\n                                    value={item}\n                                    depth={depth + 1}\n                                />\n                            </Box>\n                        ))}\n                    </Box>\n                </details>\n            </Box>\n        );\n    }\n\n    // Ref type\n    if (type.type === 'Ref') {\n        const ref = value as { value: unknown };\n        return (\n            <Box>\n                <details>\n                    <summary style={{ cursor: 'pointer', padding: '2px 0', display: 'flex', alignItems: 'center', gap: '8px' }}>\n                        {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                        <Badge size=\"xs\" colorPalette=\"red\" variant=\"subtle\">Ref</Badge>\n                    </summary>\n                    <Box pl={4}>\n                        <ValueNode\n                            type={type.value as EastTypeValue}\n                            value={ref.value}\n                            depth={depth + 1}\n                        />\n                    </Box>\n                </details>\n            </Box>\n        );\n    }\n\n    // Function types\n    if (type.type === 'Function' || type.type === 'AsyncFunction') {\n        return (\n            <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n                {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n                <Text as=\"span\" color=\"gray.500\">[function]</Text>\n                <Badge size=\"xs\" colorPalette=\"gray\" variant=\"subtle\">{type.type}</Badge>\n            </Box>\n        );\n    }\n\n    // Fallback for unknown types\n    return (\n        <Box py={0.5} display=\"flex\" alignItems=\"center\" gap={2}>\n            {label && <Text as=\"span\" color=\"purple.400\" fontWeight=\"medium\">{label}:</Text>}\n            <Text as=\"span\" color=\"gray.500\">[{type.type}]</Text>\n        </Box>\n    );\n}\n\n// Main component\nexport function EastValueViewer({ type, value }: EastValueViewerProps) {\n    return (\n        <Box\n            layerStyle=\"surface.code.dark\"\n            fontFamily=\"mono\"\n            fontSize=\"sm\"\n            p={4}\n            overflow=\"auto\"\n            maxHeight=\"100%\"\n        >\n            <ValueNode type={type} value={value} depth={0} />\n        </Box>\n    );\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `<DatasetPreview>` — size-aware preview of a raw dataset value.\n *\n * Pipeline: status → fetch + decode if size < limit → render via\n * EastValueViewer; otherwise show \"download\" button.\n *\n * Used for inputs and other \"show me this dataset's value\" cases. NOT used\n * for UI tasks (those go through `<UITaskPreview>`).\n *\n * @packageDocumentation\n */\n\nimport { memo, useState } from 'react';\nimport { Box, Button, Flex, Text } from '@chakra-ui/react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faDownload } from '@fortawesome/free-solid-svg-icons';\nimport type { RequestOptions } from '@elaraai/e3-api-client';\nimport { useDatasetStatus } from '../hooks/useDatasetStatus.js';\nimport { useDatasetValue, useDatasetDownload } from '../hooks/useDatasetValue.js';\nimport { StatusDisplay } from './StatusDisplay.js';\nimport { EastValueViewer } from './EastValueViewer.js';\nimport { formatApiError, formatError } from '../errors.js';\n\nconst DEFAULT_SIZE_LIMIT = 200 * 1024; // 200KB\n\nexport interface DatasetPreviewProps {\n    apiUrl: string;\n    repo: string;\n    workspace: string | null;\n    /** Dotted path string, e.g. \"inputs.threshold\". */\n    path: string | null;\n    requestOptions?: RequestOptions;\n    /** Max bytes to fetch + render inline. Above this → download button. */\n    sizeLimit?: number;\n    pollInterval?: number;\n}\n\nfunction formatSize(bytes: number): string {\n    if (bytes < 1024) return `${bytes} B`;\n    if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n    return `${(bytes / 1024 / 1024).toFixed(2)} MB`;\n}\n\nfunction DownloadButton({ onClick, label }: { onClick: () => void; label?: string }) {\n    const [downloading, setDownloading] = useState(false);\n    const handleClick = async () => {\n        setDownloading(true);\n        try { await onClick(); } finally { setDownloading(false); }\n    };\n    return (\n        <Button size=\"sm\" variant=\"outline\" onClick={handleClick} loading={downloading} loadingText=\"Downloading...\">\n            <FontAwesomeIcon icon={faDownload} />\n            {label ?? 'Download'}\n        </Button>\n    );\n}\n\nexport const DatasetPreview = memo(function DatasetPreview({\n    apiUrl,\n    repo,\n    workspace,\n    path,\n    requestOptions,\n    sizeLimit = DEFAULT_SIZE_LIMIT,\n    pollInterval,\n}: DatasetPreviewProps) {\n    const statusQuery = useDatasetStatus(apiUrl, repo, workspace, path, {\n        ...(requestOptions != null && { requestOptions }),\n        ...(pollInterval !== undefined && { pollInterval }),\n    });\n    const status = statusQuery.data;\n    const hasValue = status?.refType === 'value' && status.hash !== null;\n    const sizeBytes = status?.sizeBytes ?? 0;\n    const isOversized = hasValue && sizeBytes > sizeLimit;\n    const shouldFetch = hasValue && !isOversized;\n\n    const valueQuery = useDatasetValue(apiUrl, repo, workspace, path, {\n        ...(requestOptions != null && { requestOptions }),\n        type: status?.type as never,\n        hash: status?.hash ?? null,\n        enabled: shouldFetch,\n    });\n    const download = useDatasetDownload(apiUrl, repo, workspace, path, requestOptions);\n\n    if (statusQuery.isLoading) return <StatusDisplay variant=\"loading\" title=\"Loading...\" />;\n    if (statusQuery.error) {\n        const { message, details } = formatApiError(statusQuery.error);\n        return <StatusDisplay variant=\"error\" title=\"Error\" message={message} details={details ?? formatError(statusQuery.error)} />;\n    }\n    if (!status) return <StatusDisplay variant=\"info\" title=\"No status\" />;\n    if (!hasValue) return <StatusDisplay variant=\"info\" title=\"No data available\" message=\"Waiting for a value to be set\" />;\n\n    if (isOversized) {\n        return (\n            <Flex height=\"100%\" direction=\"column\" align=\"center\" justify=\"center\" layerStyle=\"banner.stale\" borderRadius=\"0\" gap={3} p={6}>\n                <Text fontSize=\"lg\" color=\"fg.warning\" fontWeight=\"bold\">Value too large to display</Text>\n                <Text color=\"fg.muted\" fontSize=\"sm\">\n                    The data is {formatSize(sizeBytes)}, which exceeds the {formatSize(sizeLimit)} display limit.\n                </Text>\n                <DownloadButton onClick={download} label=\"Download value\" />\n            </Flex>\n        );\n    }\n\n    if (valueQuery.isLoading || !valueQuery.data) return <StatusDisplay variant=\"loading\" title=\"Loading...\" />;\n    if (valueQuery.error) return <StatusDisplay variant=\"error\" title=\"Decode failed\" message={valueQuery.error.message} />;\n\n    return (\n        <Flex direction=\"column\" height=\"100%\" overflow=\"hidden\">\n            <Flex px={4} py={2} justify=\"flex-end\" flexShrink={0} borderBottom=\"1px solid\" borderColor=\"border.subtle\">\n                <Text fontSize=\"xs\" color=\"fg.muted\" mr={2} alignSelf=\"center\">{formatSize(sizeBytes)}</Text>\n                <DownloadButton onClick={download} />\n            </Flex>\n            <Box flex={1} overflow=\"auto\" p=\"4\" minHeight={0}>\n                <EastValueViewer type={status.type} value={valueQuery.data.decoded} />\n            </Box>\n        </Flex>\n    );\n});\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { memo } from 'react';\nimport { Box, Text, Flex } from '@chakra-ui/react';\nimport type { RequestOptions } from '@elaraai/e3-api-client';\nimport { DatasetPreview } from './DatasetPreview.js';\n\nexport interface InputPreviewProps {\n    apiUrl: string;\n    repo: string;\n    workspace: string;\n    path: string;\n    requestOptions?: RequestOptions;\n}\n\nexport const InputPreview = memo(function InputPreview({\n    apiUrl,\n    repo,\n    workspace,\n    path,\n    requestOptions,\n}: InputPreviewProps) {\n    const displayName = path.replace(/^\\.inputs\\./, '');\n\n    return (\n        <Box flex={1} display=\"flex\" flexDirection=\"column\" overflow=\"hidden\">\n            <Flex px={4} py={2} borderBottom=\"1px solid\" borderColor=\"border.subtle\" bg=\"bg.surface\" align=\"center\" justify=\"space-between\">\n                <Text fontSize=\"sm\" fontWeight=\"medium\" color=\"fg\">{displayName}</Text>\n            </Flex>\n            <Box flex={1} overflow=\"hidden\" minHeight={0}>\n                <DatasetPreview\n                    apiUrl={apiUrl}\n                    repo={repo}\n                    workspace={workspace}\n                    path={path}\n                    {...(requestOptions != null && { requestOptions })}\n                />\n            </Box>\n        </Box>\n    );\n}, (prev, next) => prev.path === next.path && prev.workspace === next.workspace);\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `<UITaskPreview>` — render a kind:'ui' e3 task.\n *\n * Pipeline: useTaskDetails → decode manifest → preload manifest reads →\n * register reads with workspace poller → fetch output → render decoded\n * value as a UIComponent tree, scoped to the manifest.\n *\n * Workspace/apiUrl/repo come from the surrounding `<ReactiveDatasetProvider>`\n * by default; can be overridden via the `config` prop (used by `<TaskPreview>`\n * which still takes these as explicit props).\n *\n * @packageDocumentation\n */\n\nimport { memo, useEffect, useMemo } from 'react';\nimport { Box } from '@chakra-ui/react';\nimport {\n    UIStoreProvider,\n    createUIStore,\n    EastChakraComponent,\n    StateImpl,\n    NavImpl,\n    SliceImpl,\n    SliceApplyImpl,\n    OverlayImpl,\n    ClipboardImpl,\n    DownloadImpl,\n    ShareImpl,\n} from '@elaraai/east-ui-components';\nimport type { ValueTypeOf } from '@elaraai/east';\nimport type { UIComponentType } from '@elaraai/east-ui';\nimport type { PlatformFunction } from '@elaraai/east/internal';\nimport type { TreePath } from '@elaraai/e3-types';\nimport { decodeManifest } from '@elaraai/e3-ui/internal';\nimport {\n    useReactiveDatasetCacheOptional,\n    usePreloadReactiveDatasets,\n    type ReactiveDatasetToPreload,\n} from '../platform/dataset-hooks.js';\nimport { useE3ConfigOptional, type E3Config } from '../platform/e3-config.js';\nimport { createScopedBindPlatform } from '../platform/bind-runtime.js';\nimport { createScopedFuncPlatform } from '../platform/func-runtime.js';\nimport { createScopedRecordPlatform } from '../platform/record-runtime.js';\nimport { DecisionBindPlatform } from '../decision/handle-runtime.js';\nimport { useTaskDetails, getTaskKind, getTaskMetadata } from '../hooks/useTaskDetails.js';\nimport { useDatasetStatus } from '../hooks/useDatasetStatus.js';\nimport { useDatasetValue } from '../hooks/useDatasetValue.js';\nimport { StatusDisplay } from './StatusDisplay.js';\nimport { ErrorBoundary } from './ErrorBoundary.js';\n\nexport interface UITaskPreviewProps {\n    /** Task name (must have `kind: 'ui'`). */\n    task: string;\n    /**\n     * Override the surrounding `<E3Provider>` config — useful when a\n     * single page renders previews for multiple workspaces.\n     */\n    config?: E3Config;\n    /**\n     * Poll interval (ms) for the manifest's declared reads. Default 1000ms.\n     */\n    pollInterval?: number;\n}\n\nfunction treePathToString(path: TreePath): string {\n    return path.map(p => p.value).join('.');\n}\n\nexport const UITaskPreview = memo(function UITaskPreview({\n    task,\n    config,\n    pollInterval = 1000,\n}: UITaskPreviewProps) {\n    // Read the provider non-throwingly: the `config` prop is designed to let a\n    // caller render a preview without a surrounding <E3Provider>. `config` wins;\n    // fall back to the provider when present. Either source alone is sufficient.\n    const e3 = useE3ConfigOptional();\n    const cache = useReactiveDatasetCacheOptional();\n    const apiUrl = config?.apiUrl ?? e3?.apiUrl ?? null;\n    const repo = config?.repo ?? e3?.repo ?? 'default';\n    const workspace = config?.workspace ?? e3?.workspace ?? null;\n    const token = config?.token ?? e3?.token ?? null;\n    const requestOptions = { token };\n\n    const detailsQuery = useTaskDetails(apiUrl ?? '', repo, workspace, task, { requestOptions });\n    const details = detailsQuery.data;\n\n    const kind = details ? getTaskKind(details) : null;\n    const isUI = kind === 'ui';\n\n    const manifest = useMemo(() => {\n        if (!details || !isUI) return null;\n        const meta = getTaskMetadata(details);\n        return meta ? decodeManifest(meta) : { paths: [], functions: [], records: [] };\n    }, [details, isUI]);\n\n    const outputPath = details ? treePathToString(details.output as TreePath) : null;\n\n    // Preload manifest paths so Data.bind().read() never misses on first paint.\n    const preloads = useMemo<ReactiveDatasetToPreload[]>(\n        () => (manifest && workspace ? manifest.paths.map(path => ({ workspace, path })) : []),\n        [manifest, workspace],\n    );\n    const { loading: preloading, error: preloadError } = usePreloadReactiveDatasets(preloads);\n\n    // Per-render scoped `Data.bind` impl (strict path validation against\n    // the manifest). `OverlayImpl` here is the UI overlay (modal/dialog)\n    // impl — unrelated to data bindings despite the name.\n    const scopedPlatforms = useMemo<PlatformFunction[] | undefined>(\n        () =>\n            manifest\n                ? [\n                    // EVERY browser-local platform impl (unscoped — no manifest paths) from east-ui-components +\n                    // e3-ui-components MUST be listed here, or a ui() task that uses it throws \"Platform function\n                    // '<x>_bind' is not available\" — and only inside an e3 ui() task, so component tests miss it\n                    // (see east-contribute \"Common traps\"). The manifest-SCOPED data/func/record binds follow.\n                    ...StateImpl,\n                    ...NavImpl,\n                    ...SliceImpl,\n                    ...SliceApplyImpl,\n                    ...OverlayImpl,\n                    ...ClipboardImpl,\n                    ...DownloadImpl,\n                    ...ShareImpl,\n                    ...DecisionBindPlatform,\n                    ...createScopedBindPlatform(manifest),\n                    ...createScopedFuncPlatform(manifest.functions),\n                    ...createScopedRecordPlatform(manifest.records),\n                ]\n                : undefined,\n        [manifest],\n    );\n\n    // Register manifest paths with workspace poller for live updates;\n    // unregister on unmount so the poller stops when nothing watches.\n    useEffect(() => {\n        if (!cache || !manifest || !workspace) return;\n        for (const path of manifest.paths) {\n            cache.setRefetchInterval(workspace, path, pollInterval);\n        }\n        return () => {\n            for (const path of manifest.paths) {\n                cache.clearRefetchInterval(workspace, path);\n            }\n        };\n    }, [cache, manifest, workspace, pollInterval]);\n\n    // Fetch the output value (no size gate — UI is wanted in full).\n    const statusQuery = useDatasetStatus(apiUrl ?? '', repo, workspace, outputPath, { requestOptions });\n    const valueQuery = useDatasetValue(apiUrl ?? '', repo, workspace, outputPath, {\n        requestOptions,\n        type: statusQuery.data?.type as never,\n        hash: statusQuery.data?.hash ?? null,\n        ...(scopedPlatforms && { platforms: scopedPlatforms }),\n    });\n\n    // Stable UIStore per UI tree (re-create when task changes — `task`\n    // listed as a dep so a new store is allocated whenever the task\n    // identity changes, even though the factory takes no arguments).\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    const store = useMemo(() => createUIStore(), [task]);\n\n    if (!apiUrl) return <StatusDisplay variant=\"error\" title=\"Configuration error\" message=\"No apiUrl available — render UITaskPreview inside an <E3Provider> or pass a config prop.\" />;\n    if (detailsQuery.isLoading) return <StatusDisplay variant=\"loading\" title=\"Loading task...\" />;\n    if (detailsQuery.error) return <StatusDisplay variant=\"error\" title=\"Error\" message={detailsQuery.error.message} />;\n    if (!details) return <StatusDisplay variant=\"info\" title=\"No task\" message={`Task \"${task}\" not found`} />;\n    if (!isUI) return <StatusDisplay variant=\"error\" title=\"Not a UI task\" message={`Task \"${task}\" has kind \"${kind ?? '(none)'}\"`} />;\n    if (preloadError) return <StatusDisplay variant=\"error\" title=\"Preload failed\" message={preloadError.message} />;\n    if (preloading) return <StatusDisplay variant=\"loading\" title=\"Loading datasets...\" />;\n    if (statusQuery.isLoading || !statusQuery.data) return <StatusDisplay variant=\"loading\" title=\"Loading...\" />;\n    if (statusQuery.data.refType !== 'value') return <StatusDisplay variant=\"info\" title=\"No output yet\" message=\"Task has not produced a value\" />;\n    if (valueQuery.isLoading || !valueQuery.data) return <StatusDisplay variant=\"loading\" title=\"Loading...\" />;\n    if (valueQuery.error) return <StatusDisplay variant=\"error\" title=\"Decode failed\" message={valueQuery.error.message} />;\n\n    return (\n        <UIStoreProvider store={store}>\n            <ErrorBoundary>\n                <Box height=\"100%\" overflow=\"auto\" p=\"4\">\n                    <EastChakraComponent\n                        value={valueQuery.data.decoded as ValueTypeOf<typeof UIComponentType>}\n                        storageKey={outputPath ?? task}\n                    />\n                </Box>\n            </ErrorBoundary>\n        </UIStoreProvider>\n    );\n});\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useRef, useMemo, useEffect, useState, useCallback } from 'react';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { Box, Flex, Text, IconButton, Tabs, type UseTabsReturn, Input, Badge } from '@chakra-ui/react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCopy, faCheck, faChevronUp, faChevronDown, faArrowDown } from '@fortawesome/free-solid-svg-icons';\n\ninterface Match {\n    lineIndex: number;\n    start: number;\n    end: number;\n}\n\nexport interface VirtualizedLogViewerProps {\n    content: string;\n    tabs: UseTabsReturn;\n}\n\n// Highlight search matches within a line\nfunction HighlightedLine({\n    text,\n    lineMatches,\n    currentMatchIndex,\n    globalMatches,\n}: {\n    text: string;\n    lineMatches: Match[];\n    currentMatchIndex: number;\n    globalMatches: Match[];\n}) {\n    if (lineMatches.length === 0) {\n        return <>{text || ' '}</>;\n    }\n\n    const parts: React.ReactNode[] = [];\n    let lastEnd = 0;\n\n    lineMatches.forEach((match, idx) => {\n        // Add text before this match\n        if (match.start > lastEnd) {\n            parts.push(<span key={`t${idx}`}>{text.slice(lastEnd, match.start)}</span>);\n        }\n\n        // Check if this is the current match\n        const globalIdx = globalMatches.findIndex(\n            m => m.lineIndex === match.lineIndex && m.start === match.start\n        );\n        const isCurrent = globalIdx === currentMatchIndex;\n\n        // Add highlighted match\n        parts.push(\n            <span\n                key={`m${idx}`}\n                style={{\n                    backgroundColor: isCurrent ? '#f59e0b' : '#fbbf24',\n                    color: '#000',\n                    borderRadius: '2px',\n                    outline: isCurrent ? '2px solid #f59e0b' : undefined,\n                }}\n            >\n                {text.slice(match.start, match.end)}\n            </span>\n        );\n\n        lastEnd = match.end;\n    });\n\n    // Add remaining text\n    if (lastEnd < text.length) {\n        parts.push(<span key=\"end\">{text.slice(lastEnd)}</span>);\n    }\n\n    return <>{parts}</>;\n}\n\nexport function VirtualizedLogViewer({ content, tabs }: VirtualizedLogViewerProps) {\n    const parentRef = useRef<HTMLDivElement>(null);\n    const [copied, setCopied] = useState(false);\n    const [searchQuery, setSearchQuery] = useState('');\n    const [currentMatchIndex, setCurrentMatchIndex] = useState(0);\n    const [isAtBottom, setIsAtBottom] = useState(true);\n    const [hasNewLogs, setHasNewLogs] = useState(false);\n\n    // Split content into lines\n    const lines = useMemo(() => {\n        if (!content) return [''];\n        return content.split('\\n');\n    }, [content]);\n\n    // Find all matches and build a map by line index for O(1) lookup\n    const { matches, matchesByLine } = useMemo(() => {\n        const matches: Match[] = [];\n        const matchesByLine = new Map<number, Match[]>();\n\n        if (!searchQuery) {\n            return { matches, matchesByLine };\n        }\n\n        const query = searchQuery.toLowerCase();\n\n        lines.forEach((line, lineIndex) => {\n            const lineLower = line.toLowerCase();\n            const lineMatches: Match[] = [];\n            let start = 0;\n\n            while (true) {\n                const found = lineLower.indexOf(query, start);\n                if (found === -1) break;\n\n                const match: Match = {\n                    lineIndex,\n                    start: found,\n                    end: found + searchQuery.length,\n                };\n                matches.push(match);\n                lineMatches.push(match);\n                start = found + 1;\n            }\n\n            if (lineMatches.length > 0) {\n                matchesByLine.set(lineIndex, lineMatches);\n            }\n        });\n\n        return { matches, matchesByLine };\n    }, [lines, searchQuery]);\n\n    // Reset current match when search changes\n    useEffect(() => {\n        setCurrentMatchIndex(0);\n    }, [searchQuery]);\n\n    const virtualizer = useVirtualizer({\n        count: lines.length,\n        getScrollElement: () => parentRef.current,\n        estimateSize: () => 20,\n        overscan: 20,\n    });\n\n    // Scroll to current match\n    const scrollToMatch = useCallback((index: number) => {\n        if (matches.length === 0) return;\n        const match = matches[index];\n        if (match) {\n            virtualizer.scrollToIndex(match.lineIndex, { align: 'center' });\n        }\n    }, [matches, virtualizer]);\n\n    // Scroll to first match when search changes\n    useEffect(() => {\n        if (matches.length > 0) {\n            scrollToMatch(0);\n        }\n    }, [matches, scrollToMatch]);\n\n    const handlePrevMatch = useCallback(() => {\n        if (matches.length === 0) return;\n        setCurrentMatchIndex(prev => {\n            const newIndex = prev === 0 ? matches.length - 1 : prev - 1;\n            scrollToMatch(newIndex);\n            return newIndex;\n        });\n    }, [matches.length, scrollToMatch]);\n\n    const handleNextMatch = useCallback(() => {\n        if (matches.length === 0) return;\n        setCurrentMatchIndex(prev => {\n            const newIndex = prev === matches.length - 1 ? 0 : prev + 1;\n            scrollToMatch(newIndex);\n            return newIndex;\n        });\n    }, [matches.length, scrollToMatch]);\n\n    // Handle keyboard shortcuts\n    const handleSearchKeyDown = useCallback((e: React.KeyboardEvent) => {\n        if (e.key === 'Enter') {\n            if (e.shiftKey) {\n                handlePrevMatch();\n            } else {\n                handleNextMatch();\n            }\n            e.preventDefault();\n        } else if (e.key === 'Escape') {\n            setSearchQuery('');\n        }\n    }, [handlePrevMatch, handleNextMatch]);\n\n    // Check if scrolled to bottom (within threshold)\n    const checkIsAtBottom = useCallback(() => {\n        const el = parentRef.current;\n        if (!el) return true;\n        const threshold = 50; // pixels from bottom\n        return el.scrollHeight - el.scrollTop - el.clientHeight < threshold;\n    }, []);\n\n    // Handle scroll events to track position\n    const handleScroll = useCallback(() => {\n        const atBottom = checkIsAtBottom();\n        setIsAtBottom(atBottom);\n        if (atBottom) {\n            setHasNewLogs(false);\n        }\n    }, [checkIsAtBottom]);\n\n    // Scroll to bottom and clear notification\n    const scrollToBottom = useCallback(() => {\n        virtualizer.scrollToIndex(lines.length - 1, { align: 'end' });\n        setHasNewLogs(false);\n        setIsAtBottom(true);\n    }, [virtualizer, lines.length]);\n\n    // Auto-scroll to bottom when new logs arrive (only if already at bottom and not searching)\n    const prevLinesLength = useRef(lines.length);\n    useEffect(() => {\n        if (lines.length > prevLinesLength.current) {\n            if (!searchQuery && isAtBottom) {\n                virtualizer.scrollToIndex(lines.length - 1, { align: 'end' });\n            } else if (!searchQuery) {\n                setHasNewLogs(true);\n            }\n        }\n        prevLinesLength.current = lines.length;\n    }, [lines.length, virtualizer, searchQuery, isAtBottom]);\n\n    const handleCopy = useCallback(async () => {\n        try {\n            await navigator.clipboard.writeText(content);\n            setCopied(true);\n            setTimeout(() => setCopied(false), 2000);\n        } catch {\n            // Failed to copy\n        }\n    }, [content]);\n\n    return (\n        <Box\n            height=\"100%\"\n            display=\"flex\"\n            flexDirection=\"column\"\n            p=\"4\"\n        >\n            {/* Header */}\n            <Flex\n                px={3}\n                py={2}\n                bg=\"gray.800\"\n                borderTopRadius=\"md\"\n                align=\"center\"\n                justify=\"space-between\"\n                flexShrink={0}\n                gap={2}\n            >\n                <Tabs.RootProvider value={tabs} size=\"sm\" variant=\"line\">\n                    <Tabs.List borderBottom=\"none\">\n                        <Tabs.Trigger value=\"stdout\" color=\"gray.300\" _selected={{ color: 'white' }}>\n                            stdout\n                        </Tabs.Trigger>\n                        <Tabs.Trigger value=\"stderr\" color=\"gray.300\" _selected={{ color: 'white' }}>\n                            stderr\n                        </Tabs.Trigger>\n                    </Tabs.List>\n                </Tabs.RootProvider>\n\n                {/* Search controls */}\n                <Flex align=\"center\" gap={1}>\n                    <Input\n                        size=\"xs\"\n                        placeholder=\"Search...\"\n                        value={searchQuery}\n                        onChange={(e) => setSearchQuery(e.target.value)}\n                        onKeyDown={handleSearchKeyDown}\n                        bg=\"gray.700\"\n                        border=\"none\"\n                        color=\"white\"\n                        _placeholder={{ color: 'gray.400' }}\n                        width=\"150px\"\n                    />\n                    {searchQuery && (\n                        <Text fontSize=\"xs\" color=\"gray.400\" minWidth=\"50px\" textAlign=\"center\">\n                            {matches.length > 0 ? `${currentMatchIndex + 1}/${matches.length}` : '0/0'}\n                        </Text>\n                    )}\n                    <IconButton\n                        variant=\"ghost\"\n                        size=\"xs\"\n                        onClick={handlePrevMatch}\n                        color=\"gray.400\"\n                        _hover={{ color: 'white' }}\n                        aria-label=\"Previous match\"\n                        disabled={matches.length === 0}\n                    >\n                        <FontAwesomeIcon icon={faChevronUp} />\n                    </IconButton>\n                    <IconButton\n                        variant=\"ghost\"\n                        size=\"xs\"\n                        onClick={handleNextMatch}\n                        color=\"gray.400\"\n                        _hover={{ color: 'white' }}\n                        aria-label=\"Next match\"\n                        disabled={matches.length === 0}\n                    >\n                        <FontAwesomeIcon icon={faChevronDown} />\n                    </IconButton>\n                    <IconButton\n                        variant=\"ghost\"\n                        size=\"xs\"\n                        onClick={handleCopy}\n                        color=\"gray.400\"\n                        _hover={{ color: 'white' }}\n                        aria-label=\"Copy logs\"\n                    >\n                        <FontAwesomeIcon icon={copied ? faCheck : faCopy} />\n                    </IconButton>\n                </Flex>\n            </Flex>\n\n            {/* Virtualized content */}\n            <Box position=\"relative\" flex=\"1\" minHeight={0}>\n                <Box\n                    ref={parentRef}\n                    layerStyle=\"surface.log.dark\"\n                    height=\"100%\"\n                    overflow=\"auto\"\n                    borderBottomRadius=\"md\"\n                    borderTopWidth=\"0\"\n                    fontFamily=\"mono\"\n                    fontSize=\"sm\"\n                    color=\"gray.100\"\n                    onScroll={handleScroll}\n                >\n                <div\n                    style={{\n                        height: `${virtualizer.getTotalSize()}px`,\n                        width: '100%',\n                        position: 'relative',\n                    }}\n                >\n                    {virtualizer.getVirtualItems().map((virtualItem) => {\n                        const lineIndex = virtualItem.index;\n                        const lineText = lines[lineIndex] ?? '';\n                        const lineMatches = matchesByLine.get(lineIndex) || [];\n\n                        return (\n                            <div\n                                key={virtualItem.key}\n                                style={{\n                                    position: 'absolute',\n                                    top: 0,\n                                    left: 0,\n                                    width: '100%',\n                                    height: `${virtualItem.size}px`,\n                                    transform: `translateY(${virtualItem.start}px)`,\n                                }}\n                            >\n                                <Flex px={3} py={0.5} _hover={{ bg: 'gray.800' }}>\n                                    <Text\n                                        as=\"span\"\n                                        color=\"gray.500\"\n                                        minWidth=\"50px\"\n                                        textAlign=\"right\"\n                                        mr={3}\n                                        userSelect=\"none\"\n                                        flexShrink={0}\n                                    >\n                                        {lineIndex + 1}\n                                    </Text>\n                                    <Text\n                                        as=\"span\"\n                                        whiteSpace=\"pre\"\n                                        wordBreak=\"break-all\"\n                                        flex={1}\n                                    >\n                                        <HighlightedLine\n                                            text={lineText}\n                                            lineMatches={lineMatches}\n                                            currentMatchIndex={currentMatchIndex}\n                                            globalMatches={matches}\n                                        />\n                                    </Text>\n                                </Flex>\n                            </div>\n                        );\n                    })}\n                </div>\n                </Box>\n\n                {/* New logs notification */}\n                {hasNewLogs && (\n                    <Box\n                        position=\"absolute\"\n                        bottom={3}\n                        right={3}\n                        cursor=\"pointer\"\n                        onClick={scrollToBottom}\n                    >\n                        <Badge\n                            variant=\"brand\"\n                            px={3}\n                            py={1}\n                            borderRadius=\"full\"\n                            display=\"flex\"\n                            alignItems=\"center\"\n                            gap={2}\n                            boxShadow=\"md\"\n                        >\n                            <FontAwesomeIcon icon={faArrowDown} />\n                            New logs\n                        </Badge>\n                    </Box>\n                )}\n            </Box>\n        </Box>\n    );\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport type { QueryOverrides } from './types.js';\nimport { taskLogs } from '@elaraai/e3-api-client';\nimport type { RequestOptions } from '@elaraai/e3-api-client';\n\n// Beast2 decoder has stack overflow with large strings, so fetch in chunks\nconst CHUNK_SIZE = 64 * 1024; // 64KB per chunk\nconst MAX_TOTAL_SIZE = 10 * 1024 * 1024; // 10MB max total\n\nasync function fetchAllLogs(\n    apiUrl: string,\n    repo: string,\n    workspace: string,\n    taskName: string,\n    stream: 'stdout' | 'stderr',\n    requestOptions?: RequestOptions\n): Promise<{ data: string; offset: bigint; size: bigint; totalSize: bigint; complete: boolean }> {\n    try {\n        let allData = '';\n        let offset = 0;\n        let totalSize = 0n;\n\n        while (true) {\n            const chunk = await taskLogs(apiUrl, repo, workspace, taskName, {\n                stream,\n                offset,\n                limit: CHUNK_SIZE,\n            }, requestOptions ?? { token: null });\n\n            allData += chunk.data;\n            totalSize = chunk.totalSize;\n\n            // Stop if complete or hit size limit\n            if (chunk.complete || allData.length >= MAX_TOTAL_SIZE) {\n                break;\n            }\n\n            offset += CHUNK_SIZE;\n        }\n\n        return {\n            data: allData,\n            offset: 0n,\n            size: BigInt(allData.length),\n            totalSize,\n            complete: true,\n        };\n    } catch {\n        // Return empty result on error\n        return {\n            data: '',\n            offset: 0n,\n            size: 0n,\n            totalSize: 0n,\n            complete: true,\n        };\n    }\n}\n\nexport function useTaskLogs(\n    apiUrl: string,\n    repo: string,\n    workspace: string | null,\n    taskName: string | null,\n    stream: 'stdout' | 'stderr' = 'stdout',\n    requestOptions?: RequestOptions,\n    queryOptions?: QueryOverrides\n) {\n    return useQuery({\n        queryKey: ['taskLogs', apiUrl, repo, workspace, taskName, stream],\n        queryFn: () => fetchAllLogs(apiUrl, repo, workspace!, taskName!, stream, requestOptions),\n        enabled: !!workspace && !!taskName,\n        refetchInterval: 1000,\n        ...queryOptions,\n    });\n}\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\nimport { memo, useMemo } from 'react';\nimport { useTabs } from '@chakra-ui/react';\nimport { VirtualizedLogViewer } from './VirtualizedLogViewer.js';\nimport { useTaskLogs as useTaskLogsHook } from '../hooks/useTaskLogsHook.js';\nimport type { RequestOptions } from '@elaraai/e3-api-client';\n\nexport interface TaskLogsProps {\n    apiUrl: string;\n    repo: string;\n    workspace: string;\n    task: string;\n    requestOptions?: RequestOptions;\n}\n\n/**\n * Renders a virtualized log viewer for a task's stdout/stderr.\n */\nexport const TaskLogs = memo(function TaskLogs({\n    apiUrl,\n    repo,\n    workspace,\n    task,\n    requestOptions,\n}: TaskLogsProps) {\n    const { data: stdout } = useTaskLogsHook(apiUrl, repo, workspace, task, 'stdout', requestOptions);\n    const { data: stderr } = useTaskLogsHook(apiUrl, repo, workspace, task, 'stderr', requestOptions);\n\n    const stdoutContent = useMemo(() => stdout?.data ?? '', [stdout?.data]);\n    const stderrContent = useMemo(() => stderr?.data ?? '', [stderr?.data]);\n\n    const tabs = useTabs({\n        defaultValue: 'stdout',\n    });\n\n    const activeLogContent = useMemo(\n        () => (tabs.value === 'stderr' ? stderrContent : stdoutContent),\n        [tabs.value, stderrContent, stdoutContent],\n    );\n\n    return (\n        <VirtualizedLogViewer\n            content={activeLogContent}\n            tabs={tabs}\n        />\n    );\n});\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `<DataTaskPreview>` — preview a non-UI e3 task.\n *\n * Tabs:\n *   - **Output**: size-aware preview of the task's output dataset (delegates\n *     to `<DatasetPreview>`). Inline if small, \"Download\" button if oversized.\n *   - **Logs**: streamed task execution logs.\n *\n * @packageDocumentation\n */\n\nimport { memo, useState } from 'react';\nimport { Box, Flex, SegmentGroup } from '@chakra-ui/react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCode, faTerminal } from '@fortawesome/free-solid-svg-icons';\nimport type { RequestOptions } from '@elaraai/e3-api-client';\nimport type { TreePath } from '@elaraai/e3-types';\nimport { useTaskDetails } from '../hooks/useTaskDetails.js';\nimport { DatasetPreview } from './DatasetPreview.js';\nimport { TaskLogs } from './TaskLogs.js';\nimport { StatusDisplay } from './StatusDisplay.js';\n\ntype ViewMode = 'output' | 'logs';\n\nexport interface DataTaskPreviewProps {\n    apiUrl: string;\n    repo: string;\n    workspace: string;\n    task: string;\n    requestOptions?: RequestOptions;\n    /** Initially selected tab. Default 'output'. */\n    initialView?: ViewMode;\n    /** Max output bytes to render inline (above → download button). Default 200KB. */\n    sizeLimit?: number;\n}\n\nfunction treePathToString(path: TreePath): string {\n    return path.map(p => p.value).join('.');\n}\n\nexport const DataTaskPreview = memo(function DataTaskPreview({\n    apiUrl,\n    repo,\n    workspace,\n    task,\n    requestOptions,\n    initialView = 'output',\n    sizeLimit,\n}: DataTaskPreviewProps) {\n    const [viewMode, setViewMode] = useState<ViewMode>(initialView);\n    const detailsQuery = useTaskDetails(apiUrl, repo, workspace, task, {\n        ...(requestOptions != null && { requestOptions }),\n    });\n    const outputPath = detailsQuery.data ? treePathToString(detailsQuery.data.output as TreePath) : null;\n\n    return (\n        <Box height=\"100%\" display=\"flex\" flexDirection=\"column\" overflow=\"hidden\">\n            <Flex\n                px={4} py={2}\n                borderBottom=\"1px solid\" borderColor=\"border.subtle\" bg=\"bg.surface\"\n                align=\"center\" justify=\"flex-end\" flexShrink={0}\n            >\n                <SegmentGroup.Root\n                    size=\"xs\"\n                    value={viewMode}\n                    onValueChange={(d) => setViewMode(d.value as ViewMode)}\n                >\n                    <SegmentGroup.Indicator />\n                    <SegmentGroup.Item value=\"output\" title=\"Output\">\n                        <SegmentGroup.ItemText>\n                            <FontAwesomeIcon icon={faCode} />\n                        </SegmentGroup.ItemText>\n                        <SegmentGroup.ItemHiddenInput />\n                    </SegmentGroup.Item>\n                    <SegmentGroup.Item value=\"logs\" title=\"Logs\">\n                        <SegmentGroup.ItemText>\n                            <FontAwesomeIcon icon={faTerminal} />\n                        </SegmentGroup.ItemText>\n                        <SegmentGroup.ItemHiddenInput />\n                    </SegmentGroup.Item>\n                </SegmentGroup.Root>\n            </Flex>\n            <Box flex={1} overflow=\"hidden\" minHeight={0}>\n                {viewMode === 'output' ? (\n                    detailsQuery.isLoading\n                        ? <StatusDisplay variant=\"loading\" title=\"Loading task...\" />\n                        : detailsQuery.error\n                            ? <StatusDisplay variant=\"error\" title=\"Error\" message={detailsQuery.error.message} />\n                            : <DatasetPreview\n                                apiUrl={apiUrl}\n                                repo={repo}\n                                workspace={workspace}\n                                path={outputPath}\n                                {...(requestOptions != null && { requestOptions })}\n                                {...(sizeLimit !== undefined && { sizeLimit })}\n                            />\n                ) : (\n                    <TaskLogs\n                        apiUrl={apiUrl}\n                        repo={repo}\n                        workspace={workspace}\n                        task={task}\n                        {...(requestOptions != null && { requestOptions })}\n                    />\n                )}\n            </Box>\n        </Box>\n    );\n});\n","/**\n * Copyright (c) 2025 Elara AI Pty Ltd\n * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.\n */\n\n/**\n * `<TaskPreview>` — router for previewing an e3 task.\n *\n * Branches by task `kind`:\n *   - `kind === 'ui'`   → `<UITaskPreview>`\n *   - otherwise          → `<DataTaskPreview>` (output preview tabs + logs)\n *\n * @packageDocumentation\n */\n\nimport { memo } from 'react';\nimport { Box, Flex, Text } from '@chakra-ui/react';\nimport type { RequestOptions } from '@elaraai/e3-api-client';\nimport { UITaskPreview } from './UITaskPreview.js';\nimport { DataTaskPreview } from './DataTaskPreview.js';\nimport { useTaskDetails, getTaskKind } from '../hooks/useTaskDetails.js';\nimport { StatusDisplay } from './StatusDisplay.js';\n\nexport interface TaskPreviewProps {\n    apiUrl: string;\n    repo: string;\n    workspace: string;\n    task: string;\n    requestOptions?: RequestOptions;\n}\n\nexport const TaskPreview = memo(function TaskPreview({\n    apiUrl,\n    repo,\n    workspace,\n    task,\n    requestOptions,\n}: TaskPreviewProps) {\n    const detailsQuery = useTaskDetails(apiUrl, repo, workspace, task, {\n        ...(requestOptions != null && { requestOptions }),\n    });\n    const kind = detailsQuery.data ? getTaskKind(detailsQuery.data) : null;\n\n    return (\n        <Box height=\"100%\" display=\"flex\" flexDirection=\"column\" overflow=\"hidden\">\n            <Flex px={4} py={2} borderBottom=\"1px solid\" borderColor=\"border.subtle\" bg=\"bg.surface\" align=\"center\" flexShrink={0}>\n                <Text fontSize=\"sm\" fontWeight=\"medium\" color=\"fg\">{task}</Text>\n            </Flex>\n            <Box flex={1} overflow=\"hidden\" minHeight={0}>\n                {detailsQuery.isLoading\n                    ? <StatusDisplay variant=\"loading\" title=\"Loading task...\" />\n                    : detailsQuery.error\n                        ? <StatusDisplay variant=\"error\" title=\"Error\" message={detailsQuery.error.message} />\n                        : kind === 'ui'\n                            ? <UITaskPreview\n                                task={task}\n                                config={{ apiUrl, repo, workspace, token: requestOptions?.token ?? null }}\n                            />\n                            : <DataTaskPreview\n                                apiUrl={apiUrl}\n                                repo={repo}\n                                workspace={workspace}\n                                task={task}\n                                {...(requestOptions != null && { requestOptions })}\n                            />\n                }\n            </Box>\n        </Box>\n    );\n}, (prev, next) => prev.task === next.task && prev.repo === next.repo && prev.workspace === next.workspace);\n"],"names":["listener","_a","delay","noop","options","_","a","b","hasOwn","array","copy","v","o","sleep","timeout","resolve","data","error","max","object","reject","_resolve","schedule","fn","_cleanup","_setup","config","pause","getDefaultState","promise","_b","x","_c","_d","_f","_e","_h","_g","_j","_i","_client","_retryer","dispatch_fn","e","index","m","event","_mutationCache","_defaultOptions","defaults","ms","id","path","datasetGet","datasetSet","dataflowExecuteLaunch","e3DatasetList","datasetListAt","workspaceStatus","p","api","clock","variant","ApiError","next","set","prev","equalFor","BlobType","eastTypeEqual","EastTypeType","SortedMap","compareFor","toEastTypeValue","PatchType","decodeBeast2For","encodeBeast2For","applyFor","diffFor","cache","EastError","apply","diff","ConflictError","pPath","bindPlatformFn","registerReactiveTracker","registerPlatformImplementation","reset","workspaceFunctionList","workspaceFunctionCall","f","some","d","transportError","t","funcBindPlatformFn","functions","defs","_arrayLikeToArray","r","n","_arrayWithHoles","_arrayWithoutHoles","_classCallCheck","_defineProperties","_toPropertyKey","_createClass","_createForOfIteratorHelper","_unsupportedIterableToArray","F","u","_defineProperty","_iterableToArray","_iterableToArrayLimit","l","_nonIterableRest","_nonIterableSpread","ownKeys","_slicedToArray","_toConsumableArray","_toPrimitive","_typeof","i","y","A","B","D","C","K","E","y$1","p$1","x$1","i$1","A$1","B$1","D$1","C$1","K$1","E$1","get","element","_ref","_ref2","css","style","size","classArray","node","styles","transform","width","height","s","namespace","children","prefix","length","icon","build","lookup","shim","emptyCanonicalIcon","arr","Library","add","k","mixout","hooks","hook","noAuto","parse","autoReplace","container","c","noop$1","begin","end","noop$2","i2svg","comment","frame","root","hclAdd","hclRemove","prefixes","render","classes","mask","provides","position","meta","replace","hasPseudoElement","selector","parseCSSRuleForPseudos","stylesheet","providers","watch","parseTransformString","first","parse$1","string","stop","capitalize","styleCache","start","createElement","element2","useId","classList","workspaceRecordDescribe","workspaceRecordMutate","none","limit","from","workspaceRecordHistory","recordBindPlatformFn","hash","createContext","useMemo","QueryClient","jsx","QueryClientProvider","useContext","useRef","notify","useEffect","useCallback","useSyncExternalStore","useState","Fragment","jsxs","pathDisplay","walkPatch","pathToString","parent","printFor","isVariant","last","Diff","getOpt","validatePatchFor","Box","Chip","useRecipe","useSlotRecipe","disabled","memo","DiffRow","Flex","Text","HStack","ConflictRow","selected","onChange","ChakraInput","NodeRender","GroupHeader","EastChakraDiff","prunePatchFor","detectConflictsFor","mergeWithResolutionsFor","implementUIComponent","parseTypenames","T","document","select","j","group","Selection","parents","match","filter","update","datum","constant","selection","merge","ascending","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","styleRemove","styleConstant","priority","styleFunction","textConstant","textFunction","create","clone","on","window","sourceEvent","point","nopropagation","noevent","identifier","dispatch","defaultFilter","defaultTouchable","drag","nodrag","touch","extend","define","format","rgba","hsla","g","h","min","hsl","degrees","t0","t1","lab","hcl","cubehelix","cosh","sinh","linear","color","rgb","colorRgb","value","zero","number","identity","translate","rotate","scale","zoom","S","_2","hue","colorHsl","colorLab","colorHcl","colorCubehelix","time","now","t2","self","empty","interpolate","interpolateTransform","inherit","remove","easeCubicInOut","extent","wheelDelta","collection","w","dragEnable","ConnectionMode","PanOnScrollMode","SelectionMode","ConnectionLineType","MarkerType","Position","nodes","area","edges","minZoom","maxZoom","bounds","viewport","dimensions","distance","x2","y2","center","xDir","yDir","positionAbsolute","panBy","domNode","destroy","fromInternalNode","zoomIdentity","ease","translateExtent","zoomTransform","ResizeControlVariant","startX","startY","initPrevValues","React","require$$0","is","useDebugValue","shimModule","require$$1","withSelectorModule","getInitialState","createStore","ReactExports","slice","forwardRef","shallow","useLayoutEffect","target","changes","middleware","fitViewQueued","setNodes","defaultViewport","onViewportChange","valid","onPointerDown","updateNodeInternals","isParent","Symbol","markers","shift","radius","store","zIndex","containerStyle","component","pointer","fitViewOptions","nodeOrigin","zIndexMode","nodeExtent","createPortal","BackgroundVariant","StyleSheet","assign","line","character","characters","output","memoize","identifierWithPointTracking","toRules","getRules","compat","removeLabel","prefixer","createCache","stylis","Element","reactIsModule","reactIs","registerStyles","insertStyles","isCustomProperty","isProcessableValue","processStyleValue","unitless","hashString","syncFallback","withEmotionCache","createEmotionProps","Insertion","Emotion","_excluded","_objectWithoutPropertiesLoose","_extends","VStack","useToken","Field","NativeSelect","Input","Textarea","Drawer","Portal","components","kindOf","Tooltip","chakra","ProcessRowView","OntologyTable","projection","raf","navigator","instanceStr","plainObject","number$1","integer","htmlElement","elementOrCollection","core","emptyString","domElement","boundingBox","keyFn","endsWith","descending","hex2tuple","hex","hsl2tuple","q","rgb2tuple","colorname2tuple","color2tuple","setMap","getMap","debounce","requestAnimationFrame","hashIterableInts","hashInt","num","hashIntAlt","combineHashes","combineHashesArray","hashArrays","hashIntsArray","hashStrings","hashStringsArray","movePointByBoxAspect","trueify","falsify","zeroify","warnings","warn","copyArray","uuid","staticEmptyObject","removeFromArray","clearArray","push","getPrefixedProperty","setPrefixedProperty","ObjectMap","has","ObjectSet","instanceString","toArray","forEach","pan","defineSearch","Q","_loop","_i2","module","exports","Heap","lo","heap","weight","dist","getDist","setDist","distBetween","uid","edge","findSetIndex","heuristic","addToOpenSet","popFromOpenSet","isInOpenSet","N","indexOf","atIndex","getArgEle","indexOfArgEle","getInfo","getNodeFromTo","distanceTo","pathTo","checkForEdgeReplacement","node2","collapse","contractUntil","copyNodesMap","constructComponent","copyPosition","renderedToModelPosition","array2point","mean","median","sort","deg2rad","getAngleFromDisp","signum","sqdist","inPlaceSumNormalize","qbezierAt","qbezierPtAt","lineAt","bound","makeBoundingBox","copyBoundingBox","clearBoundingBox","updateBoundingBox","expandBoundingBoxByPoint","expandBoundingBox","expandBoundingBoxSides","assignBoundingBox","boundingBoxesIntersect","inBoundingBox","pointInBoundingBox","boundingBoxInBoundingBox","polygon","sub","cross","normalize","signedArea","pts","intersectLines","p2","roundRectangleIntersectLine","inLineVicinity","inBezierVicinity","solveQuadratic","solveCubic","epsilon","sqdistToQuadraticBezier","sqdistToFiniteLine","pointInsidePolygonPoints","pointInsidePolygon","angle","cos","sin","pointInsideRoundPolygon","joinLines","intersection","expandPolygon","intersectLineEllipse","checkInEllipse","intersectLineCircle","midOfThree","finiteLinesIntersect","transformPoints","polygonIntersectLine","roundPolygonIntersectLine","shortenIntersection","generateUnitNgonPointsFitToSquare","fitPolygonToSquare","generateUnitNgonPoints","getRoundRectangleRadius","getRoundPolygonRadius","getCutRectangleCornerLength","bezierPtsToQuadCoeff","getBarrelCurveConstants","axes","axis","proj1","proj2","_j2","dijkstra","P","addLoops","M","mmult","expand","inflate","hasConverged","v1","v2","isDuplicate","removeDuplicates","markovClustering","n2","identity$1","absDiff","addAbsDiff","addSquaredDiff","sqrt","maxAbsDiff","getDistance","init","impl","setOptions","getQ","randomCentroids","classify","buildCluster","haveValuesConverged","haveMatricesConverged","seenBefore","randomMedoids","findCost","kMeans","kMedoids","updateCentroids","U","updateMembership","fuzzyCMeans","mergeClosest","hierarchicalClustering","cluster","getSimilarity","attr","getPreference","findExemplars","R","assignClusters","affinityPropagation","max2","d2","walk","subtour","hopcroftTarjanBiconnected","buildComponent","tarjanStronglyConnected","deliver","execute","execute_handlers","func","resolver","then","fulfill","val","Animation","swap","fit","clearQueue","getValue","eq","Map","map","toString","toPath","beforeGet","beforeSet","onSet","canSet","callback","cls","hasClass","newQuery","matches","stateSelectorMatches","cleanMetaChars","replaceLastQuery","populate","consumeExpr","consumeWhitespace","clean","cleanVal","space","checkToString","queryToString","query","str","valCmp","boolCmp","existCmp","selectorFunction","Selector","beforePositionSet","hasCompoundNodes","_p","noninf","updateBounds","updateBoundsFromBox","b2","prefixedProperty","updateBoundsFromArrow","updateBoundsFromLabel","isEdge","updateBoundsFromOutline","updateBoundsFromMiter","updateBoundsFromMiterBorder","boundingBoxImpl","styleEnabled","headless","isNode","isDisplayed","ele","getKey","tf","getBoundingBoxPosKey","cachedBoundingBoxImpl","storeOldPos","getOldPos","defineDimFns","ifEdge","ifEdgeRenderedPosition","ifEdgeRenderedPositions","getPoints","controlPoints","segmentPoints","sourceEndpoint","targetEndpoint","midpoint","renderedName","Event","forEachEvent","makeEventObj","forEachEventObj","qualifier","conf","_loop2","qualifierCompare","eventMatches","addEventFields","callbackContext","beforeEmit","bubble","one","xor","other","reduce","zIndexSort","defineSymbolIterator","layout","getMemoizeKey","calculateSpacing","spacingBb","bb","newPos","ani","selfFn","renderer","dirty","overrideAble","overrideField","defineDagExtremity","defineDagOneHop","defineDagAllHops","sourceImpl","visitInComponent","Collection","json","eles","checkSwitch","addToPool","removeFromElements","removeFromPool","addChildren","pllEdge","dt","cubicBezier","spring","callbacks","argSelector","createEmitter","emitter","removeListener","removeAllListeners","once","emit","emitAndNotify","Layout","$","propHash","propNames","updateGrKey1","grKey","updateGrKey2","updateGrKey","updateGrKeyWStr","cleanNum","getVal","checkTriggers","printMappingErr","getRenderedValue","getValueStringWithUnits","units","mapData","empty2","nodeSizeHashOverride","prop","name","same","checkEnums","updateStyle","zoom2","Core","defVal","loadExtData","setElesAndLayout","getFreshRef","updateEles","gr","setInfo","addToDepth","changeDepth","assignDepthsAt","adjustMaximally","shifted","enqueue","dequeue","getWeightedPercent","sortFn","assignDepths","getPositionTopBottom","getPosition","animateFilter","getPos","levelWidth","ready","refresh","mainLoop","done","createLayoutInfo","findLCA","randomizePositions","getScaleInBoundsFn","refreshPositions","step","calculateNodeForces","nodeRepulsion","randomDistance","nodesOverlap","findClippingPoint","X","W","calculateEdgeForces","calculateGravityForces","propagateForces","updatePositions","limitForce","separateComponents","c2","small","large","used","row","col","use","moveToNextCell","rcPos","throwImgErr","bbCollide","pointsToArr","standardGap","defineArrowShape","styleValue","width2","asVec","invertVec","calcCornerArc","recalcVectorNormInverse","x1","y1","w2","sign","subDWH","getIsTooClose","pairId","edgeIsUnbundled","key","src","tgt","intersect","qbezierAt$1","lineAngleFromDelta","lineAngle","bezierAngle","setRs","cp","p0","p1","calculateEndProjection","rscratch","updateEleCalcs","isCleanConnected","setGrabState","setGrabbed","setFreed","isSelected","getShadowRoot","triggerEvents","isMultSelKeyDown","allowPanningPassthrough","setInDragLayer","setOutDragLayer","setGrabTarget","removeGrabTarget","addToDragList","addDescendantsToDrag","addNodesToDrag","freeDraggedElements","updateAncestorsInDragLayer","blurActiveDomElement","forEachUp","invalidateCoords","inBoxSelection","eventInContainer","positions","makeEvent","checkForTaphold","triggerGrab","preventDefault","dist2","updateDragDelta","dragDelta","goIntoBoxMode","eleWouldBeSelected","allAreDivisibleBy","allAreSameMagnitude","wheelHandler","clamp","distanceSq","touchstartHandler","touchmoveHandler","distance2","touchcancelHandler","touchendHandler","makeTouch","makePointer","addPointer","removePointer","updatePointer","addTouchesToEvent","pointerIsMouse","approximateBarrelCurvePts","getCurveT","y0","beforeRenderCallbacks","BaseRenderer","ElementTextureCacheLookup","ElementTextureCache","addNewTxr","scalableFrom","downscale","_cache","LayeredTextureCache","qSort","checkTempLevels","canUseAsTmpLvl","checkLvls","layer","getBb","makeLayer","deq","getOpacity","getZeroRotation","getLabelRotation","getSourceLabelRotation","getTargetLabelRotation","getTextOpacity","drawLine","drawLineOutline","drawOverlay","drawUnderlay","drawArrows","drawText","drawEdgeOverlayUnderlay","setupShapeColor","setupBorderColor","setupOutlineColor","getPath","drawShape","drawImages","drawPie","drawStripe","darken","drawBorder","drawOutline","drawNodeOverlayUnderlay","colors","context","setContextTransform","clear","drawMotionBlur","cxt","modelToRenderedPosition","Atlas","createTextureCanvas","drawAt","drawNormal","drawWrapped","moveToStartOfNextRow","AtlasCollection","gc","set2","AtlasManager","AtlasBatchManager","startBatch","ElementDrawingWebGL","instance","endBatch","isLabelVisible","isLayerVisible","getTexPickingMode","getBBForSimpleShape","getStyleKeysForLabel","getBoundingBoxForLabel","draw","getB64Uri","getBoxCenter","getCenterOffset","backgroundTimestampHasChanged","getStyleKey","getLabelKey","getSourceLabelKey","getTargetLabelKey","drawElement","drawLabel","drawSourceLabel","drawTargetLabel","getElementBox","getLabelBox","getSourceLabelBox","getTargetLabelBox","isLabelVisibleAtScale","getElementRotationPoint","addTextMargin","getRsPt","getLabelRotationPoint","getSourceLabelRotationPoint","getTargetLabelRotationPoint","getElementRotationOffset","getSourceLabelRotationOffset","getTargetLabelRotationOffset","getLabelRotationOffset","refineInLayers","overrideErr","getCy","Renderer","extension","cytoscape","this","modules","cx","Point","gamma","nodeFrom","_remove","LinkedList","arr2","Transform","Emitter","DimensionD","Quicksort","NeedlemanWunsch","layoutBase","pred1","processed","p_id","coseBase","getUserOptions","getPositions","iterateAnimated","afterReposition","register","useBindingVersion","version","ReactFlow","Menu","EastChakraOntology","defaultView","SegmentGroup","Ontology","FuncBindHandleType","require$$2","require$$3","require$$4","checker","propTypesModule","reverse","ticks","bisect","interpolateValue","exponent","locale","trim","formatPrefix","interval","date","interpolateHclLong","interpolateHslLong","interpolateCubehelixLong","timeWeek","utcWeek","domain","nice","round","align","base","padding","range","unknown","scaleLinear","pointX","pointY","HoverCard","useChakraContext","fmt","signed","unit","curveMonotoneX","getSomeorUndefined","fromEastTypeValue","Experiment","EastChakraExperiment","failed","Spinner","SliceEditPopover","formatPredicate","SlicePredicateBuilder","column","OptionType","StringType","StateRuntime","buildSliceHandle","DEFAULT_SLICE_STATE","decisionBindPlatformFn","EastChakraIntegerInput","EastChakraFloatInput","EastChakraDateTimeInput","EastChakraSelect","EastChakraStringInput","formatTick","EvidenceFacet","OptionsFacet","JudgementFacet","Row","EastChakraComponent","RoutineGroup","EastChakraDecisionQueue","useSliceReactivity","sliceMatches","SliceRailCluster","DecisionQueue","EastChakraDecisionJournal","ClauseChip","DecisionJournal","useQuery","repoList","repoStatus","useMutation","repoGc","repoGcStart","repoGcStatus","repoCreate","repoRemove","packageList","packageGet","packageImport","packageExport","packageRemove","workspaceList","workspaceCreate","workspaceGet","workspaceRemove","workspaceDeploy","workspaceExport","datasetList","datasetListRecursive","datasetListRecursivePaths","datasetListWithStatus","datasetGetStatus","taskList","taskGet","taskExecutionList","dataflowExecute","dataflowGraph","dataflowExecutePoll","dataflowCancel","useTaskLogs","taskLogs","StateImpl","NavImpl","SliceImpl","SliceApplyImpl","OverlayImpl","ClipboardImpl","DownloadImpl","ShareImpl","Code","Clipboard","IconButton","Component","Badge","Button","DatasetPreview","InputPreview","treePathToString","UITaskPreview","token","decodeManifest","createUIStore","UIStoreProvider","matchesByLine","useVirtualizer","Tabs","TaskLogs","useTaskLogsHook","useTabs","DataTaskPreview","TaskPreview"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,21,22,23,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,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,186,187,188,189,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271]}